私は外部の事実を設定しようとしていて、hiera yamlファイルの値が入力されたテンプレートファイルをコピーしようとしています。テンプレートファイルは、外部ファクトファイルによって設定される特定のファクト(テンプレートファイルの所有者やグループなど)に依存します。以下は人形のコードです。パペット:依存関係のチェーンが順番に実行されない
file {['/etc/facter/','/etc/facter/facts.d']:
ensure => directory,
owner => 'root',
group => 'root',
mode => '0755',
}
file {"/etc/facter/facts.d/domain_facts.sh":
ensure => present,
owner => 'root',
group => 'root',
mode => '0755',
source => $::hostname?{
'hostname1' => 'puppet:///modules/vfecare/hostname1.sh',
},
require => File['/etc/facter/','/etc/facter/facts.d'],
}
file {"/tmp/testing123":
ensure => present,
owner => "${::remoteuser}",
group => "${::remotegroup}",
content => template("vfecare/testscript.erb"),
require => File["/etc/facter/facts.d/domain_facts.sh"]
}
しかし、実行時に、私はテンプレートが人形のエージェントマシンに最初にコピーされると、テンプレートは、それが外部の事実ファイルから必要ないくつかの値を有しているので、それは見つけることができないと、それは「無効というエラーをスローしていることがわかり所有者とグループの値 "となります。以下は
外部事実の内容が
#!/bin/bash
echo "remoteuser=tempuser"
echo "remotegroup=tempuser"
を提出されたのはなぜ人形は、ここで依存サイクルを無視するように見えるのでしょうか?
しかし、プラグインシンクは単にマシンのホスト名に基づいてファイルをコピーするのではなく、すべてのファクトファイルをコピーするだけです。これを達成する方法はありますか? – Iowa
私はそれがダミーの例であると思っていました、ごめんなさい。私はあなたがHieraなどを使用してホスト名ごとの設定を行うほうがはるかに良いと思います。事実はホストからの情報の発見に関するものですが、ホストごとの事実をエージェントにこのように展開してから、それらをマスターに戻すことはほとんど意味がありません。 –
良い説明ですが、彼は外部の事実を使用しようとしており、実際の事実は使用しようとしていません。また、Hieraは設計上の観点からは理にかなっていますが、PuppetがアクセスできるENCやCMDBのようなものは、さらに効率的できれいです。 –