新节点上的数据源 Hiera 查找失败

新节点上的数据源 Hiera 查找失败

我正在尝试使用 puppet 设置一个新节点,但是它失败并出现错误,这让我相信 hiera 没有找到正确的数据源:

Server Error: Evaluation Error: Error while evaluating a Function Call, undefined method `empty?' for nil:NilClass at ${line 4 in some selfwritten class}

我也遇到了这个错误,但我不记得我做了什么更改(如果有的话)导致了此错误:

Server Error: Evaluation Error: Error while evaluating a Function Call, Unknown alias: 3B4007E7596ADF847ECA510D57069DBF2B3DB006 at ${line 4 in the same selfwritten class}

puppet 抱怨的类中的行如下所示:

$network = hiera("network")

这是课堂上的第一句话。相同的查找在不同的节点上起作用。

我的 /etc/puppetlabs/puppet/hiera.yaml 看起来像这样

---
:backends:
  - yaml
:hierarchy:
  - "nodes/%{::trusted.certname}"
  - "customer/%{customer}"
  - "preview/%{preview}"
  - "test/%{test}"
  - common

:yaml:
# datadir is empty here, so hiera uses its defaults:
# - /etc/puppetlabs/code/environments/%{environment}/hieradata on *nix
# - %CommonAppData%\PuppetLabs\code\environments\%{environment}\hieradata on Windows
# When specifying a datadir, make sure the directory exists.
  :datadir:

此新节点在其清单中

$customer='foo'

虽然工作节点有

$customer='bar'

我有每个文件的一个 yaml 文件,并且 yamllint 没有显示 hiera.yaml 或下面两个文件的错误或警告。

ls /etc/puppetlabs/code/environments/production/hieradata/customer/

foo.yaml    bar.yaml

各自的 yaml 文件中的第一行为该值网络定义了一个字符串:

network: "172.28.11"

我尝试使用 puppet lookup 来调试这个问题,但目前还没有成功

puppet lookup --environment production --debug --explain --node foo-app1.domain.tld --compile network 

<snip lots of unrelated stuff>
Debug: hiera(): Looking for data source customer/foo
Error: Could not run: Evaluation Error: Error while evaluating a Function Call, Unknown alias: 3B4007E7596ADF847ECA510D57069DBF2B3DB006 at {same class and line}

如果我运行该命令时不使用 --compile ,它会退出而不会出现错误,但也不会查找客户数据源

  • 所有节点都运行 Debian Jessie (8)
  • Puppetserver 是 Jessie 官方 Puppetlabs Repo 的 2.5.0 版本
  • 我尝试过 Jessie (3.7.2) 和 Backports (4.8.2) 的 puppet 代理版本 - 没有区别

那么:为什么这个节点无法通过 hiera 查找?我该如何修复它?如何正确使用 puppet 查找从工作节点获取此值?(以帮助调试)

相关内容