我正在使用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的合作不会在办公室停滞不前。尽管如此,当然,我已经准备好花时间学习这个,只需要知道确切的资源(书籍/教程等)。欢呼声。
答案 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.html,http://ruby-doc.org/core/classes/Hash.html - 这比使用我见过的任何其他语言阅读API文档要好得多。