云网牛站
所在位置:首页 > Linux云服务器 > 在Ubuntu 18.04系统上安装和配置Puppet master和agent的方法

在Ubuntu 18.04系统上安装和配置Puppet master和agent的方法

2019-02-24 11:20:30作者:陈雄稿源:云网牛站

本文介绍在Ubuntu 18.04系统上安装和配置Puppet master和agent的方法。Puppet是一个用Ruby和C++编写的配置管理工具,可帮助你在数百到数千个系统中自动配置和部署应用程序,该软件属于Apache许可证,Puppet master的工作是控制配置信息,它的一个关键要求是网络时间同步,我们将确保在Puppet主服务器上设置正确的时区以及正常工作的NTP服务,我的实验室环境如下。

Puppet Master:

主机名:puppet-server.computingforgeeks.com

IP地址:192.168.1.2

Puppet Agent(用于测试):

主机名:node-01.computingforgeeks.com

IP地址:192.168.1.3

 

一、设置正确的时区

Ubuntu 18.04附带timedatectl命令行工具,可用于在服务器上设置正确的时区,比如:

$ sudo timedatectl set-timezone Asia/Shanghai

使用timedatectl命令来确认更改,重要的参数如下:

Time zone: Asia/Shanghai

System clock synchronized: yes

systemd-timesyncd.service active: yes

RTC in local TZ: no

参考:在Ubuntu 18.04终端中修改时区的方法

 

二、设置服务器主机名

使用hostnamectl命令设置服务器主机名,比如:

$ sudo hostnamectl set-hostname puppet-server.computingforgeeks.com

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

# echo "192.168.1.2 puppet-server.computingforgeeks.com puppet-server " >> /etc/hosts

# echo "192.168.1.3 node-01.computingforgeeks.com node-01" >> /etc/hosts

 

三、设置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状态,运行ntpq -p命令:

在Ubuntu 18.04系统上安装和配置Puppet master和agent的方法

参考:在Linux系统下安装配置Chrony,使其成为NTP客户端替代品

 

四、在Ubuntu 18.04上安装Puppet Master

现在已满足所有安装的要求,继续下载Ubuntu 18.04的PuppetLabs存储库并在服务器上安装Puppet master:

$ 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 puppetmaster

确认已安装的Puppet版本:

$ apt policy puppetmaster

puppetmaster:

Installed: 5.4.0-2ubuntu3

Candidate: 5.4.0-2ubuntu3

Version table:

*** 5.4.0-2ubuntu3 500

500 http://mirrors.digitalocean.com/ubuntu bionic/universe amd64 Packages

500 http://mirrors.digitalocean.com/ubuntu bionic/universe i386 Packages

100 /var/lib/dpkg/status

在Ubuntu系统上,应该自动启动服务,运行sudo systemctl status puppet-master.service命令:

在Ubuntu 18.04系统上安装和配置Puppet master和agent的方法

 

五、在Ubuntu 18.04上配置Puppet Master

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

# vim /etc/default/puppet-master

JAVA_ARGS="-Xms1024m -Xmx1024m"

进行更改后重新启动puppet服务器进程:

$ sudo systemctl restart puppet-master.service

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

$ sudo ufw allow 8140/tcp

参考:Debian、Ubuntu、Linux Mint系统中的UFW防火墙入门教程

进行此更改后,你无需重新启动Puppet服务。

再创建测试清单。

为了完成本文内容,我们将在Ubuntu 18.04客户端服务器上创建一个简单的Puppet清单来安装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.computingforgeeks.com创建一个节点文件:

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

具有以下内容:

node 'node-01.computingforgeeks.com' {

include nginx

}

请记住将node-01.computingforgeeks.com替换为你的实际Puppet客户端的主机名。

重新启动puppet master以获取要加载的新更改:

$ sudo systemctl restart puppet-master

 

六、安装Puppet Agent

现在已在主服务器上设置了所有内容,请在客户端计算机上安装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服务器主机名:

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

添加以下行:

[main]

certname = node-01

server = puppet-server

保存配置文件并启动puppet agent:

$ sudo systemctl start puppet-agent

$ sudo systemctl enable puppet

 

七、在Puppet Server上为Puppet Client签名证书

由于这是客户端-服务器体系结构,因此主服务器必须先为每个代理节点批准证书请求,然后才能对其进行配置,检查证书列表使用:

$ 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

使用命令对其进行签名:

$ 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

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

 

相关主题

Puppet是什么?为什么Unix/Linux管理员需要Puppet?

精选文章
热门文章