Используйте malloc
метод. Это попытается поместить все в RAM, и ядро выгрузит его в случае необходимости. Таким образом, Вы используете память и диск вместе.
В то же время file
работает намного лучше, чем malloc
когда Вы начинаете поражать диск. Для большего количества информации см.:
Естественным способом представления данных на языке программирования был бы такой хэш:
$users = {
elion => 'El Lion',
azee => 'Avery Zee',
root => 'Rooty Root,
}
Хотя сделать это в Puppet возможно, я обнаружил Лучше всего решить, каким будет определение ресурса для отдельной записи, а затем структурировать хэш так, чтобы вы могли передать его в create_resources () . В данном случае это будет означать примерно следующее:
define student ($full_name) {
notify { "user ${title}":
message => "username: ${title}\n",
}
notify { "fullname ${title}":
message => "fullname: ${full_name}\n",
}
exec { "finger ${title}":
command => "/usr/bin/finger ${title}",
logoutput => true,
}
}
$users = {
elion => { full_name => 'El Lion' },
azee => { full_name => 'Avery Zee' },
root => { full_name => 'Rooty Root },
}
create_resources(student, $users)
Однако , как отмечает Гер, лучше всего будет использовать Hiera . Hiera позволяет вам отделить код (определения манифеста) от данных (в данном случае конкретные имена студентов). В целом, вот что я бы сделал для вашей настройки:
Поместите данные ученика в файл hiera. Вы можете использовать JSON или YAML; Мне нравится YAML. Это будет примерно так:
класс :: пользователи:
Элион:
full_name: Эль Лев
ази:
full_name: Эйвери Зи
корень:
full_name: Корневой корень
Определите тип ресурса для учеников и поместите его в classroom / manifest / student.pp
в Puppet's $ modulepath
. Он будет выглядеть как тип ресурса student
выше, но будет называться classroom :: student
.
Определите classroom
class в classroom / manifest / init.pp
со следующим содержанием:
class classroom (
$ users = hiera ('класс :: пользователи', undef),
) {
create_resources (класс :: студент, $ users)
}
Если вы используете Puppet 3.x, вызов hiera ()
в параметрах класса является избыточным, но он вам понадобится, если вы все еще используете Puppet 2.7.