1

ホスト間の構成管理を自動化するために 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 での作業がオフィスで停滞しないように、これをすぐに終わらせる必要があります。とはいえ、もちろん、これを学ぶ時間を与える準備はできていますが、最初に正確なリソース (本/チュートリアルなど) を知る必要があるだけです。乾杯。

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.htmlhttp://ruby-doc.org/core/classes/Hash.htmlを読むことをお勧めします。私が見た他の言語で API ドキュメントを読むよりも楽しいです。

于 2010-07-21T04:59:01.000 に答える