Я все еще разбираюсь с марионеткой и начинаю возиться с шаблонами, которые основаны на системе ERB Ruby. Я не знаком с Ruby в целом, знает ли кто-нибудь о шпаргалке по ERB, или мне нужно будет запачкать руки и изучить некоторые основы Ruby?
Некоторое время назад я был в точно такой же ситуации. В принципе, чтобы шаблоны erb использовались марионеткой, вам не нужно много знать Ruby. Но это также зависит от сложности и назначения ваших марионеточных модулей.
Если, например, вы в основном собираетесь использовать их для файлов конфигурации для управления сервером, то в основном вам придется манипулировать такими вещами, как IP-адреса и имена хостов. И наиболее часто используемые функции Ruby, с которыми вы можете столкнуться, это split
и join
.
Самый простой способ поработать с этими и другими функциями - это установить ruby и его интерактивную оболочку irb и протестировать ваш код. Итак ... шпаргалка, я не знаю. Я подслушивал людей при переполнении стека и #ruby на irc! У меня здесь куча шаблонов https://github.com/alcy/pupmods/tree/master/puppet/templates/ (плохо организовано!), это может вам помочь.
Что касается запроса оператора case, у вас может быть что-то вроде этого (один из возможных подходов):
$ip1=inline_template('<%= ipaddress.split(".")[0..2].collect{|x| x}.join(".") %>')
$source = $ip1 ? {
"10.0.0" => "puppet:///your-module-name/resolv.conf.1",
"10.0.1" => "puppet:///your-module-name/resolv.conf.2",
}
file {"/etc/resolv.conf":
ensure => present,
source => $source,
}
Его часть, являющаяся шаблоном, объясняется следующим образом: разделять ip-адрес клиентской машины, полученного от facter, при каждом появлении точки ".", Собирать первые три числа и соединять их с точкой между каждым элементом. Сохраните это как переменную ip1
. В соответствии с этим значением обслуживайте необходимый файл resolv.conf с файлового сервера марионетки.