从一个傀儡大师转变为另一个

从一个傀儡大师转变为另一个

我有一台 Puppet 主机,它一直在从远程 Puppetmaster 提取数据,现在我想将此主机转变为 Puppetmaster。主机(作为 Puppet 代理)已配置完毕并交换了 SSL 证书。

现在有一个新的 puppetmaster(在同一台主机上),但我无法设置它。我已经将 puppet.conf 配置为指向新服务器(同一台主机,但使用 DNS 名称),但尚未配置 fileserver.conf。puppetmaster 使用 Passenger 和 Apache。

该系统是带有 Puppet 2.6.3 的 Ubuntu Lucid Lynx,尝试启动 puppetmaster 时得到以下响应:

# service puppetmaster start
 * Starting puppet master
Could not prepare for execution: Retrieved certificate does not match private key; please remove certificate from server and regenerate it with the current key
   ...fail!

包中的 puppet-passenger 配置给出了以下错误:

# dpkg --configure puppetmaster-passenger
Setting up puppetmaster-passenger (2.6.3-0ubuntu1~lucid1) ...
Module ssl already enabled
Site puppetmaster already enabled
 * Restarting web server apache2
Syntax error on line 16 of /etc/apache2/sites-enabled/puppetmaster:
SSLCARevocationFile: file '/var/lib/puppet/ssl/ca/ca_crl.pem' does not exist or is empty
   ...fail!
invoke-rc.d: initscript apache2, action "restart" failed.
dpkg: error processing puppetmaster-passenger (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 puppetmaster-passenger

我查看了 /var/lib/puppet/ssl,但不知道从哪里开始 - 删除或更改哪些证书,保留哪些证书。我没有看到任何有关 SSL 证书的描述。我不知道如何制作 /var/lib/puppet/ssl/ca/ca_crl.pem。

此过程是设置双 puppetmaster 配置的一部分。两者都将处于活动状态,并在两个不同的区域(通过被认为是“昂贵”的链接连接)中表示相同的数据。因此,两个 puppetmaster 将具有相同的信息(可能由 rsync 复制)并充当“昂贵”链接上其一侧的主机的 puppetmaster,偶尔或根据需要交换数据。

我找到了这个线在 puppet-users 中,但它没有描述如何设置,也没有描述哪些 SSL 证书是哪些。

添加更多信息:运行puppet master提供以下信息:

# puppet master
Could not prepare for execution: Retrieved certificate does not match private key; please remove certificate from server and regenerate it with the current key

如果我知道证书在哪里就好了。我确信旧的服务器配置干扰了新的安装,但不知道如何删除该配置。

答案1

我不想影响任何人可能的答案——也许有一种更干净的方法来实现我的目标。

这是我所做的:我删除了 /var/lib/puppet 中的所有内容:

cd /var/lib/puppet
rm -rf *

由于我使用的是包管理器,因此我查找了该目录中任何包所拥有的文件 - 但一无所获。对于 Debian 和 dpkg,操作如下:

dpkg -S * */* */*/*

由于没有找到拥有这些文件的软件包,这表明这些文件是在运行中创建的,并且由于 /var/lib/puppet 由一个软件包(puppet-common)拥有,所以我将空目录留在原处。

然后我运行了 puppetmaster(实际上是一个错误,因为要使用 Passenger),并重新创建了所有相应的文件。在停止 puppetmaster、配置 Passenger、配置 /etc/default/puppetmaster 并“重新启动”puppetmaster(悄无声息地失败)后,一切似乎又恢复正常了。

puppet agent在服务器上运行会拉下适当的证书并使一切顺利。

答案2

如果您不关心保留用于审计或其他目的的认证,那么完全可以删除 /var/lib/puppet/ssl 目录,因为 puppet 将重新创建其所需的一切。

如果您需要维护并且想要切换,您需要深入研究 pki 的世界并重新颁发证书、重新部署公共证书等。在您的情况下,当您与新服务器通信时,仅删除旧 puppetmaster 的 cacert 就足以拉下新的证书。

相关内容