此设置之前有效,但在我的服务器上重新安装Ubuntu 16.04并重新安装puppetserver和puppet代理后,我在尝试第一次代理运行时遇到错误。
错误:无法从远程服务器检索目录:SERVER上的错误500:服务器错误:评估错误:评估函数调用时出错,键'lookup_options'的查找失败:'/ etc / puppetlabs / puppet中的查找配置/hiera.yaml'的类型错误,条目'hierarchy'索引0需要一个Struct值,得到String
'/etc/puppetlabs/puppet/hiera.yaml'上的查找配置有错误的类型,条目'层次结构'索引1需要一个Struct值,得到字符串
'/etc/puppetlabs/puppet/hiera.yaml'上的查找配置有错误的类型,无法识别的键'后端'
'/etc/puppetlabs/puppet/hiera.yaml'上的查找配置有错误的类型,无法识别的键'yaml'(文件:/etc/puppetlabs/code/environments/production/site.pp,line:1,列:1)在节点cclloyd.com上
/etc/puppetlabs/puppet/hiera.yaml:
---
# Hiera 5 Global configuration file
version: 5
:backends:
- yaml
:hierarchy:
- "nodes/%{::trusted.certname}"
- common
:yaml:
:datadir:
答案 0 :(得分:2)
除了
version: 5
,您的文件似乎采用Hiera 3格式。 Hiera 3可能会合理地忽略'版本'键和正常处理其余的,但显然你现在正在运行Hiera 5.因为文件声明自己是Hiera 5格式,Hiera自然而然地接受它的话。该配置的Hiera 5模拟看起来更像这样:
---
# Hiera 5 Global configuration file
version: 5
hierarchy:
- name: "Per-node data (yaml version)"
path: "nodes/%{::trusted.certname}"
- name: "Common and fallback data"
path: "common.yaml"
defaults:
data_hash: yaml_data
请注意'层次结构的值' key是一个哈希数组,而且(在Hiera 5中)它应该是'层次结构'而不是':hierarchy'。
或者,如果您只是更改它以指定原始内容的正确配置文件版本(3),Hiera 5可能会接受您的原始文件。因为Hiera 3格式在Puppet 5中被弃用并计划在Puppet 6中删除,但是,这似乎是转换为新语法的好时机。