Марионетка - файлы манифеста
В Puppet все программы, написанные с использованием языка программирования Ruby и сохраненные с расширением .pp называются manifests. В общих чертах, все программы Puppet, созданные с целью создания или управления любой целевой хост-машиной, называются манифестом. Все программы, написанные на Puppet, следуют стилю кодирования Puppet.
Ядро Puppet - это способ объявления ресурсов и представление ими своего состояния. В любом манифесте пользователь может иметь набор ресурсов различного типа, которые сгруппированы вместе с использованием класса и определения.
В некоторых случаях манифест Puppet может даже содержать условное выражение для достижения желаемого состояния. Однако в конечном итоге все сводится к тому, чтобы убедиться, что все ресурсы определены и используются правильным образом, а определенный манифест, применяемый после преобразования в каталог, способен выполнять задачу, для которой он был разработан.
Рабочий процесс файла манифеста
Манифест марионетки состоит из следующих компонентов -
Files (это простые файлы, где Puppet не имеет к ним никакого отношения, просто чтобы забрать их и поместить в нужное место)
Resources
Templates (их можно использовать для создания файлов конфигурации на узле).
Nodes (все определения, относящиеся к клиентскому узлу, определены здесь)
Classes
Указывает на заметку
В Puppet все файлы манифеста используют Ruby в качестве языка кодирования и сохраняются с помощью .pp расширение.
Оператор «Импорт» во многих манифестах используется для загрузки файлов при запуске Puppet.
Чтобы импортировать все файлы, содержащиеся в каталоге, вы можете использовать оператор импорта другим способом, например, import 'clients / *'. Это импортирует все.pp файлы внутри этого каталога.
Написание манифестов
Работа с переменными
При написании манифеста пользователь может определить новую переменную или использовать существующую переменную в любой точке манифеста. Puppet поддерживает различные типы переменных, но некоторые из них часто используются, например строки и массив строк. Кроме них, поддерживаются и другие форматы.
Пример строковой переменной
$package = "vim"
package { $package:
ensure => "installed"
}
Использование петель
Циклы используются, когда нужно выполнить несколько итераций одного и того же набора кода, пока не будет выполнено определенное условие. Они также используются для выполнения повторяющихся задач с различным набором значений. Создание 10 задач для 10 разных вещей. Можно создать одну задачу и использовать цикл для повторения задачи с разными пакетами, которые нужно установить.
Чаще всего используется массив для повторения теста с разными значениями.
$packages = ['vim', 'git', 'curl']
package { $packages:
ensure => "installed"
}
Использование условных выражений
Puppet поддерживает большую часть условной структуры, которую можно найти в традиционных языках программирования. Условие можно использовать для динамического определения, следует ли выполнять конкретную задачу или набор кода должен выполняться. Как операторы if / else и case. Кроме того, такие условия, как execute, также будут поддерживать атрибуты, которые работают как условие, но принимают только вывод команды как условие.
if $OperatingSystem != 'Linux' {
warning('This manifest is not supported on this other OS apart from linux.')
} else {
notify { 'the OS is Linux. We are good to go!': }
}