我正在使用我的主人和两者的环境(测试和刺激)。两个环境的environment.conf
(在两种环境中都相同)包含:
modulepath = ./modules:../common/modules
manifest = ./main.pp
main.pp
文件(也相同)包含:
include(lookup('classes', { 'merge' => 'unique' }))
node default { }
我目前有一个ENC shell脚本,实际上是一行,只输出用于节点的环境,这似乎并不是必需的,因为它也在puppet.conf
,所以我试图删除ENC。在没有配置ENC的情况下,在主服务器上运行puppet agent
工作正常。但是,当我尝试在新节点上运行puppet agent
时,如果没有在主节点上配置ENC,我会收到此响应:
错误:无法从远程服务器检索目录:SERVER上的错误500:服务器错误:搜索节点时失败[...]:您必须设置'external_nodes'参数以使用外部节点终端
即使我在两个环境中都注释掉default
节点,我仍然会收到此错误。即使在puppet agent
命令行上和/或新节点上[master]
内的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
答案 0 :(得分:1)
您必须将'external_nodes'参数设置为使用外部节点终端
这表明ENC没有完全解除配置。
在puppet.conf中检查这样的行,并删除或注释掉它:
node_terminus = exec
答案 1 :(得分:0)
不幸的是,在这种情况下,这是一个非常愚蠢的问题;我需要做的就是重新启动Puppet主进程。
我正在更新配置文件,当我触摸主puppet.conf
文件时,它正在记录它正在重新加载整个配置,但它显然没有刷新ENC配置。
令人惊讶的是,在将其关闭再打开之前我浪费了多少时间......