将shell脚本移植到ruby erb模板,建议和建议?

时间:2010-07-21 04:54:02

标签: ruby templates shell erb puppet

我正在使用Puppet自动执行跨主机的配置管理。

它可以使用erb模板在不同的主机上设置各种服务的配置文件,如apache,postfix等

到目前为止我们使用的是完整的sed,awk,grep过滤器等shell脚本,现在我需要将该代码移植到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 个答案:

答案 0 :(得分:2)

上面的答案看起来太复杂了,我只想在erb模板中完成这个:

dc=<%= domain.split('.').join(',dc=') %>

答案 1 :(得分:1)

请记住<%让你直接进入Ruby。因此,代码不会major = <%=x%> <%而只是major = x

至于dc代码,这不是最严密的代码,但我不玩代码高尔夫:

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

irb是你的朋友。另外,我建议至少阅读这些内容 - http://ruby-doc.org/core/classes/Array.htmlhttp://ruby-doc.org/core/classes/Hash.html - 这比使用我见过的任何其他语言阅读API文档要好得多。