web-dev-qa-db-ja.com

Puppetで設定ファイルのテンプレートを使用する方法

私はPuppetを初めて使用し、構成ファイルをセットアップするモジュールを作成しています。問題は、複数のクライアントが私のモジュールを使用する場合、システムに応じて編集する必要があることです。テンプレートはこの問題を解決する方法であると聞いています。しかし、設定ファイルを設定するためのテンプレートの使用方法を取得できません。

誰かが私にテンプレートを使用してファイルを構成する簡単な例を教えてくれるなら、本当に役に立ちます。たとえば、テンプレートを使用してApacheサイトで利用可能なデフォルトの構成ファイルを設定する方法や、新しい人形ユーザーに役立つと思われる他の例を挙げてください。ところで私はUbuntuマシンを使っています。

17
maths

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

これは、いくつかの異なる概念を示しています。

  1. パペットマニフェストで定義された変数($ntp_server_suffixなど)は、テンプレートのインスタンス変数(@ntp_server_suffix)としてアクセスできます
  2. ループと他のRubyコードはerbテンプレートで使用できます
  3. <%%>の間のコードはRubyによって実行されます
  4. <%=%>の間のコードが実行され、Rubyによって出力されます
  5. <%=-%>の間のコードが実行され、Rubyによって出力され、末尾の改行文字は抑制されます。

これがテンプレートの理解に役立つことを願っています。

24
Ben Whaley