gpt4 book ai didi

ruby - 当出现不同的错误时,如何让 Puppet Master 针对 Puppet Agent 节点运行 list ?

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:45 29 4
gpt4 key购买 nike

我已经在一个网络中设置了一个puppet master 和puppet agent 服务器。我已经从 puppet 主服务器签署了 puppet 代理的证书请求。我正在尝试从 Puppet Master 针对 Puppet 代理服务器运行 list ,但它失败了。两台 Puppet Master 服务器上的 newManifest.pp 通过其 FQDN 调用 Puppet Agent。两台服务器上的 /etc/hosts 文件都包含两台服务器的 FQDN 条目及其 IP 地址。我可以从另一台服务器 ping 通每台服务器。我可以通过 SSH 从每台服务器连接到另一台服务器。

这两个网络中的所有四台服务器都使用 CentOS 7 作为开源 Puppet version 3.8.4 的操作系统。所有四台机器上的防火墙都已关闭。这些端口在任何中间路径上都没有被阻止:Puppet Master 和 Puppet Agent 服务器之间任一网络上的 22、443、8140 和 61610。

在网络一中,我希望 list 能够编译。他们从来没有。

我尝试使用 sshd_config` 在 Puppet Master 和 Puppet 代理上使用端口 22、443、8140 和 61610。当我从 puppet 大师那里使用它时:

puppet agent -t newManifest.pp --server='foobar.acme.com'

我得到一个错误:

Unable to fetch my node definition, but the agent will continue: Warning: Connection refused - connect(2).

我再次尝试使用 sshdconfig 不专门使用任何端口。我回收了 sshdconfig 服务。我运行相同的命令:

puppet agent -t newManifest.pp --server='foobar.acme.com'

我得到一个不同的错误:

Unable to fetch my node definition, but the agent run will continue: connection refused - connect(2).

然后我尝试了这个命令(没有明确的服务器指定):

puppet agent -t newManifest.pp

这一次,我得到了这个错误:

Unable to fetch my node definition, but the agent will continue: Network is unreachable.

在网络二中,我希望 list 能够工作。他们从来没有。

我尝试通过 sshd_config 在 Puppet Master 和 Puppet 代理上使用端口 22、443、8140 和 61610。当我从 puppet 大师那里使用它时:

puppet agent -t newManifest.pp --server='foobar.acme.com'

我得到一个不同的错误:

   Unable to fetch my node definition, but the agent run will continue: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol.

我再次尝试使用 sshdconfig 不专门使用任何端口。我回收了 sshdconfig 服务。我运行相同的命令:

puppet agent -t newManifest.pp --server='foobar.acme.com'

我得到一个不同的错误:

 Unable to fetch my node definition, but the agent run will continue: connection refused - connect(2).

然后我尝试了这个命令(没有明确的服务器指定):

 puppet agent -t newManifest.pp

这一次,我得到了这个错误:

 Unable to fetch my node definition, but the agent will continue: No route to host - connect(2).

网络一和网络二之间的错误是不同的,除非 sshd_config 没有使用任何特定端口并且编译 list 的命令明确设置了 FQDN。为什么是这样?怎么了?我曾尝试两次设置 Puppet 来修复第一个实例。我无法完全重现第一个网络中的具体问题。

如何让 Puppet Master 服务器编译 list ? puppet 代理人签署了证书。我不明白为什么 list 的编译总是失败。

最佳答案

您至少有两组完全不同的问题。

首先,正如@daxelrod 评论的那样,Puppet 代理并不是那样工作的。主/代理模式的要点是 master 决定节点的配置应该是什么。此外,master 不向 agents 提供 list 文件;相反,它会评估任何必要的 list 和数据,以构建一个供代理应用的资源“目录”。 Master 服务的正是这些目录。

如果您希望代理在任何给定运行中仅应用其配置的一部分,那么您可以使用 --tags 选项来指示它从其目录中选择资源的特定子集。可供选择的标签可以在您的 list 中手动指定,Puppet 会根据资源的声明位置自动使用类名称段标记资源,但这并不能完全按照 list 文件的行进行分解。

如果您真的想将特定的 list 文件应用到您的机器上,那么这些 list 文件及其依赖的任何数据或资源必须存在于目标机器上。在这种情况下,您可以使用 puppet apply 而不是使用代理,正如@daxelrod 观察到的那样。


其次,至于你的网络问题,如果确实如此

The firewalls are turned off on all four machines. These ports are not blocked on any intermediate path: 22, 443, 8140, and 61610 on either network between the Puppet Master and Puppet Agent servers.

正如您所说,关于代理报告的“连接被拒绝”故障,我能看到的唯一其他合理解释是 puppetmaster 实际上并未在代理尝试连接的机器上运行,至少不是在代理尝试连接的端口。这可能是因为某种名称解析问题(即“foobar.acme.com”的解析方式与您预期的不同),因为主服务器被配置为监听与您想象的不同的端口,或者仅仅是因为您这样做了没有启动成功。

“网络无法访问”似乎更容易诊断:如果您没有通过命令行为代理指定服务器,也没有在代理的配置文件中配置服务器,那么 Puppet 会尝试连接到名为“puppet ”。这是为您解析到无法访问的网络上的地址。 (如果代理根本无法解析名称,则消息会有所不同。)

真正有趣的错误消息是 SSL 握手错误:

SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: unknown protocol.

在这种情况下,客户端已成功连接并尝试启动 SSL 握手序列,但它不理解来自服务器的响应。这很可能意味着服务器根本没有向客户端返回 SSL,但我无法猜测它在说什么。


此外,您在问题中多次提到 sshd_config,好像这与问题有关。但是,除非您正在做一些非常不寻常的事情,否则 sshd 及其任何配置文件都不会参与 Puppet 运行。


总的来说,我倾向于认为您正在处理不正确的期望、对主要系统和支持组件的不了解以及可能是一个过于雄心勃勃的开始。 Puppet 有相当不错的文档,包括 for system installation .如果您从 RPM 安装(可能是 PuppetLabs's ),那么这将为您提供一个良好的开端,但您仍然需要 configure both the master and the agent(s) appropriately .我怀疑你在这里的某个地方掉下来了。

无论如何,一定要尝试小口地做这件事。一个主站和一个代理,在同一个网络上,就像您可以进行主/代理配置一样简单。先让它工作。

关于ruby - 当出现不同的错误时,如何让 Puppet Master 针对 Puppet Agent 节点运行 list ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35166695/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com