如何在 facter 自定义事实中使用 puppet 变量

如何在 facter 自定义事实中使用 puppet 变量

我如何从 puppet manifest 中的 facter 自定义事实中继承变量?在本例中为 $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

提前致谢

答案1

如果您想在自定义事实中使用清单变量,则无法使用。这是因为事实是在编译目录(清单集合)之前在客户端上进行评估的。因此,在运行自定义事实时,该变量$job_name实际上还不存在。

相关内容