1

我正在使用 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 的合作才不会在办公室停滞不前。话虽如此,当然,我已经准备好花时间学习这个,只需要知道确切的资源(书籍/教程等)就可以开始了。干杯。

4

2 回答 2

2

上面的答案似乎太复杂了,我会在 erb 模板中简单地做到这一点:

dc=<%= domain.split('.').join(',dc=') %>
于 2010-07-28T20:24:58.063 回答
1

请记住,<%您可以直接进入 Ruby。所以代码不会major = <%=x%>在 a<%而只是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 文档更有趣。

于 2010-07-21T04:59:01.000 回答