我如何预先签署傀儡证书?

木偶需要在被pipe理的客户(木偶)和服务器(木偶大师)之间的证书。 您可以在客户端上手动运行,然后到服务器上签名证书,但是如何自动执行群集/计算机的此过程?

在服务器(puppetmaster)上运行:

puppetca --generate <NAME> 

然后将以下内容从服务器复制到客户端上:

 /var/lib/puppet/ssl/certs/<NAME>.pem /var/lib/puppet/ssl/certs/ca.pem /var/lib/puppet/ssl/private_keys/<NAME>.pem 

如果您想将<NAME>标记为主机名以外的其他用途,请执行以下操作:

 puppetd --fqdn=<NAME> 

如果运行守护进程,则添加到/etc/puppet/puppet.conf

 [puppetd] certname=<NAME> 

简单的答案:自动签署新的请求。 这当然是危险的,因为你盲目地相信任何连接到你的木偶大师的系统,这是需要手动签名的目的。

 [puppetmasterd] autosign = true 

您也可以指定false和一个文件来确定要签名的密钥。

请参阅Puppet wiki上的configuration参考 。

另一个select是使用像Capistrano这样的工具,在这里你指定puppetmaster节点并创build客户端实例节点,并在任务中:

  • 用Ruby的EC2 API来创build实例节点。
  • 在实例上运行puppetd,连接到服务器。
  • 运行puppetca – 签署实例的请求(因为我们知道实例名称,因为它在上面的创build位中给出)。
  • 在实例上再次运行puppetd,这次证书签名成功连接。

如果您有主机数据库,则可以使用自动签名function。 在您的puppet.conf文件中,在[puppetmasterd]中添加:

 autosign = /path/to/autosign.conf 

然后使用一个crontab来生成这个文件。 自动签名文件只是第一次连接到puppetmaster时自动签名的主机列表。 我使用LDAP来configuration我的木偶主机,所以我的cron看起来像:

 * * * * * root /usr/bin/ldapsearch -x '(objectClass=puppetClient)' cn | /bin/grep ^cn | /bin/sed 's!^cn: !!' > /etc/puppet/autosign.conf 

我确定使用iClassify的人可以写一个查询来做同样的事情。

当然,你需要对networking有一定的信任。 我在EC2上使用这个。 我的puppetmaster服务器在一个只允许来自其他信任组的连接的组中。 如果你的傀儡大师对互联网开放,我不会推荐这样做。

在服务器(puppetmaster)上运行:

 puppetca --generate <NAME> 

然后将以下内容从服务器复制到客户端上:

 /var/lib/puppet/ssl/certs/<NAME>.pem /var/lib/puppet/ssl/certs/ca.pem /var/lib/puppet/ssl/private_keys/<NAME>.pem 

如果您希望具有除主机名以外的其他用途:

 puppetd --fqdn=<NAME> 

如果运行守护进程,则添加到/etc/puppet/puppet.conf

 [puppetd] certname=<NAME>