Назад | Перейти на главную страницу

Есть ли шпаргалка по Ruby / ERB для марионеточных пользователей, не знакомых с Ruby в целом?

Я все еще разбираюсь с марионеткой и начинаю возиться с шаблонами, которые основаны на системе 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 с файлового сервера марионетки.