Wil*_*ire 4 puppet facter hiera
我正在运行一个 masterless puppet 设置,它以以下方式应用 puppet 更改。
puppet apply /tmp/puppet/manifests/site.pp --modulepath=/tmp/puppet/modules --hiera_config=/tmp/puppet/hiera.yaml
Run Code Online (Sandbox Code Playgroud)
我一直在尝试在 hiera 中处理我们拥有的不同类型的节点,并且作为起点,我一直在尝试使用在节点上设置的自定义事实。这个事实是节点类型,在这个例子中被设置为无盘值。
节点上的因素认识到这一事实。
# facter -y | grep nodetype
nodetype: diskless
Run Code Online (Sandbox Code Playgroud)
并且 hiera.yaml 包含以下内容
---
:backends:
- yaml
:yaml:
:datadir: /tmp/puppet/data
:hierarchy:
- node/%{::nodetype}
Run Code Online (Sandbox Code Playgroud)
在 /tmp/puppet/data/node/diskless.yaml 有
---
cluster: blues
Run Code Online (Sandbox Code Playgroud)
虽然这样做之后我尝试仔细检查 hiera 然后根据需要设置变量,但它似乎不起作用。
hiera -y diskless.yaml cluster
nil
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来调试问题。我相信这很简单,但如果 hiera 不能(或不能)在这个用例中运行会令人失望。
干杯
编辑1:
附加调试
hiera cluster '::nodetype=diskless' -d
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Hiera YAML backend starting
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Looking up cluster in YAML backend
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Looking for data source defaults
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Cannot find datafile /var/lib/hiera/defaults.yaml, skipping
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Looking for data source global
DEBUG: Fri Oct 31 16:54:01 -0400 2014: Cannot find datafile /var/lib/hiera/global.yaml, skipping
nil
Run Code Online (Sandbox Code Playgroud)
编辑2:
似乎设置标志 --hiera-config 没有任何作用,需要将 /etc/hiera.yaml 符号链接到您希望使用的 hiera.yaml 配置。
编辑 3:将 /etc/hiera.yaml 符号链接到 /tmp/puppet/hiera.yaml 后,我能够查找 hiera 变量,但无法以预期的方式在人偶清单中使用它们。相反,我不得不像这样直接调用 hiera
$networking_config = hiera('networking::network::networking_config','no')
Run Code Online (Sandbox Code Playgroud)
非常混乱
小智 5
尝试这个:
hiera 集群 '::nodetype=diskless'
请参阅:https : //docs.puppetlabs.com/hiera/1/command_line.html#fact-sources