如何在几个项目中使用Dynamic hiera.yaml重用代码?

时间:2016-03-01 11:38:57

标签: puppet

我有一个puppet模块所在的木偶大师。

我想使用相同的代码和单个puppet master来部署不同环境的代码以用于不同的项目。要存储我正在使用hiera的数据。挑战是有一些项目特定数据,代码是相同的。

有没有办法在运行时在hiera层次结构中使用项目特定文件。如果我正在为项目A运行木偶,它将在项目层次中拾取项目特定变量,对于项目B,它将获取项目B特定数据。

通过设置多个木偶大师,我们可以实现这一目标。我们如何使用单个木偶大师来做到这一点?

1 个答案:

答案 0 :(得分:2)

完全有可能!在hiera.yaml文件中,您可以根据事实设置自定义层次结构,例如:

---
:hierarchy:
  - "%{module_name}/%{::fqdn}"
  - "%{module_name}/%{::domain}"
  - "%{module_name}/global"
  - "global"

在这种情况下,如果您要为您的环境提供不同的域名(例如dev.siteprod.sitetest.site等),则会查找不同的hiera文件。它适用于任何可能有用的事实(例如,networkenvironment事实)。