Puppet 构建与布署,看这一篇就可以了

原题目:Puppet 构建与布署,看这一篇就可以了

Puppet工作中基本原理

让管理方法员只集中化于要管理方法的总体目标,而忽略完成的关键点。puppet既能够在单机版上应用,还可以以C/S构造应用。
在规模性应用puppet的状况下,一般应用C/S构造,在这里种构造中puppet顾客端只运作puppetclient,Puppet服务端只运作puppetmaster。
企业网站建设团队实际的工作中步骤如图所示所显示:

自然环境

应用四台网络服务器仿真模拟构建puppet自然环境,拓扑图以下所显示:

自然环境表

试验流程 1.构建Puppet Master

(1)整体规划三台网络服务器服务器名

[ ~]# vim /etc/hostname

master.test.cn

[ ~]# vim /etc/hosts

192.168.126.138 master.test.cn

192.168.126.148 client01.test.cn

192.168.126.158 client02.test.cn

(2)网络服务器時间同歩

因为puppet必须应用SSL资格证书,依靠時间同歩,因此必须构建NTP网络服务器

1)构建NTP Server

[ ~]# yum install ntp -y

[ ~]# vim /etc/ntp.conf

加上下列二行:server 127.127.1.0 #特定当地做为時间源网络服务器

fudge 127.127.1.0 stratum 8

其功效是当 /etc/ntp.conf 中界定的server也不能用时,将应用local時间做为NTP服务出示给NTP顾客端。

2)起动ntp服务并设定启动开机启动

[ ~]# systemctl stop firewalld.service

[ ~]# systemctl disable firewalld.service

[ ~]# setenforce 0

[ ~]# systemctl start ntpd.service

[ ~]# systemctl enable ntpd.service

[ ~]# ntpstat #同歩

synchronised to NTP server (193.228.143.13) at stratum 3

time correct to within 517 ms

polling server every 64 s

3)puppetmaster做为NTP顾客端的配备

[ ~]# yum install ntpdate -y

[ ~]# ntpdate 192.168.126.159

6 Aug 09:45:03 ntpdate[3488]: adjust time server 192.168.126.159 offset -0.072288 sec #调节時间网络服务器192.168.126.159偏位-0.072288秒

4)配备YUM源

[ ~]# yum install epel-release -y

[ ~]# yum install puppet-server -y #安裝puppet服务端

5)起动puppet主程序

[ ~]# systemctl stop firewalld.service

[ ~]# systemctl disable firewalld.service

[ ~]# setenforce 0

[ ~]# systemctl start puppetmaster.service

[ ~]# systemctl enable puppetmaster.service 2.构建puppetclient(两部顾客端配备一样)

1)根据网站域名ping通puppetmaster

[ ~]# ping master.test.cn

PING master.test.cn (192.168.126.138) 56(84) bytes of data.

64 bytes from master.test.cn (192.168.126.138): icmp_seq=1 ttl=64 time=1.06 ms

64 bytes from master.test.cn (192.168.126.138): icmp_seq=2 ttl=64 time=3.27 ms

64 bytes from master.test.cn (192.168.126.138): icmp_seq=3 ttl=64 time=0.382 ms

64 bytes from master.test.cn (192.168.126.138): icmp_seq=4 ttl=64 time=0.660 ms

2)网络服务器時间同歩

[ ~]# yum install ntpdate -y

[ ~]# vim /etc/ntp.conf

server 127.127.1.0 #特定当地做为時间源网络服务器

fudge 127.127.1.0 stratum 8

[ ~]# ntpdate 192.168.126.159

6 Aug 10:01:12 ntpdate[3303]: adjust time server 192.168.126.159 offset -0.012348 sec

3)配备YUM源

[ ~]# yum install epel-release -y

[ ~]# yum install puppet -y #安裝puppet顾客端

4)改动puppet的配备文档/etc/puppet/puppet.conf

[ ~]# vim /etc/puppet/puppet.conf

[main]

# The Puppet log directory.

# The default value is '$vardir/log'.

logdir = /var/log/puppet

# Where Puppet PID files are kept.

# The default value is '$vardir/run'.

rundir = /var/run/puppet

# Where SSL certificates are kept.

# The default value is '$confdir/ssl'.

ssldir = $vardir/ssl

server = master.test.cn #加上puppet master的详细地址

5)各自在puppetclient01和puppetclient01勤奋行申请注册

[ ~]# puppet agent --server=master.test.cn --no-daemonize --verbose

Info: Creating a new SSL key for client01.test.cn

Info: Caching certificate for ca

Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml

Info: Creating a new SSL certificate request for client01.test.cn

Info: Certificate Request fingerprint (SHA256): C1:1F:11:32:53:96:AA:91:16:9F:CE:F2:AD:D2:3F:56:C7:9B:D9:87:4C:F8:2D:30:7D:FE:49:66:46:2A:D9:FC

Info: Caching certificate for ca

6)查询申请办理申请注册的顾客端

[ ~]# puppet cert --list

"client01.test.cn" (SHA256) C1:1F:11:32:53:96:AA:91:16:9F:CE:F2:AD:D2:3F:56:C7:9B:D9:87:4C:F8:2D:30:7D:FE:49:66:46:2A:D9:FC

"client02.test.cn" (SHA256) 7C:C9:22:59:B2:1E:2B:F5:12:30:4D:88:D9:B1:AF:60:FE:02:65:7A:A2:3F:E3:B5:CB:1D:2F:9F:B5:4B:FD:6D

7)对未申请注册的顾客端开展申请注册

[ ~]# puppet cert sign --all

Notice: Signed certificate request for client01.test.cn

Notice: Removing file Puppet::SSL::CertificateRequest client01.test.cn at '/var/lib/puppet/ssl/ca/requests/client01.test.cn.pem'

Notice: Signed certificate request for client02.test.cn

Notice: Removing file Puppet::SSL::CertificateRequest client02.test.cn at '/var/lib/puppet/ssl/ca/requests/client02.test.cn.pem'

8)查询早已申请注册的顾客端

[ ~]# ll /var/lib/puppet/ssl/ca/signed/

总用量 12

-rw-r--r--. 1 puppet puppet 1952 八月 6 21:22 client01.test.cn.pem

-rw-r--r--. 1 puppet puppet 1952 八月 6 21:22 client02.test.cn.pem

-rw-r--r--. 1 puppet puppet 2021 八月 6 21:06 master.test.cn.pem

这时顾客端早已进行资格证书的恳求与签字。

配备案例

这儿以便维护Linux的ssh端口号,改动顾客端client1的sshd端口号,将端口号22改动为9922,并实 现重新启动工作中。 最先建立ssh控制模块,ssh控制模块下边有三个文档:manifests,templates和files。 在manifests里边包括一个init.pp文档,它是该控制模块的原始通道文档,导进控制模块时,会从init.pp刚开始实行。能够把全部的编码都提到init.pp里边,还可以分为好几个pp文档,init再去包括别的文档。界定class类名的情况下务必是ssh,那样才可以完成启用。 file文件目录是该控制模块的文档公布文件目录,Puppet出示一个文档派发体制,相近于rsync的控制模块。 templates文件目录包括erb实体模型文档,这一和file資源的template特性有关,但是非常少用。实际配备以下:

1)建立必需的文件目录:

[ ~]# cd /etc/puppet/

[ puppet]# mkdir -p modules/ssh/{manifests,templates,files}

[ puppet]# mkdir manifests/nodes

[ puppet]# mkdir modules/ssh/files/ssh

[ puppet]# chown -R puppet modules/ #改动管理权限

2)查询/etc/puppet/modules/ssh文件目录下的构造

[ puppet]# ll modules/ssh/

总用量 0

drwxr-xr-x. 3 puppet root 17 八月 6 21:32 files

drwxr-xr-x. 2 puppet root 6 八月 6 21:31 manifests

drwxr-xr-x. 2 puppet root 6 八月 6 21:31 templates

3)建立控制模块配备文档install.pp

[ puppet]# vim /etc/puppet/modules/ssh/manifests/install.pp

键入下列信息内容(最先明确顾客端已安裝ssh服务):class ssh::install{

package{"openssh":

ensure= present,

}

}

4)建立控制模块配备文档config.pp

[ puppet]# vim /etc/puppet/modules/ssh/manifests/config.pp

class ssh::config{

file {"/etc/ssh/sshd_config": #配备顾客端必须同歩的文档

ensure= present, #确定顾客端中有此篇件

owner= "root", #文档属主

group= "root", #文档属组

mode= "0600", #文档管理权限特性

source= "puppet://$puppetserver/modules/ssh/ssh/sshd_config",

#从服务端同歩文档

require= Class["ssh::install"], #启用install.pp确定ssh早已安裝

notify= Class["ssh::service"], #假如config.pp产生转变,通告service.pp

}

}

5)建立控制模块配备文档service.pp

[ puppet]# vim /etc/puppet/modules/ssh/manifests/service.pp

class ssh::service{

service { "sshd":

ensure= running, #确定ssh运作

hasstatus= true, #puppet该服务保障status指令,相近于service sshd status

hasrestart= true, #puppet该服务保障restart,相近于service sshd restart

enable= true, #网络服务器是不是启动起动

require= Class["ssh::config"] #确定config.pp启用

}

}

6)建立控制模块主配备文档init.pp

[ puppet]# vim /etc/puppet/modules/ssh/manifests/init.pp

class ssh {

include ssh::install,ssh::config,ssh::service #将配备文档载入到ssh类中来

}

7)这时/etc/puppet/modeles/ssh/mainfests文件目录下有四个文档

[ puppet]# ll /etc/puppet/modules/ssh/manifests/

总用量 16

-rw-r--r--. 1 root root 248 八月 6 21:40 config.pp

-rw-r--r--. 1 root root 60 八月 6 21:46 init.pp

-rw-r--r--. 1 root root 64 八月 6 21:38 install.pp

-rw-r--r--. 1 root root 165 八月 6 21:42 service.pp

8)创建服务端ssh统一维护保养文档

因为服务端和顾客端的sshs_config文档默认设置一样,这时将服务端的/etc/ssh/sshd_config拷贝到控制模块默认设置相对路径中来。

[ puppet]# cp /etc/ssh/sshd_config /etc/puppet/modules/ssh/files/ssh/

[ puppet]# chown -R puppet /etc/puppet/modules/ssh/files/ssh/ #改动管理权限

9)建立检测连接点配备文档,并将ssh载入进来。

[ puppet]# vim /etc/puppet/manifests/nodes/ssh.pp

node 'client01.test.cn'{

include ssh

}

node 'client02.test.cn'{

include ssh

}

10)将检测连接点加载puppet,即改动site.pp。

[ puppet]# vim /etc/puppet/manifests/site.pp

import "nodes/ssh.pp"

11)改动网络服务器维护保养的sshd_config配备文档

[ puppet]# vim /etc/puppet/modules/ssh/files/ssh/sshd_config

Port 22 #改动为9922

12)重新启动puppet服务

[ puppet]# systemctl restart puppetmaster.service

2.顾客端积极拉取

一般在小规模纳税人全自动化群集中,如编码发布必须重新启动服务时,以便避免出现网站临时性没法浏览的难题,每台顾客端运作一次puppet agent -t指令,挑选方式依据顾客端群集经营规模的尺寸。依据工作经验,一般puppet网络服务器到各顾客端会创建ssh信赖,随后自定shell脚本制作,ssh大批量让顾客端实行puppet同歩指令。

1)Client01端:

[ ~]# puppet agent -t

.....//省去

Notice: /Stage[main]/Ssh::Config/File[/etc/ssh/sshd_config]/content:

--- /etc/ssh/sshd_config 2017-08-07 10:28:25.000000000 +0800

+++ /tmp/puppet-file20180806-5162-jc80yr 2018-08-06 22:25:58.726506429 +0800

@@ -14,7 +14,7 @@

# SELinux about this change.

# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER

#

-#Port 22

+Port 9922

#AddressFamily any

#ListenAddress 0.0.0.0

#ListenAddress ::

.....//省去

Client02端:....//省去

Notice: /Stage[main]/Ssh::Config/File[/etc/ssh/sshd_config]/content:

--- /etc/ssh/sshd_config 2017-08-07 10:28:25.000000000 +0800

+++ /tmp/puppet-file20180806-4667-149tj11 2018-08-06 22:27:39.362282788 +0800

@@ -14,7 +14,7 @@

# SELinux about this change.

# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER

#

-#Port 22

+Port 9922

#AddressFamily any

#ListenAddress 0.0.0.0

#ListenAddress ::

......//省去

2)这时指令在顾客端实行取得成功,认证以下:

[ ~]# cat /etc/ssh/sshd_config | grep Port

Port 9922

#GatewayPorts no

3)查询网络服务器ssh服务是不是重新启动,端口号是不是起效。

[ ~]# netstat -tunlp | grep ssh

tcp 0 0 0.0.0.0:9922 0.0.0.0:* LISTEN 5428/sshd

tcp6 0 0 :::9922 :::* LISTEN 5428/sshd

3.网络服务器消息推送同歩

1)当规模性布署时,选用网络服务器消息推送方式。

client:

[ ~]# vim /etc/puppet/puppet.conf

最终一行加上

listen = true #使puppet监视8139端口号

2)认证配备文档auth.conf界定了一些认证信息内容及浏览管理权限

[ ~]# vim /etc/puppet/auth.conf

最终一行加上

allow * #容许一切服务端消息推送

3)起动puppet顾客端

[ ~]# systemctl start puppetagent.service

[ ~]# cat /etc/ssh/sshd_config #查询

......//省去

Port 9922

#AddressFamily any

#ListenAddress 0.0.0.0

#ListenAddress ::

......//省去

4)刚开始往顾客端消息推送

Master:

[ puppet]# puppet kick client02.test.cn

Triggering client02.test.cn

Getting status

status is success

client02.test.cn finished with exit code 0

Finished

5)校检結果以下

[ puppet]# cat /etc/ssh/sshd_config | grep Port

#Port 22

#GatewayPorts no

6)查询网络服务器ssh服务是不是重新启动,端口号是不是起效。

[ ~]# netstat -tunlp | grep ssh

tcp 0 0 0.0.0.0:9922 0.0.0.0:* LISTEN 4908/sshd

tcp6 0 0 :::9922 :::* LISTEN 4908/sshd

试验取得成功,仅作参照。

创作者:缘何重见

来源于:https://blog.51cto/13642258/2155525回到凡科,查询大量

相关阅读