基于局部事实将 Puppet 集中参数编码移动到变量

Moving Puppet Centralised Parameter Coding to Variables Based on a Local Fact

目前一切正常。但是,我希望将环境参数分离到他们自己的文件中,以使事情更易于管理。

目前我的 sites.pp 呼叫 class 模块:

模块中的参数通过完整路径引用位于环境中的值,一些示例:

我的 envs class 越来越大,更新很危险(如果多人更新),因此我希望将环境参数移到 envs 下它们自己的子模块中。我一直在评估我的开发 Puppet 环境的变化,但正在努力让它发挥作用。我有子 classes 与名为 gen_env.

的本地集合事实同名

我的问题是我一辈子都想不出如何更新上述内容以使其正常工作。如果我手动将其直接更新到变量名,它确实可以工作,但是让它使用该变量是我迄今为止一直无法做到的事情。我已经尝试切换到在我的模块中使用 include 来加载该模块使用的设置,但是我 运行 遇到了同样的问题,即在映射内容时如何引用变量并使用变量通过 include 引用,例如“$nagiosncpacfgver = $::envs::myenvironmentname::nagiosncpacfgver”和“include envs::myenvironmentname”。

我认为可行(尚未测试)的一种方法是在我的环境中使用 include 来引用子 class 中的参数。由于内容是从 if 语句加载并直接命名的,我相信这会起作用。我仍然得到一个大的 envs 模块,但是所有参数都是通过唯一的环境值生成的。我宁愿让这个工作而不必走这条路,请问有人有解决方案吗?

我通过稍微改变我的方法解决了我的问题。我最初在最后一段提到过它。

基本上,而不是对我的“其他模块”进行更改,所有更改都针对 envs 模块。

变更内容:

  • 使用 envs
  • 中的内容为每个环境创建子 类
  • Envs 更新以根据需要包含语句和参数链接 例如$nagiosncpacfgver = $::envs::myenvironmentname::nagiosncpacfgver

遗憾的是没有一个变量可以用来避免单独映射每个参数,因为我每个环境有超过 400 个。