在 Puppet 中使用 Hiera NTP 示例不起作用

在 Puppet 中使用 Hiera NTP 示例不起作用

我目前正在尝试重建所描述的示例这里

问题是,当我尝试获取 ntp::servers 变量时出现以下错误,我无法理解。

hiera ntp::servers ::fqdn=debian

/usr/lib/ruby/vendor_ruby/hiera/backend.rb:18:in `[]': can't convert Symbol into Integer (TypeError)
from /usr/lib/ruby/vendor_ruby/hiera/backend.rb:18:in `datadir'
from /usr/lib/ruby/vendor_ruby/hiera/backend.rb:98:in `datasourcefiles'
from /usr/lib/ruby/vendor_ruby/hiera/backend/yaml_backend.rb:16:in `lookup'
from /usr/lib/ruby/vendor_ruby/hiera/backend.rb:206:in `block in lookup'
from /usr/lib/ruby/vendor_ruby/hiera/backend.rb:203:in `each'
from /usr/lib/ruby/vendor_ruby/hiera/backend.rb:203:in `lookup'
from /usr/lib/ruby/vendor_ruby/hiera.rb:60:in `lookup'
from /usr/bin/hiera:225:in `<main>'

我考虑了故障排除要点

  • 您的 hiera.yaml 文件与我们提供的示例相符
  • 您已将符号链接放置到命令行工具需要找到的位置(/etc/hiera.yaml)
  • 您已保存了 kermit.example.com 数据源文件,扩展名为 .yaml
  • 您的数据源文件的 YAML 格式正确
  • 如果你修改了 hiera.yaml,则需要重新启动 Puppet Master

我的 /etc/puppet/hiera.yaml。(有点不同,但也可以工作)

:backends:
  - yaml
  - puppet
:yaml:
  - :datadir: /etc/puppet/hieradata
:puppet:
  - :datadir: data
:hierarchy:
  - "node/%{::clientcert}"
  - "%{::environment}"
  - common

符号链接正确

ls -l /etc/hiera.yaml 
lrwxrwxrwx 1 root root 22 Sep 15 15:33 /etc/hiera.yaml -> /etc/puppet/hiera.yaml

我的示例文件:/etc/puppet/hieradata/node/debian.yaml

ntp::restrict:
  -
ntp::autoupdate: false
ntp::enable: true
ntp::servers:
  - 0.us.pool.ntp.org iburst
  - 1.us.pool.ntp.org iburst
  - 2.us.pool.ntp.org iburst
  - 3.us.pool.ntp.org iburst

我不知道该用什么工具来检查 YAML 是否正确。我从网站上复制了它,所以我认为没问题。

为确保万无一失,Puppetmaster 也已重新启动。

那么 hiera 工具给出的错误可能是什么问题呢?

答案1

您选择了更安全的路径,即使用%{::clientcert}而不是,这是值得称赞的。但请确保在执行查找时%{::fqdn}为 而不是 提供一个值。::fqdn=debian

此外,:datadir后端puppet还有一个:datasource选项(请参阅文档)。

我建议puppet暂时删除后端。如果你发现你确实需要它,再添加它。大多数用户不会。

相关内容