外部ファクトを設定してから、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"]
}
ただし、実行中に、テンプレートが最初に puppet エージェント マシンにコピーされ、テンプレートには外部ファクト ファイルから必要な値がいくつか含まれているため、テンプレートが見つからず、「所有者とグループの値が無効です」というエラーがスローされます。
以下は、外部ファクト ファイルの内容です。
#!/bin/bash
echo "remoteuser=tempuser"
echo "remotegroup=tempuser"
ここでパペットが依存関係サイクルを無視しているように見えるのはなぜですか?