意外撤销了所有 Puppetmaster 证书

意外撤销了所有 Puppetmaster 证书

我运行了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

相关内容