更改hiera 5环境层hiera.yaml位置

时间:2017-08-02 15:26:46

标签: puppet hiera

背景
我正在使用puppet5&来自单独hiera5回购的puppet版主的git 使用分支到环境目录映射,使用r10k将代码部署到各自的位置。 由于r10k中的环境冲突限制(如果不再是这种情况,道歉)我为hieradata使用了一个单独的位置:

Puppet code - /etc/puppetlabs/code/envirnments/
Hiera code - /etc/puppetlabs/code/hieradata/

我在hiera.yaml中有一个全局/etc/puppetlabs/puppet/hiera.yaml文件,在hiera.yaml分支/环境位置有一个特定于环境的hiera文件。

e.g。 /etc/puppetlabs/code/hieradata/production/hiera.yaml

问题
我的环境hiera.yaml由于其位置而被忽略,预计会出现在我的傀儡<ENVIRONMENT>代码的位置:

/etc/puppetlabs/code/environments/production/hiera.yaml

取自https://docs.puppet.com/puppet/5.0/hiera_config_yaml_5.html#location

但是它是:

/etc/puppetlabs/code/hieradata/production/hiera.yaml

解决方案
我能找到的唯一解决方案是在我的木偶代码仓库中找到一个hiera.yaml,其数据库设置为

datadir: ../../hieradata/%{::environment}/hieradata (它必须是相对的)

哪个有效,但不理想,所以我正在寻找其他解决方案。

即使我将全局hiera.yaml datadir设置为:

/etc/puppetlabs/code/hieradata/%{::environment}/ (它可以是一条完整的路径)

并且我的木偶仓库中没有hiera.yaml个文件,hiera有效,但位于此处的环境hiera.yaml会被忽略。

另一个想法是交换位置,但我的木偶代码不起作用。

理想情况下,我需要做的是设置环境层hier.yaml位置,因为它似乎硬编码到<ENVIRONMENT>,这是我的木偶代码所在。

我仍然想使用r10k,我想在我的hiera repo中托管我的环境hiera.yaml

1 个答案:

答案 0 :(得分:0)

我的工作代码:

datadir: "/etc/puppetlabs/code/environments/%{environment}/hiera"

但路径应该是正确的。