Различие также более примечательно, когда существует большая активность диска: Виртуальные машины не сильны в записи в диск, в то время как кремний и металл превосходны.
Я был в той же самой ситуации некоторое время назад. В основном, чтобы шаблоны erb использовались марионеткой, Вы не требуете большого знания Ruby. Но, который также зависит от сложности и цели Ваших марионеточных модулей.
Если бы, например, Вы главным образом собираетесь использовать их для конфигурационных файлов для управления сервером, то главным образом необходимо было бы управлять вещами как IP-адресами и именами хостов. И обычно используемые функции Ruby, с которыми Вы встретились бы, split
и join
.
Самый легкий способ бездельничать с этими и другими функциями состоял бы в том, чтобы установить рубин и его интерактивную оболочку, irb и протестировать Ваш код. Так... шпаргалка, я не знаю. Я прослушивал людей при переполнении стека и #ruby на irc! У меня есть набор шаблонов здесь https://github.com/alcy/pupmods/tree/master/puppet/templates/(плохо организованный!), который мог бы помочь Вам.
Относительно запроса оператора выбора у Вас может быть что-то вроде этого (один из возможных подходов):
$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,
}
Шаблонная часть его объяснена как: разделите ipaddress клиентской машины, полученной из фактора при каждом возникновении ТОЧКИ ".", соберите первые три числа и присоединитесь к ним с ТОЧКОЙ, промежуточной каждый элемент. Сохраните это как переменную ip1
. Согласно этому значению, служите необходимому resolv.conf файлу от файлового сервера марионетки.