私はまだ人形を理解し始めており、RubyのERBシステムに基づいたテンプレートをいじり始めています。私はRuby一般的に、ERBのチートシートを知っている人はいますか、それとも手を汚していくつかのRuby基本?
私はしばらく前にまったく同じ状況にありました。基本的に、puppetで使用されるerbテンプレートの場合、Rubyの知識はあまり必要ありません。ただし、それはパペットモジュールの複雑さと目的にも依存します。
たとえば、主にサーバー管理用の構成ファイルに使用する場合は、ほとんどの場合、IPアドレスやホスト名などを操作する必要があります。そして、最も一般的に使用されるRuby関数は、split
とjoin
です。
これらの関数やその他の関数をいじくり回す最も簡単な方法は、Rubyとそのインタラクティブなシェル、irbをインストールして、コードをテストすることです。だから...虎の巻、わかりません。私はスタックオーバーフローと#Rubyon ircで人々を悩ませました!ここにたくさんのテンプレートがあります https://github.com/alcy/pupmods/tree/master/puppet/templates/ (ひどく整理されています!)、それはあなたを助けるかもしれません。
Caseステートメントクエリに関しては、次のようなものがあります(可能なアプローチの1つ):
$ip1=inline_template('<%= ipaddress.split(".")[0..2].collect{|x| x}.join(".") %>')
$source = $ip1 ? {
"10.0.0" => "puppet:///your-module-name/resolv.conf.1",
"10.0.1" => "puppet:///your-module-name/resolv.conf.2",
}
file {"/etc/resolv.conf":
ensure => present,
source => $source,
}
そのテンプレート部分は次のように説明されます。DOT「。」が出現するたびにファクトから取得したクライアントマシンのIPアドレスを分割し、最初の3つの数値を収集し、各要素の間にDOTを付けて結合します。これを変数として保存しますip1
。この値に従って、puppetのファイルサーバーから必要なresolv.confファイルを提供します。