Кукольный манифестов (обычный термин, а не скрипты ), как правило, организованы в модуль на компонент операционной системы или службы (например apache
, ntp
, postgresql
), с одним или несколькими классами, которые содержат все необходимое для его настройки.
Класс Puppet содержит все определения файлов, пакетов и ресурсов службы для компонента ОС. На самом простом это что-то вроде:
class apache { package { "httpd": ensure => installed, } -> service { "httpd": ensure => running, } }
Агент связывается с мастером для его каталога (список ресурсов для настройки), и в этом процессе хост классифицируется, и список классов будет включен в каталог.
В простейшем случае вы можете иметь основной манифест ( doc ), содержащий списки узлов с их именами хостов и включающие в себя классы, которые вы хотите использовать на них:
node foo.example.com { include apache }
Основной манифест компилируется автоматически, когда агент запрашивает свой каталог, и если определение узла соответствует имени агента, его содержимое также оценивается на предмет включения этих классов. Ведение большого количества определений узлов в коде не очень эффективно.
Вы также можете использовать Hiera и hiera_include для хранения списка классов во внешних файлах данных Hiera, в котором содержится основной манифест hiera_include('classes')
. Это ищет значение classes
от Hiera и затем включает в себя все эти классы.
Наконец, мастер может быть сконфигурирован с помощью внешнего классификатора узла (ENC), который обычно представляет собой сценарий, который вызывается при регистрации агента. Ему присваивается имя агента, и он должен выводить список классов (и, необязательно, параметры и окружающая среда ). Он может использовать базу данных или любую другую информацию, имеющуюся в вашей организации.