未找到 Puppet 节点,未使用默认节点

Puppet node not found, default node not used

我在我的主人和两者(测试和生产)中使用环境。两种环境的 environment.conf(在两种环境中相同)包含:

modulepath = ./modules:../common/modules
manifest = ./main.pp

main.pp 文件(同样相同)包含:

include(lookup('classes', { 'merge' => 'unique' }))
node default { }

我目前有一个 ENC shell 脚本,实际上是一行,只是输出用于节点的环境,这似乎并不是必需的,因为它也在 puppet.conf 中,所以我正在尝试删除 ENC。 运行 puppet agent 在没有配置 ENC 的情况下主机上工作正常。但是,当我尝试在新节点上 运行 puppet agent 时,没有在主节点上配置 ENC,我得到这个响应:

Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Failed when searching for node [...]: You must set the 'external_nodes' parameter to use the external node terminus

即使我在两个环境中注释掉 default 节点,我仍然会收到此错误。即使在 puppet agent 命令行 and/or in [master] within puppet.conf 在新节点上指定环境,我也会得到同样的错误。

我确实使用 Hiera,新节点有一个 Hiera 的节点文件,尽管它没有提供节点定义(据我所知),所以我不知道它是否得到了那个远的。我希望它使用 default 节点并从 Hiera 获得 类。

我想我的问题是为什么它给我这个错误,它不应该使用默认节点吗?

更新 1:

这是分发的puppet.conf

[agent]
server = puppet-prod.foo.com

[main]
environment = prod

[master]
dns_alt_names = puppet-prod,puppet-prod.foo.com

这些是我为摆脱 ENC 而删除的行:

external_nodes = /usr/local/bin/puppet-node-classifier
node_terminus = exec
trusted_server_facts = true

You must set the 'external_nodes' parameter to use the external node terminus

这表明 ENC 没有完全取消配置。

检查 puppet.conf 中是否有这样一行,然后将其删除或注释掉:

node_terminus = exec

不幸的是,在这种情况下,这是一个非常愚蠢的问题;我需要做的就是重新启动 Puppet master 进程。

我正在更新配置文件,当我触摸主 puppet.conf 文件时,它记录了它正在重新加载整个配置,但它显然没有刷新 ENC 配置。

令人惊讶的是我在关闭和重新打开之前浪费了多少时间...