web-dev-qa-db-ja.com

ファクトカスタムファクトでpuppet変数を使用する方法

ファクトカスタムファクトのパペットマニフェストから変数を継承するにはどうすればよいですか?この場合、$ 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

前もって感謝します

2
antimion

カスタムファクトでマニフェスト変数を使用する場合は、使用できません。これは、カタログ(マニフェストのコレクション)がコンパイルされる前に、クライアントでファクトが評価されるためです。したがって、カスタムファクトが実行された時点で、変数$job_nameは実際にはまだ存在していません。

3
bodgit