在木偶中使用Hiera NTP的例子不起作用

我目前正试图重build这里描述的例子

问题是,当我尝试获取ntp :: serversvariables时,出现以下错误,这是我在理解时遇到的问题。

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文件与我们提供的示例相匹配
  • 你已经把一个符号链接到hiera.yaml,命令行工具希望find它(/etc/hiera.yaml)
  • 您已将.yaml扩展名保存为kermit.example.com数据源文件
  • 您的数据源文件的YAML格式正确
  • 如果你修改了hiera.yaml,你重新启动了木偶大师

我的/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是否受到欢迎。 我从网站上复制它,所以我认为这是确定的。

木偶大师也重新启动了。

那么hiera工具给我的错误有什么问题呢?

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

此外,而不是:datadirpuppet后端有一个:datasource选项(见文档 )。

我build议暂时去掉puppet后端。 如果你发现你真的需要它,就添加它。 大多数用户不会。