如何在Ubuntu 18.04均线上设置Puppet Master和Agent

时间:2020-02-23 14:44:46  来源:igfitidea点击:

这是如何在Ubuntu 18.04仿生Beaver Linux系统上安装Puppet Master和Agent的教程。
Puppet是用Ruby和C ++编写的配置管理工具,可自动化应用程序的配置和部署数百到数千个系统。

Puppet服务器/客户端架构

Puppet使用客户端/服务器模型。
服务器在安装了客户端应用程序的系统上执行所有任务的自动化。
Puppet 代理的工作是向Puppet 主人发送事实,并根据某些间隔级别请求目录。
一旦收到目录,Puppet Agent通过检查目录描述的每个资源将其应用于节点。
它使得达到所需状态的相关变化。

Puppet Master的工作是控制配置信息。
每个受管代理节点从主站请求其自己的配置目录。

Puppet上的目录是什么?

目录是描述一个特定系统所需的系统状态的文档。
它列出了需要管理的所有资源,以及这些资源之间的任何依赖项。

Puppet能够在两个阶段配置最终系统:编译目录。
申请目录。

Puppet Master - 代理通信

Puppet代理和主服务器之间的通信由具有客户端验证的加密隧道(HTTPS)。
通过使用像Puppet这样的配置管理系统,作为Sysadmin,我们可以通过删除所有手动重复任务来专注于生产任务。

在Ubuntu 18.04上安装Puppet主人

我们现在潜水到Ubuntu 18.04上的Puppet Master的安装过程。
我的实验室环境如下:

Puppet Master :

Hostname: puppet-server.theitroad.com
IP Address: 192.168.1.2

Puppet代理(用于测试):

Hostname: node-01.theitroad.com
IP Address: 192.168.1.3

设置准备工作

Puppet Master的一个关键要求之一是网络时间同步。
我们将确保我们在Puppet Master Server和工作NTP服务上设置了正确的时区。
我们将稍后将代理节点配置为与Puppet Master同步他们的时间,

第1步:设置正确的时区

Ubuntu 28.04使用TimedAtctl命令行工具船舶,可用于在服务器上设置正确的时区。
使用如下,用正确的时区取代"非洲/内罗毕"。

sudo timedatectl set-timezone Africa/Nairobi

使用以下操作:

$timedatectl
                      Local time: Wed 2019-10-30 08:33:53 EAT
                  Universal time: Wed 2019-10-30 05:33:53 UTC
                        RTC time: Wed 2019-10-30 05:33:54
                       Time zone: Africa/Nairobi (EAT, +0300)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

第2步:设置服务器主机名

使用hostnamectl命令设置服务器主机名

export HOST_NAME="puppet-server.theitroad.com"
sudo hostnamectl set-hostname ${HOST_NAME}
exit

再次登录并确认新主机名

$hostname
puppet-server.theitroad.com

添加正确的主机名和IP地址,我们将稍后使用/etc/hosts文件。

$sudo vim /etc/hosts
192.168.1.2 puppet-server.theitroad.com puppet-server 
192.168.1.3 node-01.theitroad.com node-01

第2步:设置NTP服务器

安装NTP包:

sudo apt-get -y install ntp

如果我们想限制哪些系统可以使用NTP服务器,请将如下方式添加到/etc/ntp.conf中的行

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

用我们受信任的网络替换192.168.1.0。

重新启动NTP服务:

sudo systemctl restart ntp

检查NTP状态:

$sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000

在Ubuntu 18.04上安装Puppet主人

既然所有准备工作都会满足,请继续下载Ubuntu 18.04的PuppetLabs存储库,并在服务器上安装Puppet Master。

$sudo apt-get install wget
$wget https://apt.puppet.com/puppet6-release-bionic.deb
$sudo dpkg -i puppet6-release-bionic.deb
(Reading database … 64484 files and directories currently installed.)
Preparing to unpack puppet6-release-bionic.deb …
Unpacking puppet6-release (6.0.0-5bionic) …
Setting up puppet6-release (6.0.0-5bionic) …

更新APT索引并安装Puppet Master:

sudo add-apt-repository  multiverse
sudo apt update
sudo apt -y install puppetserver

确认已安装的Puppet版本:

$apt policy puppetserver
puppetserver:
   Installed: 6.7.1-1bionic
   Candidate: 6.7.1-1bionic
   Version table:
  *** 6.7.1-1bionic 500
         500 http://apt.puppetlabs.com bionic/puppet amd64 Packages
         500 http://apt.puppetlabs.com bionic/puppet all Packages
         500 http://apt.puppetlabs.com bionic/puppet6 amd64 Packages
         500 http://apt.puppetlabs.com bionic/puppet6 all Packages
         100 /var/lib/dpkg/status

启动并启用PUPPETSERVER服务

sudo systemctl start puppetserver.service
sudo systemctl enable puppetserver.service

在Ubuntu上,应自动启动服务:

$sudo systemctl status puppet-master.service 
● puppet-master.service - Puppet master
Loaded: loaded (/lib/systemd/system/puppet-master.service; enabled; vendor preset
Active: active (running) since Sun 2016-06-17 18:30:27 EAT; 49s ago
Docs: man:puppet-master(8)
Main PID: 13774 (puppet)
Tasks: 3 (limit: 2362)
CGroup: /system.slice/puppet-master.service
└─13774 /usr/bin/ruby /usr/bin/puppet master
....

在Ubuntu 18.04上配置Puppet Master

安装了Puppet Master服务器后,是时候开始配置了。
建议更改Puppet Java进程内存分配基础架构大小。
我将分配我的Puppet Server 1GB的RAM。
这是通过编辑位于/etc/default/puppet-master的环境文件来完成的

$sudo vim /etc/default/puppet-master
JAVA_ARGS="-Xms1024m -Xmx1024m"

更改后重新启动Puppet Server进程。

$sudo systemctl restart puppet-master.service

配置防火墙:

如果我们在Ubuntu 18.04系统上有防火墙,则需要打开Puppet主服务使用的端口8140。
运行以下命令以允许防火墙上的端口:

$sudo ufw allow 8140/tcp

在进行这种变化后,我们不需要重新启动Puppet服务。

创建测试列表

要完成本教程,我们将创建一个简单的Puppet 列表,以在Ubuntu 18.04客户端服务器上安装Apache Web服务器。
首先创建nginx类的文件夹路径:

$ sudo mkdir -p /etc/puppet/modules/nginx/manifests

/etc/puppet/modules目录将托管所有模块。
然后通过创建文件创建nginx资源:

$sudo vim /etc/puppet/modules/nginx/manifests/init.pp

添加以下内容:

class nginx {
  package { 'nginx':
    ensure => installed,
  }
  service { 'nginx':
    ensure  => true,
    enable  => true,
    require => Package['nginx'],
  }
}

接下来,为我们的客户端node -01.theitroad.com创建一个节点文件:

$sudo vim /etc/puppet/manifests/site.pp

以下内容:

node 'node-01.theitroad.com' {
   include nginx
}

请记住使用实际的Puppet客户端的主机名替换Node -01.theitroad.com。

重新启动Puppet Master以获得要加载的新更改。

$sudo systemctl restart puppet-master

安装Puppet代理

既然一切都已设置在主服务器上,请在客户端计算机上安装Puppet Agent。

$sudo apt-get install wget
$wget https://apt.puppetlabs.com/puppet-release-bionic.deb
$sudo dpkg -i puppet-release-bionic.deb 
Selecting previously unselected package puppet-release.
(Reading database ... 100156 files and directories currently installed.)
Preparing to unpack puppet-release-bionic.deb ...
Unpacking puppet-release (1.0.0-2bionic) ...
Setting up puppet-release (1.0.0-2bionic) ...

更新APT索引并安装Puppet Master:

$sudo apt-get install puppet

设置Puppet Server HostName:

$sudo vim  /etc/puppetlabs/puppet/puppet.conf

添加以下行:

[main]
certname = node-01
server = puppet-server

保存配置文件并启动Puppet代理

$sudo systemctl start puppet-agent
$sudo systemctl enable puppet

Puppet服务器上的Puppet客户端签署证书。

由于这是客户端 - 服务器架构,因此主机必须在配置之前批准每个代理节点的证书请求。
使用以下内容检查证书列表:

$sudo puppet cert list
"node-01" (SHA256) 16:21:EE:6A:52:1C:0C:23:53:FD:1C:0F:82:1D:2C:72:E3:A3:DE:8B:B7:F6:9C:BF:77:DC:40:B7:43:77:79:0B

使用命令签名:

$sudo puppet cert sign node-01
Signing Certificate Request for:
  "node-01" (SHA256) 16:21:EE:6A:52:1C:0C:23:53:FD:1C:0F:82:1D:2C:72:E3:A3:DE:8B:B7:F6:9C:BF:77:DC:40:B7:43:77:79:0B
Notice: Signed certificate request for node-01
Notice: Removing file Puppet::SSL::CertificateRequest node-01 at ’/var/lib/puppet/ssl/ca/requests/node-01.pem’

要立即签署多个节点的证书请求,请使用:

$sudo puppet cert sign --all

Puppet Master现在应该能够与代理节点通信并控制它。
通过在代理上运行以下命令来确认:

$sudo puppet agent --test