如何在Ubuntu 18.04均线上设置Puppet Master和Agent
这是如何在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