5

Puppet マニフェストでテンプレートを期待どおりに見つけることができないので、誰かがすぐに答えてくれると思いました。私はパペットを初めて使用するので、すべての場所とファイルを適切に参照する方法を理解しようとしています。痛々しいほど明らかな何かが欠けている場合は、お詫び申し上げます。

これは機能します:

file {
     $zabbix_agent_conf:
     owner => root,
     group => root,
     mode => 0644,
     content => template("/etc/puppet/templates/zabbix/files/zabbix_agent_conf.erb"),
     require => Package["zabbix-agent"];
}

これはしません:

file {
     $zabbix_agent_conf:
     owner => root,
     group => root,
     mode => 0644,
     content => template("puppet:///templates/zabbix/zabbix_agent_conf.erb"),
     require => Package["zabbix-agent"];
}

私の /etc/puppet/puppet.conf:

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=/etc/puppet/templates
prerun_command=/etc/puppet/etckeeper-commit-pre
postrun_command=/etc/puppet/etckeeper-commit-post

[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY
4

2 に答える 2

4

現時点では、puppet URI スキームをテンプレート機能と組み合わせて使用​​することはできません。ドキュメントによると:

テンプレートへのパスは、puppet:/// URL のパスと同じセマンティクスを使用しないことに注意してください。矛盾して申し訳ありません。(ソース

さらに:

(ファイルがどのモジュール内にも見つからない場合、テンプレート関数は Puppet の templatedir 内のパスに関連する検索にフォールバックします。ただし、この設定の使用は推奨されなくなりました。) (ソース)

これは、templatedir を使用するために、テンプレート関数が単純な相対パスを想定していることを意味します。

template("zabbix/zabbix_agent_conf.erb")

templatedir の使用はお勧めしません。これには正当な理由があります。moduleの共通分母の下でファイルをグループ化することをお勧めします。モジュールは、相互に属するすべての puppet リソース (マニフェスト、ファイル、テンプレート、拡張機能、およびテスト) をグループ化するための優れた方法と考えてください。

そのため、zabbix モジュールを作成することをお勧めします。zabbix モジュールのマニフェスト ディレクトリにある init.pp 内の zabbix クラスにパペット コードを配置します。次に、テンプレートを zabbix モジュールのテンプレート ディレクトリに配置し、次の方法で参照できます。

template("zabbix/zabbix_agent_conf.erb")

お役に立てれば。幸運を!

于 2013-10-14T16:46:18.773 に答える
1

モジュールに入ったら、使用します

template("${モジュール名}/xxx.erb")

テンプレート ファイルを参照するには (puppet 4.x で動作します。以前のバージョンでは不明です)。

于 2017-01-06T12:37:40.427 に答える