ファクトカスタムファクトのパペットマニフェストから変数を継承するにはどうすればよいですか?この場合、$ job_name変数です。異なる環境で同じカスタムファクトを使用したい。
if $facts['hostname'] =~ /.*name.*/ {
$job_name = 'test'
file { "/opt/$job_name":
ensure => directory,
owner => 'root',
group => 'root',
mode => '0775',
}
file { "/opt/$job_name/version.$job_name":
ensure => present,
owner => 'root',
group => 'root',
mode => '0644',
#notify => Exec["update_test"],
source => "puppet:///modules/test/version.$job_name",
}
if $facts['check_version'] == "aasdadsadasd" {
file { "/opt/$job_name/bla2":
ensure => directory,
owner => 'root',
group => 'root',
mode => '0775',
}
}
私のカスタムファクトRBコードは
require 'facter'
Facter.add(:check_version) do
setcode do
Facter::Core::Execution.exec("/bin/cat /opt/$job_name/version.$job_name")
end
end
前もって感謝します
カスタムファクトでマニフェスト変数を使用する場合は、使用できません。これは、カタログ(マニフェストのコレクション)がコンパイルされる前に、クライアントでファクトが評価されるためです。したがって、カスタムファクトが実行された時点で、変数$job_name
は実際にはまだ存在していません。