在CentOS 8/RHEL 8上安装Puppet Master和Agent
既然CentOS 8和RHEL 8 Linux发行版已可用于生产,如何在CentOS 8/RHEL 8上安装Puppet Master和Puppet Agent? Puppet是Linux,Unix和Windows系统中领先的,被广泛采用的自动化和配置管理引擎之一。 Puppet使用代理主控或者客户端-服务器体系结构,但是可以实现独立的体系结构。
Puppet允许我们自动化团队如何强制执行状态,保护和更快交付基础结构。如果我们需要几天的时间才能将用户添加到系统,安装开发人员所需的软件包或者更新服务器配置以匹配所需状态,那么欢迎使用Puppet。
Puppet服务器和代理程序软件包分布在YUM存储库中,Puppet支持和更新该存储库。使用我们的指南在CentOS 8/RHEL 8 Linux系统上安装Puppet Master和Puppet Agent。
设置要求
这些是最低硬件要求。2CentOS 8/RHEL 8 Linux发行版Master&Agent Master上的4GB RAM; Master上的2vcpus至少10GB磁盘空间。
满足硬件和软件要求后,请按照以下步骤在RHEL 8/CentOS 8上安装Puppet。
更新系统
从更新的Linux系统开始安装。
sudo dnf -y update
由于升级完成后有时会安装内核更新,因此重新启动计算机是一种很好的做法。
sudo reboot
添加Puppet YUm存储库
从项目官方YUM存储库中安装Puppet软件包。恶意添加EPEL存储库和Puppet存储库。
sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo dnf -y install https://yum.puppetlabs.com/puppet-release-el-8.noarch.rpm
在CentOS 8/RHEL 8上安装Puppet Master
Puppet主/服务器计算机上安装的软件包与受管节点(代理)上安装的软件包不同。 Puppet Master节点上所需的软件包是puppetserver
。通过运行以下命令来安装此软件包:
sudo dnf -y install puppetserver
所需的依赖项(如Java)将自动安装。
安装后,不要启动服务,只需打开防火墙上的服务端口即可。
sudo firewall-cmd --add-port=8140/tcp --permanent sudo firewall-cmd --reload
在CentOS 8/RHEL 8上配置Puppet主服务器
在主服务器上安装Puppet之后,即可完成配置。
设置正确的服务器主机名:
sudo hostnamectl set-hostname puppetmaster.theitroad.local --static sudo hostnamectl set-hostname puppetmaster.theitroad.local --transient logout
将服务器主机名和IP添加到/etc/hosts文件。
$sudo vi /etc/hosts 10.10.1.152 puppetmaster.theitroad.local puppetmaster
登录并确认主机名配置。
$hostnamectl Static hostname: puppetmaster.theitroad.local Icon name: computer-vm Chassis: vm Machine ID: c0d6dc5d688e4304baca26862df123cc Boot ID: f3b99e71ee7743c8b9a67df4c82fa364 Virtualization: kvm Operating System: CentOS Linux 8 (Core) CPE OS Name: cpe:/o:centos:centos:8 Kernel: Linux 4.18.0-80.7.1.el8_0.x86_64 Architecture: x86-64
设置正确的时间/NTP
设置时区。
sudo timedatectl set-timezone Africa/Nairobi
然后配置NTP。
如何在RHEL 8/CentOS 8上使用Chrony配置NTP客户端
设置内存限制
Puppet Java进程的默认内存分配为2gb,可以在/etc/sysconfig/puppetserver
文件中进行更改。将2g替换为要分配给Puppet Server的内存量。
下面的示例将限制设置为1GB。
$sudo vi /etc/sysconfig/puppetserver ...... JAVA_ARGS="-Xms1g -Xmx1g ...."
设置Puppet主DNS名称
创建Puppet主证书时,必须包含代理节点尝试与之联系的每个DNS名称。
在[master]块部分下添加dns_alt_names行。
$sudo vi /etc/puppetlabs/puppet/puppet.conf [master] dns_alt_names = puppetmaster,puppetmaster.theitroad.local,puppetmaster01 .....
添加带有服务器名和默认环境的[main]部分。
[main] certname = puppetmaster.theitroad.local server = puppetmaster.theitroad.local environment = production
创建CA证书和Puppet主证书
更新DNS名称后,运行以下命令以生成具有适当DNS名称的CA证书和Puppet主证书。
$sudo su # puppetserver ca setup Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/ca
启动并设置puppetserver服务以在系统启动时启动。
sudo systemctl enable --now puppetserver
如果正确完成了安装和配置,则应启动该服务。
$systemctl status puppetserver ● puppetserver.service - puppetserver Service Loaded: loaded (/usr/lib/systemd/system/puppetserver.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2019-10-04 13:03:25 EAT; 1min 3s ago Process: 10126 ExecStart=/opt/puppetlabs/server/apps/puppetserver/bin/puppetserver start (code=exited, status=0/SUCCESS) Main PID: 10135 (java) Tasks: 39 (limit: 4915) Memory: 680.6M CGroup: /system.slice/puppetserver.service └─10135 /usr/bin/java -Xms1g -Xmx1g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger -XX:OnOutOfMemoryError=kill -9 %p> Oct 04 13:02:56 puppetmaster.theitroad.local systemd[1]: Starting puppetserver Service… Oct 04 13:03:25 puppetmaster.theitroad.local systemd[1]: Started puppetserver Service.
在CentOS 8/RHEL 8上配置Puppet代理
在要管理的第二台服务器上,安装Puppet Agent。
sudo dnf -y install https://yum.puppetlabs.com/puppet-release-el-8.noarch.rpm sudo dnf -y install puppet-agent logout
将Puppet服务器的DNS名称和IP添加到/etc/hosts文件。
$sudo vi /etc/hosts 10.10.1.152 puppetmaster.theitroad.local puppetmaster
配置Puppet代理
添加带有服务器名和默认环境的[main]部分。
[main] certname = puppet-agent.novalocal server = puppetmaster.theitroad.local environment = production
检查从代理到Puppet主服务器的连接。
$puppet agent --test --ca_server=puppetmaster.theitroad.local
输出应类似于以下内容。
登录到主服务器并接受来自Puppet Client的证书。
# puppetserver ca list Requested Certificates: puppet-agent.novalocal (SHA256) 21:81:3B:11:7A:A7:9D:37:21:5C:23:91:60:5D:CF:BB:4F:BC:61:1E:C8:9F:28:5F:93:53:D2:A6:31:21:B7:27
签署证书。
# puppetserver ca sign --certname puppet-agent.novalocal Successfully signed certificate request for puppet-agent.novalocal # puppetserver ca list No certificates to list
在Puppet Master上创建测试列表
创建一个新的Puppet文件。
sudo vi /etc/puppetlabs/code/environments/production/manifests/mytest.pp
添加以下内容。
package { 'nginx': provider => yum, ensure => installed, } file { '/tmp/mypuppettest.txt': ensure => file, content => 'This is my puppet testing file.', }
在客户端上,运行:
sudo systemctl restart puppet
可以在本地运行p列表。
# puppet apply /etc/puppetlabs/code/environments/production/manifests/mytest.pp Notice: Compiled catalog for puppetmaster.theitroad.local in environment production in 0.41 seconds Notice: /Stage[main]/Main/Package[nginx]/ensure: created Notice: Applied catalog in 3.95 seconds
我们已在CentOS/RHEL Linux服务器上安装了Puppet Master和Configured Puppet代理。