puppet hiera 没有解析层次结构中的变量
puppet hiera is not resolving variables from hierarchy
我在 hiera.yaml 中定义了这样的东西:
:backends:
- yaml
:hierarchy:
- "%{::fqdn}"
- "%{fqdn}"
- global
:yaml:
:datadir: "/etc/puppet/hieradata"
(我不知道哪个是正确的,所以这就是为什么我有两个...)
但是当我运行hiera -c ../hiera.yaml allowUsers --debug
这是输出
DEBUG: 2016-04-07 22:07:02 +0200: Hiera YAML backend starting
DEBUG: 2016-04-07 22:07:02 +0200: Looking up allowUsers in YAML backend
DEBUG: 2016-04-07 22:07:02 +0200: Looking for data source global
DEBUG: 2016-04-07 22:07:02 +0200: Found allowUsers in global
["vagrant", "root"]
所有内容都在同一个目录中
[root@localhost hieradata]# ll
total 16
-rw-r--r--. 1 root root 28 Apr 7 20:14 centos-puppet.yaml
-rw-r--r--. 1 root root 45 Apr 7 20:39 facts.yaml
-rw-r--r--. 1 root root 83 Apr 7 20:42 global.yaml
-rw-r--r--. 1 root root 28 Apr 7 20:15 production.yaml
还有
[root@localhost hieradata]# facter fqdn
centos-puppet
所以即使在层次结构中 fqdn 名称更高,看起来 hiera 甚至没有尝试解析 fqdn 变量。我不知道为什么。
[root@localhost hieradata]# puppet -V
3.8.6
[root@localhost hieradata]# hiera -v
1.3.4
当您在命令行上 运行 hiera
时,您需要手动指定您希望它识别的任何事实。有几个选项,但对于一次性的,最简单的是直接在命令中指定它们:
hiera allowUsers -c ../hiera.yaml --debug fqdn=centos-puppet
当以这种方式传递事实时,事实名称必须与任何插值标记完全匹配才能被识别。因此,上面的形式应该触发 "%{fqdn}"
层级被识别。如果您改为指定 ::fqdn=centos-puppet
那么它会使 "%{::fqdn}"
级别被识别。但是请注意,当 Hiera 被 Puppet 调用时,这两者并没有那么明显——在这种情况下,%{fqdn}
解析 fqdn
针对当前范围,很可能(但不一定)相同的结果作为 "%{::fqdn}"
.
所有这些都在 Hiera documentation 中进行了更详细的介绍,它似乎最近得到了一个重要的、迟来的更新。
我在 hiera.yaml 中定义了这样的东西:
:backends:
- yaml
:hierarchy:
- "%{::fqdn}"
- "%{fqdn}"
- global
:yaml:
:datadir: "/etc/puppet/hieradata"
(我不知道哪个是正确的,所以这就是为什么我有两个...)
但是当我运行hiera -c ../hiera.yaml allowUsers --debug
这是输出
DEBUG: 2016-04-07 22:07:02 +0200: Hiera YAML backend starting
DEBUG: 2016-04-07 22:07:02 +0200: Looking up allowUsers in YAML backend
DEBUG: 2016-04-07 22:07:02 +0200: Looking for data source global
DEBUG: 2016-04-07 22:07:02 +0200: Found allowUsers in global
["vagrant", "root"]
所有内容都在同一个目录中
[root@localhost hieradata]# ll
total 16
-rw-r--r--. 1 root root 28 Apr 7 20:14 centos-puppet.yaml
-rw-r--r--. 1 root root 45 Apr 7 20:39 facts.yaml
-rw-r--r--. 1 root root 83 Apr 7 20:42 global.yaml
-rw-r--r--. 1 root root 28 Apr 7 20:15 production.yaml
还有
[root@localhost hieradata]# facter fqdn
centos-puppet
所以即使在层次结构中 fqdn 名称更高,看起来 hiera 甚至没有尝试解析 fqdn 变量。我不知道为什么。
[root@localhost hieradata]# puppet -V
3.8.6
[root@localhost hieradata]# hiera -v
1.3.4
当您在命令行上 运行 hiera
时,您需要手动指定您希望它识别的任何事实。有几个选项,但对于一次性的,最简单的是直接在命令中指定它们:
hiera allowUsers -c ../hiera.yaml --debug fqdn=centos-puppet
当以这种方式传递事实时,事实名称必须与任何插值标记完全匹配才能被识别。因此,上面的形式应该触发 "%{fqdn}"
层级被识别。如果您改为指定 ::fqdn=centos-puppet
那么它会使 "%{::fqdn}"
级别被识别。但是请注意,当 Hiera 被 Puppet 调用时,这两者并没有那么明显——在这种情况下,%{fqdn}
解析 fqdn
针对当前范围,很可能(但不一定)相同的结果作为 "%{::fqdn}"
.
所有这些都在 Hiera documentation 中进行了更详细的介绍,它似乎最近得到了一个重要的、迟来的更新。