无法将 Puppet 代理连接到 Master

无法将 Puppet 代理连接到 Master

这是我第一次尝试设置傀儡。

我已确保端口814022已打开并正在使用ufw

服务器和代理均在运行。在启动代理之前,我进行了编辑,/etc/puppet/puppet.conf添加了以下内容:

[agent]
server=174.89.xyz.abc

我也做了上述事情/etc/puppetlabs/puppet/puppet.conf,不确定是否应该同时拥有这两项,当我跑步时puppet --version,我回来了4.10

代理服务器的IP设置为主服务器的IP。

我跑过去puppet cert list希望看到代理的请求,我指向我的笔记本电脑,但我没有看到任何请求。

我不知道下一步该做什么才能弄清楚为什么代理无法连接。

编辑:

我跑了,puppet agent --test结果返回:

Info: Creating a new SSL key for ip-172-00-00-00.us-west-2.compute.internal
Error: Could not request certificate: Failed to open TCP connection to puppet:8140 (getaddrinfo: Name or service not known)
Exiting; failed to retrieve certificate and waitforcert is disabled

我已确保我的笔记本电脑位于 DMZ 中,并且可以从代理服务器成功 ping 它。


更新:

@DylanKnoll 指出,服务器的默认值是 puppet,因此它可能不接受 ip 地址。我找到了一些关于 puppet 别名为这里。然后我删除了上面的配置并将此行添加到/etc/hosts

174.89.000.000 puppet

经过此更改后,我收到的错误发生了变化。所以他们似乎正在建立连接。我仍然在使用 IP 地址,所以也许我需要一个域名才能获得正确的 SSL 连接(?)

错误信息:

Error: Could not request certificate: The CSR retrieved from the master does not match the agent's public key.
CSR fingerprint: BF:43:71:72:86:45:76:E9:34:20:24:71:B6:0C:88:25:3A:67:5E:C4:84:D5:E0:22:C9:1A:9E:FD:98:C1:0D:3C
CSR public key: Public-Key: (4096 bit)
Modulus:
    00:b7:bd:de:db:24:50:01:95:ad:10:af:83:6e:c5:
    # lines removed
    35:e9:17:40:46:09:31:96:d6:68:ca:15:9e:be:41:
    85:6c:eb
Exponent: 65537 (0x10001)

Agent public key: Public-Key: (4096 bit)
Modulus:
    00:b0:21:80:23:d5:a5:26:37:ea:68:02:99:d5:85:
    # lines removed
    3d:92:e1
Exponent: 65537 (0x10001)

To fix this, remove the CSR from both the master and the agent and then start a puppet run, which will automatically regenerate a CSR.
On the master:
  puppet cert clean ip-172-31-27-12.us-west-2.compute.internal
On the agent:
  1a. On most platforms: find /home/ubuntu/.puppetlabs/etc/puppet/ssl -name ip-172-31-27-12.us-west-2.compute.internal.pem -delete
  1b. On Windows: del "\home\ubuntu\.puppetlabs\etc\puppet\ssl\certs\ip-172-31-27-12.us-west-2.compute.internal.pem" /f
  2. puppet agent -t

答案1

您是否puppet agent --test在代理上运行以生成(并发送)初始证书请求?这应该将代理放入主服务器的证书请求列表中。

如果代理只是抱怨没有找到证书然后退出,它可能认为它已经发送了一个请求 - 只需通过备份然后删除配置的 puppet SSL 目录(默认情况下,/var/lib/puppet/ssl/etc/puppetlabs/puppet/ssl)来重置其内存,然后运行puppet agent --test(如果您想确定,使用--debug--verbose) - 这次运行应该输出它正在生成一个新的证书请求,并且应该将其发送到配置的主服务器。

答案2

错误消息会告诉您具体该怎么做。清除节点 SSL 文件夹:

rm -rf /etc/puppetlabs/puppet/ssl

笔记:这将删除所有 puppet SSL 证书、CSR 等。因此只能在节点上执行此操作,而不是在服务器上执行。

然后,从 puppetmaster 中删除 CSR:

sudo /opt/puppetlabs/bin/puppet cert clean <hostname>

之后,在节点上再执行一次 puppet 运行:

sudo /opt/puppetlabs/bin/puppet agent -tv

这将生成一个新的 CSR。

答案3

如果您正在使用 Azure VM,然后连接到 PuTTY,则需要在 Azure 中打开端口 8140,因为默认情况下所有端口都被阻止。转到 VM 网络选项并添加端口 8140 的允许规则(因为 puppet 在端口 8140 上工作)然后再次尝试从新连接到 PuTTY,它将起作用。

相关内容