0

此设置之前有效,但在我的服务器上重新安装 Ubuntu 16.04 并重新安装 puppetserver 和 puppet 代理后,尝试运行我的第一个代理时出现错误。

错误:无法从远程服务器检索目录:服务器上的错误 500:服务器错误:评估错误:评估函数调用时出错,查找键“lookup_options”失败:“/etc/puppetlabs/puppet/hiera. yaml' 类型错误,条目 'hierarchy' 索引 0 需要一个 Struct 值,得到 String

'/etc/puppetlabs/puppet/hiera.yaml' 的查找配置类型错误,条目 'hierarchy' 索引 1 需要一个 Struct 值,得到 String

“/etc/puppetlabs/puppet/hiera.yaml”中的查找配置类型错误,无法识别键“后端”

“/etc/puppetlabs/puppet/hiera.yaml”中的查找配置类型错误,无法识别键“yaml”(文件:/etc/puppetlabs/code/environments/production/site.pp,行: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:
4

1 回答 1

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

请注意,'hierarchy' 键的值是一个哈希数组,并且(在 Hiera 5 中)它应该是 'hierarchy',而不是 ':hierarchy'。

或者,如果您简单地更改它以指定原始内容的正确配置文件版本 (3),Hiera 5 可能会接受您的原始文件。然而,由于 Hiera 3 格式在 Puppet 5 中已弃用,并计划在 Puppet 6 中删除,这似乎是转换为新语法的好时机。

于 2018-05-25T19:42:32.313 回答