Ubuntu系统下自动化部署工具puppet的安装和使用教程

2020-02-03 13:52:53刘景俊

在开始之前,我们需要通过停止 apache 服务来让 puppet 主控服务器停止运行。

复制代码
# systemctl stop apache2

4. 使用 Apt 工具锁定主控服务器的版本
现在已经安装了 3.8.1 版的 puppet,我们锁定这个版本不让它随意升级,因为升级会造成配置文件混乱。 使用 apt 工具来锁定它,这里我们需要使用文本编辑器来创建一个新的文件 /etc/apt/preferences.d/00-puppet.pref:

复制代码
# nano /etc/apt/preferences.d/00-puppet.pref

在新创建的文件里面添加以下内容:

复制代码
# /etc/apt/preferences.d/00-puppet.pref
Package: puppet puppet-common puppetmaster-passenger
Pin: version 3.8*
Pin-Priority: 501

这样在以后的系统软件升级中, puppet 主控服务器将不会跟随系统软件一起升级。

5. 配置 Puppet 主控服务器
Puppet 主控服务器作为一个证书发行机构,需要生成它自己的证书,用于签署所有代理的证书的请求。首先我们要删除所有在该软件包安装过程中创建出来的 ssl 证书。本地默认的 puppet 证书放在 /var/lib/puppet/ssl。因此我们只需要使用 rm 命令来整个移除这些证书就可以了。

复制代码
# rm -rf /var/lib/puppet/ssl

现在来配置该证书,在创建 puppet 主控服务器证书时,我们需要包括代理节点与主控服务器沟通所用的每个 DNS 名称。使用文本编辑器来修改服务器的配置文件 puppet.conf:

复制代码
# nano /etc/puppet/puppet.conf

输出的结果像下面这样

复制代码
[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
templatedir=$confdir/templates
[master]
# These are needed when the puppetmaster is run by passenger
# and can safely be removed if webrick is used.
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY

在这我们需要注释掉 templatedir 这行使它失效。然后在文件的 [main] 小节的结尾添加下面的信息。

复制代码
server = puppetmaster
environment = production
runinterval = 1h
strict_variables = true
certname = puppetmaster
dns_alt_names = puppetmaster, puppetmaster.example.com

编辑完成后保存退出。

使用下面的命令来生成一个新的证书。

复制代码
# puppet master --verbose --no-daemonize
Info: Creating a new SSL key for ca
Info: Creating a new SSL certificate request for ca
Info: Certificate Request fingerprint (SHA256): F6:2F:69:89:BA:A5:5E:FF:7F:94:15:6B:A7:C4:20:CE:23:C7:E3:C9:63:53:E0:F2:76:D7:2E:E0:BF:BD:A6:78