Как я настраиваю параметризованные классы с массивами в марионетке?

Используйте malloc метод. Это попытается поместить все в RAM, и ядро выгрузит его в случае необходимости. Таким образом, Вы используете память и диск вместе.

В то же время file работает намного лучше, чем malloc когда Вы начинаете поражать диск. Для большего количества информации см.:

1
задан 28 March 2015 в 04:56
1 ответ

Естественным способом представления данных на языке программирования был бы такой хэш:

$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.

4
ответ дан 3 December 2019 в 17:49

Теги

Похожие вопросы