我正在设置一些无状态节点。
每个节点都配备了相同的操作系统映像文件。它在启动时从 DHCP/DNS 服务器获取主机名。
下一步是获取服务器配置...我计划使用 puppet 来完成这部分...
但此时节点没有正确的证书,因为它是一个通用操作系统映像。第一次在网络上看到节点时,这很正常,因为我可以使用 autosign.conf 来启用证书签名和验证
我需要做什么来解决节点已经在网络上被看到的情况,以便傀儡主机拥有它的证书...但是服务器证书将不会与节点上新创建的证书匹配。
我尝试插入
允许重复证书 = true
进入 puppet.conf
但似乎不起作用。我看的设置正确吗?有没有更好/更合适的方法来解决这个问题?
答案1
处理此类问题(尤其是在类似 EC2 的环境中)的正常方法是使用 UUID 作为客户端证书,而不是主机名。我在以下网址找到了有关此过程的合理指南:把我当傀儡的”使用 UUID 作为代理证书名称“,但该过程的要点如下:
- 安装
uuidgen
- 运行
uuidgen
以获取 UUID。 - 编辑
puppet.conf
并添加certname = <UUID>
到该[agent]
部分。 - 继续正常 Puppet 部署过程。
这个过程可以毫无困难地编写成脚本。
答案2
答案3
这可能不是一个理想的解决方案,但这是我在转向 saltstack 之前所做的事情:
当推出一个新的 EC2 盒时(我正在使用 fabric 来实现这一点,这一切都是在 puppetmaster 上完成的):
1)在PuppetMaster上(证书和机器主机名已经知道;命名约定):
local('sudo puppetca -c {}' .format(cert_name));
local('sudo puppetca -g {}' .format(cert_name));
这将解决您提到的旧证书问题。
之后使用 scp 将以下文件复制到新推出的盒子中:
1)/var/lib/puppet/ssl/ca/signed/signed-cert_name.pem
2)/var/lib/puppet/ssl/private_keys/private-cert_name.pem
3)/var/lib/puppet/ssl/certs/ca.pem
上面的面料代码表示:
local("sudo cp /var/lib/puppet/ssl/ca/signed/{}.pem /tmp/signed-{}.pem" .format(cert_name,cert_name))
local("sudo chown ubuntu:ubuntu /tmp/signed-{}.pem" .format(cert_name))
local("sudo cp /var/lib/puppet/ssl/private_keys/{}.pem /tmp/private-{}.pem" .format(cert_name,cert_name))
local("sudo chown ubuntu:ubuntu /tmp/private-{}.pem" .format(cert_name))
local("sudo cp /var/lib/puppet/ssl/certs/ca.pem /tmp/ca.pem")
local("sudo chown ubuntu:ubuntu /tmp/ca.pem")
put("/tmp/signed-{}.pem" .format(cert_name), "/home/ubuntu/signed-{}.pem" .format(cert_name))
put("/tmp/private-{}.pem" .format(cert_name) , "/home/ubuntu/private-{}.pem" .format(cert_name))
put("/tmp/ca.pem" , "/home/ubuntu/ca.pem")
现在在新盒子上运行以下命令(我有一个简单的 bash 脚本执行此操作并且 fqdn 是传递的一个参数):
sudo chown root:root /home/ubuntu/ca.pem /home/ubuntu/signed-$fqdn.pem /home/ubuntu/private-$fqdn.pem
sudo chmod 600 /home/ubuntu/private-$fqdn.pem
sudo mkdir -p /var/lib/puppet/ssl/certs/ /var/lib/puppet/ssl/ca/signed/ /var/lib/puppet/ssl/private_keys/
sudo mv /home/ubuntu/ca.pem /var/lib/puppet/ssl/certs/ca.pem
sudo mv /home/ubuntu/signed-$fqdn.pem /var/lib/puppet/ssl/ca/signed/$fqdn.pem
sudo mv /home/ubuntu/private-$fqdn.pem /var/lib/puppet/ssl/private_keys/$fqdn.pem
我希望这能有所帮助。
注意:local 和 put 是 Fabric 操作