как я могу использовать марионеточную переменную в фактах факта

как я могу наследовать переменную из марионеточного манифеста по факту факта? в этом случае $ job_name varible. Я хочу использовать один и тот же пользовательский факт с разными окружениями.

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
задан 8 October 2018 в 13:58
1 ответ

Если вы хотите использовать переменную манифеста в настраиваемом факте, вы не можете. Это связано с тем, что факты оцениваются на клиенте перед составлением каталога (коллекции манифестов). Таким образом, в момент запуска вашего пользовательского факта переменная $ job_name еще не существует.

3
ответ дан 3 December 2019 в 10:32

Теги

Похожие вопросы