这是我第一次尝试设置傀儡。
我已确保端口8140
并22
已打开并正在使用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,它将起作用。