在 Ubuntu 20.04|18.04 上安装 Puppet Master 和 Agent在 Ubuntu 20.04|18.04 上安装 Puppet Master 和 Agent在 Ubuntu 20.04|18.04 上安装 Puppet Master 和 Agent在 Ubuntu 20.04|18.04 上安装 Puppet Master 和 Agent
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

在 Ubuntu 20.04|18.04 上安装 Puppet Master 和 Agent

发表 admin at 2025年2月28日
类别
  • 未分类
标签

这是有关如何在 Ubuntu 20.04|18.04 Linux 系统上安装 Puppet Master 和 Agent 的指南。 Puppet 是一种用 Ruby 和 C++ 编写的配置管理工具,可帮助您跨数百到数千个系统自动配置和部署应用程序。该软件遵循 Apache 许可证。

Puppet 在 Linux、Unix 和 Windows 环境上运行。截至撰写本文时,Puppet 的最新版本是7.2

Puppet 服务器/客户端架构

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

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

Puppet 中的目录是什么?

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

Puppet 能够分两个阶段配置终端系统:

  1. 编制目录。
  2. 应用目录。

Puppet Master – 代理沟通

Puppet 代理和主服务器之间的通信通过加密隧道 (HTTPS) 进行,并进行客户端验证。通过使用 Puppet 等配置管理系统,作为系统管理员,您可以消除所有手动重复性任务,从而专注于生产任务。

在 Ubuntu 20.04|18.04 上安装 Puppet Master

现在让我们深入了解 Puppet master 在 Ubuntu 20.04 | 18.04 上的安装过程。我的实验室环境如下:

木偶大师:

Hostname: puppetmaster
IP Address: 192.168.1.2

傀儡代理(用于测试):

Hostname: puppetclient
IP Address: 192.168.1.3

设置先决条件

Puppet Master 的关键要求之一是网络时间同步。我们将确保在 Puppet 主服务器上设置正确的时区以及有效的 NTP 服务。稍后我们将配置 Agent 节点以将其时间与 Puppet Master 同步,

第 1 步:设置正确的时区

Ubuntu 18.04+ 附带 timedatectl 命令行工具,您可以使用它在服务器上设置正确的时区。像下面这样使用它,将“非洲/内罗毕”替换为您的正确时区。

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="puppetmaster"
sudo hostnamectl set-hostname ${HOST_NAME}

再次登录并确认新主机名

$ hostname
puppetmaster

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

$ sudo vim /etc/hosts
[puppet-master-ip] puppetmaster puppet
[puppet-client-ip] puppetclient

步骤 2:设置 Chrony NTP 服务器

安装ntp包:

sudo apt remove ntp
sudo apt -y install chrony

如果您想限制哪些系统可以使用您的 ntp 服务器,请将如下行添加到 /etc/chrony/chrony.conf:

$ sudo vim /etc/chrony/chrony.conf
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

将192.168.1.0替换为您信任的网络。

重启ntp服务:

sudo systemctl restart chronyd

检查ntp状态:

$ sudo chronyc sources
210 Number of sources = 8
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* chilipepper.canonical.com     2   6    17     2   +991us[ +836us] +/-   57ms
^+ pugot.canonical.com           2   6    17     2  +1049us[+1049us] +/-   61ms
^+ golem.canonical.com           2   6    17     3   +153us[-2656ns] +/-   63ms
^+ alphyn.canonical.com          2   6    17     3   +589us[ +433us] +/-   66ms
^+ pool-71-168-219-127.cmdn>     1   6    17     3  +1249us[+1093us] +/-   54ms
^+ smtp.us.naz.com               2   6    17     3  -2583us[-2738us] +/-   67ms
^+ mail.masters-of-cloud.de      2   6    17     2  +1293us[+1137us] +/-   49ms
^+ ns4.turbodns.co.uk            2   6    17     2  +4616us[+4460us] +/-  103ms

在 Ubuntu 20.04|18.04 上安装 Puppet Master

现在满足所有先决条件,继续下载 Ubuntu 的 PuppetLabs 存储库并在服务器上安装 Puppet master。

Ubuntu 20.04:

sudo apt update
curl -O https://apt.puppet.com/puppet-release-focal.deb
sudo apt install ./puppet-release-focal.deb

Ubuntu 18.04:

sudo apt update
sudo apt install wget
curl -O https://apt.puppet.com/puppet6-release-bionic.deb
sudo apt install ./puppet6-release-bionic.deb

更新 apt 索引并安装 puppet master:

sudo apt update
sudo apt install puppetserver

同意开始安装:

...
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  ca-certificates-java fontconfig-config fonts-dejavu-core java-common libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libfontconfig1
  libjpeg-turbo8 libjpeg8 liblcms2-2 libnspr4 libnss3 libpcsclite1 libxi6 libxrender1 libxtst6 net-tools openjdk-8-jre-headless puppet-agent x11-common
Suggested packages:
  default-jre cups-common liblcms2-utils pcscd libnss-mdns fonts-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho fonts-wqy-microhei fonts-wqy-zenhei
  fonts-indic
The following NEW packages will be installed:
  ca-certificates-java fontconfig-config fonts-dejavu-core java-common libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libfontconfig1
  libjpeg-turbo8 libjpeg8 liblcms2-2 libnspr4 libnss3 libpcsclite1 libxi6 libxrender1 libxtst6 net-tools openjdk-8-jre-headless puppet-agent puppetserver
  x11-common
0 upgraded, 23 newly installed, 0 to remove and 66 not upgraded.
Need to get 118 MB of archives.
After this operation, 329 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

确认安装的Puppet版本:

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

启动并启用 puppetserver 服务

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

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

$ systemctl status puppetserver.service 
systemctl status puppetserver
● puppetserver.service - puppetserver Service
     Loaded: loaded (/lib/systemd/system/puppetserver.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-06-28 14:31:27 EAT; 33s ago
   Main PID: 6131 (java)
      Tasks: 45 (limit: 4915)
     Memory: 968.2M
     CGroup: /system.slice/puppetserver.service
             └─6131 /usr/bin/java -Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger -XX:OnOutOfMemoryError="kill -9 %p" -XX:ErrorFi>

Jun 28 14:31:07 puppet-server.computingforgeeks.com systemd[1]: Starting puppetserver Service...
Jun 28 14:31:27 puppet-server.computingforgeeks.com systemd[1]: Started puppetserver Service.

在 Ubuntu 20.04|18.04 上配置 Puppet Master

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

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

进行更改后重新启动 Puppet 服务器进程。

sudo systemctl restart  puppetserver

配置防火墙:

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

sudo ufw allow 8140/tcp

配置PATH环境

在 bashrc 文件中添加以下行:

$ vim ~/.bashrc
 export PATH=$PATH:/opt/puppetlabs/bin

获取 ~/.bashrc 文件:

source ~/.bashrc

确认您当前的 PATH 设置:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/puppetlabs/bin

在受管节点上安装 Puppet Agent

在要使用 Puppet 进行自动化的节点上安装 puppet Agent:

Ubuntu 20.04:

sudo apt update
curl -O https://apt.puppet.com/puppet-release-focal.deb
sudo apt install ./puppet-release-focal.deb
sudo apt update
sudo apt install  puppet-agent

Ubuntu 18.04:

sudo apt update
sudo apt install wget
curl -O https://apt.puppet.com/puppet6-release-bionic.deb
sudo apt install ./puppet6-release-bionic.deb
sudo apt update
sudo apt install  puppet-agent

打开 /etc/hosts 文件并设置服务器和此代理的名称:

$ sudo vim /etc/hosts 
[puppet-master-ip] puppetmaster puppet
[puppet-client-ip] puppetclient

编辑 Puppet Agent 配置文件并添加主服务器 DNS 备用名称:

$ sudo vim /etc/puppetlabs/puppet/puppet.conf
[server]
vardir = /opt/puppetlabs/server/data/puppetserver
logdir = /var/log/puppetlabs/puppetserver
rundir = /var/run/puppetlabs/puppetserver
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid
codedir = /etc/puppetlabs/code
dns_alt_names=puppetmaster,puppetserver

还配置主要部分,如下所示:

$ sudo vim /etc/puppetlabs/puppet/puppet.conf
[main]
server = puppetmaster
certname = puppetclient
environment = production
runinterval = 1h

现在启动 Puppet 服务:

sudo systemctl start puppet
sudo systemctl enable puppet

在 Puppet Master 节点上列出所有可用的证书:

$ sudo /opt/puppetlabs/bin/puppetserver ca list --all
Signed Certificates:
    puppetmaster       (SHA256)  88:75:01:73:8A:CE:50:1D:A1:55:6F:00:47:5C:0B:87:F5:AD:5E:B8:7F:70:F6:A7:7F:C4:92:67:35:07:3E:32	alt names: ["DNS:puppetmaster", "DNS:puppetmaster", "DNS:puppetserver", "DNS:puppetmaster"]	authorization extensions: [pp_cli_auth: true]
    puppetclient       (SHA256)  71:80:13:23:4F:30:18:32:05:01:80:52:F7:C2:48:BE:7B:89:AE:E6:DD:87:C4:6B:4C:4F:07:47:7D:D8:14:A2	alt names: ["DNS:puppet", "DNS:puppetclient"]	authorization extensions: [pp_cli_auth: true]

签署任何待处理的证书:

sudo /opt/puppetlabs/bin/puppetserver ca sign --all

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

$ sudo /opt/puppetlabs/bin/puppet agent --test
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for puppetmaster
Info: Applying configuration version '1624883476'
Notice: Applied catalog in 0.01 seconds

将 Puppet 二进制文件夹添加到 ` PATH

Puppet 二进制文件位于 /opt/puppetlabs/bin 中。默认情况下,此目录不在您的 PATH 中。可以通过以下方式确认:

$ ls /opt/puppetlabs/bin/
facter  hiera  puppet  puppetserver

$ which puppet
/usr/bin/which: no puppet in (/home/vagrant/.local/bin:/home/vagrant/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin)

将其添加到路径:

$ vim ~/.bashrc
export PATH=$PATH:/opt/puppetlabs/bin

$ source ~/.bashrc
$ which puppet
/opt/puppetlabs/bin/puppet

使用 Puppet 配置管理工具实现基础设施管理和应用程序部署的自动化。

©2015-2025 Norria support@norria.com