此设置以前有效,但是在我的服务器上重新安装 Ubuntu 16.04 并重新安装 puppetserver 和 puppet 代理后,我在尝试运行第一次代理时出现错误。
错误:无法从远程服务器检索目录:服务器上的错误 500:服务器错误:评估错误:评估函数调用时出错,查找键"lookup_options"失败:'/etc/puppetlabs/puppet/hiera.yaml' 上的查找配置类型错误,条目"层次结构"索引 0 需要结构值,得到字符串
'/etc/puppetlabs/puppet/hiera.yaml' 的查找配置类型错误,条目"层次结构"索引 1 需要一个结构值,得到字符串
'/etc/puppetlabs/puppet/hiera.yaml' 的查找配置类型错误,无法识别的密钥"后端">
"/etc/puppetlabs/puppet/hiera.yaml"的查找配置在节点 cclloyd.com 上具有错误的类型,无法识别的键"yaml"(文件:/etc/puppetlabs/code/environment/production/site.pp,行:1,列:1(
/etc/puppetlabs/puppet/hiera.yaml:
---
# Hiera 5 Global configuration file
version: 5
:backends:
- yaml
:hierarchy:
- "nodes/%{::trusted.certname}"
- common
:yaml:
:datadir:
除了
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
请注意,"层次结构"键的值是一个哈希数组,并且(在Hiera 5中(它应该是"层次结构",而不是":hierarchy"。
或者,Hiera 5 可能会接受您的原始文件,如果您只是更改它以指定正确的配置文件版本 (3( 为原始内容。 但是,由于Hiera 3格式在Puppet 5中已弃用,并计划在Puppet 6中删除,因此现在似乎是转换为新语法的好时机。