【问题标题】:puppet hiera is not resolving variables from hierarchypuppet hiera 没有从层次结构中解析变量
【发布时间】:2016-04-07 20:11:07
【问题描述】:

我在 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

【问题讨论】:

    标签: puppet hierarchy hiera


    【解决方案1】:

    当您在命令行上运行hiera 时,您需要手动指定您希望它识别的任何事实。有几个选项,但对于一次性,最简单的是直接在命令中指定它们:

    hiera allowUsers -c ../hiera.yaml --debug fqdn=centos-puppet
    

    当事实以这种方式传递时,事实名称必须与任何插值标记完全匹配才能被识别。因此,上述表单应该触发使"%{fqdn}" 层次结构级别被识别。如果您改为指定::fqdn=centos-puppet,那么它将使"%{::fqdn}" 级别被识别。但是请注意,当 Puppet 调用 Hiera 时,这两者并没有那么明显——在这种情况下,%{fqdn} 针对当前范围解析fqdn,结果很可能(但不一定)与"%{::fqdn}" 相同.

    Hiera documentation 中更详细地介绍了所有这些内容,最近似乎进行了重大且早该更新的更新。

    【讨论】:

    • 太棒了。感谢您的解释!不幸的是它仍然不起作用...[root@localhost hieradata]# hiera -c ../hiera.yaml --debug fqdn=centos-puppet allowUsers DEBUG: 2016-04-07 22:34:10 +0200: Hiera YAML backend starting DEBUG: 2016-04-07 22:34:10 +0200: Looking up fqdn=centos-puppet in YAML backend DEBUG: 2016-04-07 22:34:10 +0200: Looking for data source global allowUsers[root@localhost hieradata]# cat centos-puppet.yaml --- allowUsers: - "proxy"
    • @syncerror,我很抱歉,我忘记了 Hiera 对非选项参数的顺序很敏感(如文档中所述)。第一个非选项参数始终被解释为要查找的键,并且您的输出准确地显示了这种效果。我已经更新了答案。
    • 非常感谢约翰!你帮了我很多!
    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多