无法呼号:找不到 puppet 的证书请求

use*_*637 7 puppet amazon-ec2 amazon-web-services

我开始使用以下指南在 ec2 上使用 puppet。

https://help.ubuntu.com/12.04/serverguide/puppet.html

在最后一步,当我尝试从傀儡主控签署傀儡客户端时,我收到以下错误

root@ip-10-248-27-66:/home/ubuntu# puppetca --sign ec2-54-245-56-210.us-west-2.compute.amazonaws.com
err: Could not call sign: Could not find certificate request for ec2-54-245-56-210.us-west-2.compute.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

这是/etc/hostspuppetmaster 上的输出

127.0.0.1 localhost puppetmaster
10.248.34.162 ec2-54-245-56-210.us-west-2.compute.amazonaws.com puppet

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Run Code Online (Sandbox Code Playgroud)

这是/etc/hostspuppet 客户端上的输出

127.0.0.1 localhost
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Run Code Online (Sandbox Code Playgroud)

我遵循了此处的故障排除建议https://serverfault.com/a/388973/85577

主人在跑吗?

root@ip-10-248-27-66:/home/ubuntu# service puppetmaster status
 * master is running
Run Code Online (Sandbox Code Playgroud)

主机名“puppet”或“puppet.abc.com”是否由代理解析?

我将如何检查这个?我是否只是通过 telnet 连接到puppetmaster端口 8140(主机命令不能解析它,但 telnet 命令可以)?

root@ip-10-248-34-162:/home/ubuntu# host puppetmaster
Host puppetmaster not found: 3(NXDOMAIN)
Run Code Online (Sandbox Code Playgroud)

是否可以从代理访问主服务器上的 TCP 端口 8140(尝试:telnet puppet 8140)?

root@ip-10-248-34-162:/home/ubuntu# telnet puppetmaster 8140
Trying 10.248.27.66...
Connected to ec2-50-112-220-110.us-west-2.compute.amazonaws.com.
Escape character is '^]'.
Run Code Online (Sandbox Code Playgroud)

代理上的系统日志说什么?

Apr 11 17:57:41 ip-10-248-34-162 puppet-agent[3897]: Could not request certificate: getaddrinfo: Name or service not known
Run Code Online (Sandbox Code Playgroud)

在代理上尝试 puppet agent --test,它将尝试连接到 master 并保持在前台以显示输出。

root@ip-10-248-34-162:/home/ubuntu# puppet agent --test
err: Could not request certificate: getaddrinfo: Name or service not known
Exiting; failed to retrieve certificate and waitforcert is disabled
Run Code Online (Sandbox Code Playgroud)

编辑

感谢 dawud,因此/etc/hosts根据此命令输入的条目是正确的

$ getent hosts puppetmaster
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试此操作时,出现错误

$ puppet agent --test --waitforcert 5
err: Could not request certificate: Connection refused - connect(2)
err: Could not request certificate: Connection refused - connect(2)
Run Code Online (Sandbox Code Playgroud)

daw*_*wud 11

检查 puppetmaster 和客户端计算机是否都可以解析 puppetmaster 的 FQDN。为此,您需要将 puppetmaster IP 添加到您/etc/hosts的两台机器中,然后使用以下命令检查它:

$ ping puppetmaster 或者 $ getent hosts puppetmaster

检查您是否可以从客户端计算机访问 puppetmaster

$ telnet puppetmaster 8140

如果连接被服务器拒绝,请检查 puppetmaster 中的端口是否已打开

# iptables -L -n -v

或添加规则以允许传入流量到该端口(这取决于iptables已配置的方式)

# iptables -A INPUT -p tcp --dport 8140 -m state --state NEW -j ACCEPT

并从客户端运行

# puppet agent --test --waitforcert 5

之后,来自傀儡师

# puppet cert list

将向您显示准备签名的证书,您可以通过比较指纹来检查它是否属于客户端机器。签字:

# puppet cert sign $client

Puppetmaster 将为客户端编译一个目录,您可以在客户端控制台中了解它是如何应用的。

要在 puppetmaster 上重新生成证书,请停止 ppuppetmaster 并

# find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete

当您再次启动 puppetmaster 时,它会为您重新生成证书。

在客户端,通常删除ssldir的内容就足够了/var/lib/puppet/ssl,但是在下次调用时如上所述检查

# puppet agent --test --waitforcert 5

它将被重新创建。

最后,检查puppetmaster证书的CN

# puppet cert list --all

并将任何名称/ALT 名称与 /etc/hosts 中的条目匹配。