背景
我正在使用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
。
答案 0 :(得分:0)
我的工作代码:
datadir: "/etc/puppetlabs/code/environments/%{environment}/hiera"
但路径应该是正确的。