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 中的条目匹配。