我运行了puppet cert clean --all
,以为它只会清除尚未签名的证书。大约有 300 个节点依赖于 Puppet Master。据我所知,Puppet Agent 仍可在它们上运行,但我认为这是因为某处有证书的缓存副本。
有什么方法可以纠正这种情况而不需要手动登录 300 个不同的服务器?
谢谢
编辑:我应该提到,/var/lib/puppet 由于某种原因没有被备份。
答案1
如果他们仍在签入,那可能是因为 Puppet Master 没有检查 CRL;他们可能不再存在于主服务器上的证书清单中,但他们仍由 CA 签名。撤销胜过这一点,但撤销似乎并没有阻止他们的代理运行(验证他们不只是使用缓存目录puppet agent --test
)。
因此,你应该能够进行一些创造性的配置管理,让他们注册新的证书 - 比如,也许是这样的......
exec { 'ssl hackery':
command => '/bin/mv /var/lib/puppet/ssl /var/lib/puppet/ssl_old',
creates => '/var/lib/puppet/ssl_old',
}
(在触及所有节点之前,请在单个主机上彻底测试,否则您确实会触及每个节点!)
答案2
循环登录 300 个不同的服务器?
for host in `cat allmypuppetboxes`; do
ssh -o ConnectTimeout=5 root@$host '/etc/init.d/puppet stop ; rm -rf /var/lib/puppet/ssl /var/lib/puppet/ssl.expired ; puppet agent --server puppet.example.com --test --waitforcert 5'
done