Портирование сценариев оболочки на шаблоны ruby ​​erb, предложения и советы? - PullRequest
1 голос
/ 21 июля 2010

Я использую Puppet для автоматизации управления конфигурацией на хостах.

Он может использовать шаблоны erb для настройки файлов конфигурации различных сервисов, таких как apache, postfix и т. Д. На разных хостах

До сих пор мы использовали сценарии оболочки, заполненные фильтрами sed, awk, grep итакой, и теперь мне нужно портировать этот код на шаблоны ruby ​​erb.

Давайте перейдем к части кода:

<%# domain gets its value from Facter, lets assume it to be abc.def.com
x,y,z=<%= domain.split(".").join(",")%>

<%# x,y and z get the values abc,def,com respectively, right ?

Итак, теперь мне нужно знать о куче вещей.Во-первых, как я могу сослаться на x, y и z в остальной части шаблона?

 <%# these don't work:
    major = <%= x %>
    minor= <%= y %>
    major = #{x}
    minor=$x

Во-вторых, как мне добавить строку типа "dc =" перед каждым возвращенным значением разбиения?

<%# I need something like this (yup, guessed it right, I am trying to generate slapd.conf      
dc=abc,dc=def,dc=com

Хорошо, поэтому я не ищу здесь точных ответов, но если бы кто-нибудь мог сказать мне, по крайней мере, где начать изучать эти вещи, это было бы здорово.Дело в том, что мне нужно сделать это в ближайшее время, чтобы работа с Puppet не застопорилась в офисе.Сказав это, хотя, конечно, я готов дать время на изучение этого, просто нужно знать точные ресурсы (книги / учебные пособия и т. Д.), Чтобы начать с.Приветствия.

Ответы [ 2 ]

2 голосов
/ 29 июля 2010

Ответ выше показался слишком сложным, я бы просто сделал это в шаблоне erb:

dc=<%= domain.split('.').join(',dc=') %>
1 голос
/ 21 июля 2010

Просто помните, что <% доставит вас прямо в Ruby. Таким образом, код не будет major = <%=x%> в пределах <%, а просто major = x.

Что касается кода постоянного тока, это не самый трудный код, но я не играю в гольф-код:

  "a.b.c".split('.').collect {|thing| "dc=#{thing}" }.join(',')

irb твой друг. Также я рекомендую прочитать по крайней мере эти - http://ruby -doc.org / core / classes / Array.html , http://ruby -doc.org / core / classes / Hash.html - это гораздо веселее, чем читать документацию по API на любом другом языке, который я видел.

...