在 Foreman 中禁用 Puppet ENC 部分

在 Foreman 中禁用 Puppet ENC 部分

我找了好几天,很郁闷。我们想使用 Foreman 作为监控和配置工具。我们想停用 Foreman 的 ENC,只使用 Hiera。我该怎么做?

至于原因:

  1. 我的老板也希望如此。
  2. Foreman 无法解析来自 Hiera 的参数

例子:

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

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

  文件 {“${repoconfdir}/${name}.repo”:
    确保 => $确保,
    组 => '根',
    模式 => '0644',
    所有者 => 'root',
    需要 => 文件['/etc/yum.repos.d'],
    内容 => 模板(“yum_client/repofile.erb”),
  }
}

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

答案1

Foreman 只是一个 ENC,这意味着当被要求时,它会向 Puppet Master 发送一组 YAML 格式的类和变量。

如果变量在 Hiera 中,并且你确实不是使用 Foreman 覆盖它,Hiera 中的变量应该会自动使用,因为它不会出现在 YAML 输出中。在较新版本的 Foreman 中,您实际上可以同时执行这两项操作:使用 Hiera 的默认设置,但仍然可以使用 Foreman 覆盖该值。

至于您的问题:iiuc,您正在创建的是已定义类型,它不具有与 Hiera 类相同的数据绑定属性。您可能想要做的是调用 hiera 函数,而不是引用已定义类型中的“原始”变量。这可能需要稍微重写该类型,但无论您是否使用 Foreman 作为 ENC,它都应该可以正常工作。

相关内容