我有一台 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 就足以拉下新的证书。