Марионетка - файлы манифеста

В 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!': }
}