在CentOS 8/RHEL 8上安装Puppet Master和Agent

时间:2020-02-23 14:31:15  来源:igfitidea点击:

既然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代理。