私はPuppetを初めて使用し、構成ファイルをセットアップするモジュールを作成しています。問題は、複数のクライアントが私のモジュールを使用する場合、システムに応じて編集する必要があることです。テンプレートはこの問題を解決する方法であると聞いています。しかし、設定ファイルを設定するためのテンプレートの使用方法を取得できません。
誰かが私にテンプレートを使用してファイルを構成する簡単な例を教えてくれるなら、本当に役に立ちます。たとえば、テンプレートを使用してApacheサイトで利用可能なデフォルトの構成ファイルを設定する方法や、新しい人形ユーザーに役立つと思われる他の例を挙げてください。ところで私はUbuntuマシンを使っています。
Puppetテンプレートの使用 のPuppetLabsドキュメントには、TracサイトのApache構成の例があります。これはあなたが始めるのに十分なはずです。
OPのリクエストに従って、簡単な例を示します。かなり大きくて複雑なファイルなので、Apacheのデフォルト設定ではなくNTPを使用しています。NTPの方が簡単です。
ディレクトリは次のようになります。
/etc/puppet/modules/ntp/manifests
/templates
部分的な内容/etc/puppet/modules/ntp/manifests/init.pp
(テンプレートを定義する部分のみ):
$ntp_server_suffix = ".ubuntu.pool.ntp.org"
file { '/etc/ntp.conf':
content => template('ntp/ntp.conf.erb'),
owner => root,
group => root,
mode => 644,
}
/etc/puppet/modules/ntp/templates/ntp.conf.erb
の内容:
driftfile /var/lib/ntp/drift
<% [1,2].each do |n| -%>
server <%=n-%><%=@ntp_server_suffix%>
<% end -%>
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
パペットで実行すると、次のような/etc/ntp.conf
になります。
driftfile /var/lib/ntp/drift
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
これは、いくつかの異なる概念を示しています。
$ntp_server_suffix
など)は、テンプレートのインスタンス変数(@ntp_server_suffix
)としてアクセスできます<%
と%>
の間のコードはRubyによって実行されます<%=
と%>
の間のコードが実行され、Rubyによって出力されます<%=
と-%>
の間のコードが実行され、Rubyによって出力され、末尾の改行文字は抑制されます。これがテンプレートの理解に役立つことを願っています。