技术教程 · 2019年12月4日 0

如何在CentOS 8上设置Puppet Master和Agent

Puppet是一个开源配置管理工具和服务器自动化框架。Puppet可以在类似Unix的操作系统以及Microsoft Windows系统上运行。它使您可以在一台主服务器上管理和执行管理任务以及数百个系统的配置。

在本教程中,我将向您介绍如何在CentOS 8上安装Puppet。我将CentOS 8服务器安装和配置为一个Puppet“主”,另一个作为“代理”。

先决条件

  • 2个或更多CentOS 8服务器
  • 根特权

我们要做什么:

  • 人偶预安装
  • 安装和配置Puppet服务器
  • 安装和配置Puppet代理
  • 验证人偶代理配置
  • 创建第一个人偶清单

步骤1-木偶预安装

在第一步中,我们将为木偶安装准备主服务器和代理服务器。我们将设置服务器的主机和FQDN,设置NTP服务器,并为CentOS 8服务器添加人偶存储库。

设置主机名

首先,我们将为两台服务器设置主机和FQDN。人偶主服务器将具有主机名“ master”,其FQDN为“ master.hakase-labs.io”,而代理服务器将具有主机名“ agent01”,其FQDN为“ agent01.hakase-labs.io”。

使用下面的“ hostnamectl”命令设置主机名。

hostnamectl set-hostname hostname

之后,编辑“ / etc / hosts”文件以配置FQDN服务器。

vim /etc/hosts

自行更改IP地址和域名并粘贴到其中。

10.5.5.21   master.hakase-labs.io   master
10.5.5.22   agent01.hakase-labs.io  agent01

保存并关闭。

现在,重新启动以主机命名的服务以应用新的主机名和FQDN。

systemctl restart systemd-hostnamed

然后,使用以下命令检查主机名和FQDN。

hostname
hostname -f

您将获得一个新的主机名,并且FQDN已配置并应用到系统。

设置服务器主机名

设置NTP服务器

对于NTP服务器,我们将对服务器使用“ chrony”。

使用下面的dnf命令安装chrony。

dnf install chrony

之后,使用vim编辑器编辑chrony配置’/etc/chrony.conf’。

vim /etc/chrony.conf

现在,将池服务器更改为您所在国家最近的池。您可以使用“ https://www.pool.ntp.org/zone/COUNTRYID ” 检查可用的池NTP 。

复制您所在国家/地区的所有可用NTP服务器,然后粘贴到“ chrony.conf”文件中,如下所示。

server 0.id.pool.ntp.org iburst
server 1.id.pool.ntp.org iburst
server 2.id.pool.ntp.org iburst
server 3.id.pool.ntp.org iburst

保存并关闭。

现在启动chronyd服务并将其添加到启动引导时间。

systemctl start chronyd
systemctl enable chronyd

NTP服务器配置已完成。

设置日期和时间

为CentOS 8添加人偶存储库

对于木偶存储库CentOS 8服务器,您可以使用rpm命令手动安装它,如下所示。

sudo rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm

之后,使用下面的dnf命令检查系统上所有可用的存储库。

dnf repolist

并且您将获得已将Puppet存储库添加到CentOS 8系统。

添加人偶库

禁用SELinux

要禁用SELinux,可以使用vim编辑器编辑’/ etc / sysconfig / selinux’配置。

vim /etc/sysconfig/selinux

现在,将“ SELINUX”的值配置更改为“禁用”。

SELINUX=disabled

保存并关闭,然后重新启动服务器。

sudo reboot

再次登录后,使用以下命令检查SELinux的状态。

sestatus

您将获得SELinux禁用状态。

第2步-安装和配置Puppetserver

在此步骤中,我们将在主节点上安装并配置puppetserver。

使用下面的dnf命令安装puppetserver。

sudo dnf install puppetserver

之后,我们需要编辑puppetserver的“初始设置”,并根据我们拥有的RAM更改内存分配。

使用vim编辑器编辑位于’/ etc / sysconfig / puppetserver’中的puppetserver初始化设置。

vim /etc/sysconfig/puppetserver

现在,根据您的RAM,更改“ JAVA_ARGS”配置以进行内存分配。

JAVA_ARGS="-Xms1g -Xmx1g ...."

保存并关闭。

接下来,转到“ / etc / puppetlabs”目录并编辑人偶配置文件“ puppet.conf”。

cd /etc/puppetlabs/
vim puppet/puppet.conf

在主配置下,使用主服务器的FQDN定义DNS备用名称。

[master]
....
dns_alt_names=master.hakase-labs.io,puppet
....

之后,按以下方式定义人偶主服务器配置。

[main]
certname = master.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h

保存并关闭。

现在,将puppetserver服务添加到启动引导时间,然后启动该服务。

systemctl enable puppetserver
systemctl start puppetserver

puppetserver已启动并在具有默认TCP端口’8140’的CentOS 8服务器上运行。

使用以下命令将puppetserver端口“ 8140”添加到firewalld。

firewall-cmd --add-port=8140/tcp --permanent
firewall-cmd --reload

结果,木偶主模板的安装和配置已成功完成。

配置防火墙

第3步-安装和配置Puppet代理

在安装了Puppet主服务器’master.hakase-labs.io’之后,我们将在’agent01’服务器上安装一个puppet代理。

登录到“ agent01”服务器,并使用下面的dnf命令安装puppet-agent软件包。

sudo dnf install puppet-agent

之后,转到“ / etc / puppetlabs”目录,并使用vim编辑器编辑配置文件“ puppet.conf”。

cd /etc/puppetlabs/
vim puppet/puppet.conf

自行更改“证书名”和“服务器”配置,然后粘贴到该配置。

[main]
certname = agent01.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h

保存并关闭。

接下来,启动puppet服务,并使用以下命令将Puppet代理注册到主服务器。

/opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

您将得到如下结果。

启动人偶服务

现在,puppet代理已启动并正在运行,它正在尝试注册到Puppet主服务器。

现在返回到Puppet主服务器,并检查未决的证书请求。

/opt/puppetlabs/bin/puppetserver ca list

您将在列表中获得“ agent01.hakase-labs.io”证书。

现在,使用以下命令签署“ agent01”证书。

/opt/puppetlabs/bin/puppetserver ca sign --certname agent01.hakase-labs.io

up代理现已注册到主服务器。

注册人偶代理

步骤4-验证人偶代理配置

现在,验证Puppet代理配置,并使用以下命令测试Puppet代理与主服务器之间的连接。

/opt/puppetlabs/bin/puppet agent --test

您将得到如下结果。

测试p代理

结果,Puppet代理从the主机中提取了配置并将其应用到服务器,而没有任何错误。

第5步-创建第一个清单

在此阶段,已经完成了用于master和agent的Puppet的安装和配置。

在这一步中,我们将通过创建用于安装httpd软件包的第一个p清单来测试设置。

转到“ / etc / puppetlabs / code / environments / production / manifests”目录,并创建第一个木偶清单文件“ httpd.pp”。

cd /etc/puppetlabs/code/
cd environments/production/manifests

vim httpd.pp

粘贴以下配置。

node 'agent01.hakase-labs.io' {
    package { 'httpd':
        ensure  => "installed",
    }
    service { 'httpd':
        ensure => running,
    enable => true
    }
}

保存并关闭。

创建清单

现在转到Puppet代理节点“ agento01”并运行以下命令。

/opt/puppetlabs/bin/puppet agent --test

结果将显示如下。

测试p代理

Puppet代理从Puppet主服务器中提取了新配置,用于安装httpd软件包并启动httpd服务。

在“ agent01”节点上,检查httpd服务状态并检查HTTP端口“ 80”

systemctl status httpd
netstat -plntu

您将使用默认的HTTP端口“ 80”在“ agent01”服务器上启动并运行httpd服务。httpd软件包已通过我们在顶部创建的木偶清单安装。

检查httpd状态

结果,在CentOS 8服务器上的Puppet主服务器和代理安装和配置已成功完成。

参考