在工头中禁用Puppet ENC部分

我看了好几天了,我很郁闷。 我们希望使用福尔曼作为一个监测和provisionnig工具。 我们想停用Foreman的ENC,只使用Hiera。 我怎么能pipe理呢?

至于为什么:

  1. 我的老板就是这样想的
  2. 工头无法parsing来自Hiera的参数

例:

定义repo_file_manager(
   $ repository_url =“http:// $ {yum_client :: lib :: repository_server} / repos / $ {name} /”,
   $ ensure ='present',
   $ gpgcheck ='0',
   $ enable ='1'){

   $ repoconfdir ='/etc/yum.repos.d'

   file {“$ {repoconfdir} / $ {name} .repo”:
    确保=> $确保,
     group =>'root',
     mode =>'0644',
     owner =>'root',
     require => File ['/ etc / yum.repos.d'],
     content => template(“yum_client / repofile.erb”),
   }
 }

${yum_client::lib::repository_server}返回nil,但是当我做hiera(yum_client::lib::repository_server) ,我得到了正确的结果。

工头只是一个ENC,这意味着当被要求的时候,它会发送一个YAML格式的类和variables到Puppet master。

如果一个variables在Hiera中,并且你不用Foreman覆盖它,Hiera中的variables应该被自动使用,因为它不会出现在YAML输出中。 在较新版本的Foreman中,您可以同时执行以下操作:使用Hiera的默认设置,但仍可以使用Foreman覆盖该值。

至于你的问题:iiuc,你正在创build的是一个定义的types,它不具有Hiera作为一个类相同的数据绑定属性。 你可能想要做的就是调用hiera函数,而不是在定义的types中引用“raw”variables。 这可能需要重写这个types,但它应该工作正常,不pipe你是否使用Foreman作为ENC。