木偶是如何工作的
让管理员只关注要管理的目标,而忽略实现的细节。木偶可以在单机上使用,也可以在C/S结构中使用。在大规模使用Puppet的情况下,通常采用C/S结构,其中puppetclient只运行puppet client,puppet server只运行puppetmaster。具体工作流程如下所示:
环境
使用四个服务器模拟傀儡环境,拓扑图如下:
环境表
实验步骤1。建造傀儡师
(1)规划三台服务器的主机名
[root @ localhost ~]# vim/etc/hostname
master.test.cn
[root @ localhost ~]# 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服务器
[root @ localhost ~]# yum install NTP-y
[root @ localhost ~]# vim/etc/NTP . conf
添加以下两行:服务器127.127.1.0 #指定本地为时间源服务器
福吉127.127.1.0地层8
它的功能是在/etc/ntp.conf中定义的所有服务器都不可用时,为NTP客户端提供本地时间作为NTP服务。
2)启动ntp服务,设置启动自启动。
[root @ localhost ~]# system CTL stop firewalld . service
[root @ localhost ~]# system CTL disable firewalld . service
[root@localhost ~]# setenforce 0
[root @ localhost ~]# systemctl start ntpd . service
[root @ localhost ~]# systemctl enable ntpd . service
[root@localhost ~]# ntpstat #同步
同步到第3层的NTP服务器(193.228.143.13)
时间校正到517毫秒以内
每64秒轮询一次服务器
3)将puppetmaster配置为NTP客户端
[root @ master ~]# yum install NTP date-y
[root @ master ~]# NTP date 192 . 168 . 126 . 159
8月6日09: 45: 03 ntpdate [3488]:调整时间服务器192.168.126.159偏移量-0.072288秒#调整时间服务器192.168.126.159偏移量-0.072288秒
4)配置YUM源
[root @ master ~]# yum install epel-release-y
[root @ master ~]# yum install puppet-server-y # install puppet server
5)启动傀儡主程序
[root @ master ~]# system CTL stop firewalld . service
[root @ master ~]# system CTL disable firewalld . service
[root@master ~]# setenforce 0
[root @ master ~]# system CTL start puppet master . service
[root @ master ~] # systemctl启用puppet master . service 2 . Build puppet client(两个客户端的配置相同)
1)通过域名ping puppetmaster
[root @ client 01 ~]# ping master.test.cn
PING master.test.cn(192 . 168 . 126 . 138)56(84)字节的数据。
来自master.test.cn的64字节(192 . 168 . 126 . 138):icmp _ seq = 1 TTL = 64时间=1.06毫秒
来自master.test.cn的64字节(192 . 168 . 126 . 138):icmp _ seq = 2 TTL = 64时间=3.27毫秒
来自master.test.cn的64字节(192 . 168 . 126 . 138):icmp _ seq = 3 TTL = 64时间=0.382毫秒
来自master.test.cn的64字节(192 . 168 . 126 . 138):icmp _ seq = 4 TTL = 64时间=0.660毫秒
2)服务器时间同步
[root @ client 01 ~]# yum install NTP date-y
[root @ client 01 ~]# vim/etc/NTP . conf
服务器127.127.1.0 #将本地指定为时间源服务器
福吉127.127.1.0地层8
[root @ client 01 ~]# NTP date 192 . 168 . 126 . 159
68月10日01:12 ntpdate[3303]:调整时间服务器192.168.126.159偏移量-0.012348秒
3)配置YUM源
[root @ client 01 ~]# yum install epel-release-y
[root @ client 01 ~]# yum install puppet-y # install puppet client
4)修改木偶的配置文件/etc/puppet/puppet.conf
[root @ client 01 ~]# vim/etc/puppet/puppet . conf
[主要]
#傀儡日志目录。
#默认值为“$vardir/log”。
logdir = /var/log/puppet
#保存木偶PID文件的地方。
#默认值为“$vardir/run”。
rundir = /var/run/puppet
#保存SSL证书的位置。
#默认值为“$confdir/ssl”。
ssldir = $vardir/ssl
服务器= master.test.cn #添加傀儡主人的地址
5)分别在puppetclient01和puppetclient01上注册
[root @ client 01 ~]# puppet agent-server = master . test . cn-no-daemonize-verbose
信息:为client01.test.cn创建一个新的SSL密钥
信息:为ca缓存证书
信息:从/etc/puppet/csr_attributes . YAML加载CSR _ attributes文件
信息:为client01.test.cn创建新的SSL证书申请
信息:证书申请指纹(sha 256):C1:1F:11:32:53:96:AA:91:16:9F:CE:F2:AD:D2:3F:56:C7:9B:D9:87:5C:F8:2D:30:7D:FE:49:66:46:2A:D9:FC
信息:为ca缓存证书
6)检查申请注册的客户
[root@master ~]#傀儡证书列表
“client 01 . test . cn”(SHA 256)C1:1F:11:32:53:96:AA:91:16:9F:CE:F2:AD:D2:3F:56:C7:9B:D9:87:5C:F8:2D:30:7D:FE:49:66:46:2A:D9:FC
“client 02 . test . cn”(sha 256)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)注册未注册的客户
[root @ master ~]# puppet cert sign-all
通知:已签署的client01.test.cn证书申请
注意:删除文件Puppet::SSL::certificate request client01.test.cn在'/var/lib/Puppet/SSL/ca/requests/client 01 . test . cn . PEM '
通知:已签署的client02.test.cn证书申请
注意:删除文件Puppet::SSL::certificate request client02.test.cn在'/var/lib/Puppet/SSL/ca/requests/client 02 . test . cn . PEM '
8)检查注册客户
[root @ master ~]# ll/var/lib/puppet/SSL/ca/signed/
总消耗量12
1952年8月6日21:22 client01.test.cn.pem
1952年8月6日21:22 client02.test.cn.pem
木偶2021年8月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)创建必要的目录:
[root@master ~]# cd /etc/puppet/
[root @ master puppet]# mkdir-p modules/ssh/{清单、模板、文件}
[root@master puppet]# mkdir清单/节点
[root @ master puppet]# mkdir modules/ssh/files/ssh
[root @ master puppet]# chown-r puppet modules/#修改权限
2)检查/etc/puppet/modules/ssh目录中的结构
[root @ master puppet]# ll modules/ssh/
总消耗量0
Drwxr-xr-x.3傀儡根17 8月6 21:32文件
傀儡之根8月6日21:31清单
Drwxr-xr-x.2傀儡根6 8月6日21:31模板
3)创建模块配置文件
[root @ master puppet]# vim/etc/puppet/modules/ssh/manifest/install . PP
输入以下信息(首先确保客户端已安装ssh服务):ssh类::安装{
包{"openssh ":
确保=>。目前,
}
}
4)创建模块配置文件
[root @ master puppet]# vim/etc/puppet/modules/ssh/manifest/config . PP
类ssh::config{
文件{ "/etc/ssh/ssh _ config ":#配置客户端需要同步的文件
确保=>。出现,#确认该文件存在于客户端
所有者=>。“root”,#文件所有者
group=>。根“,#文件属于组
模式=>。“0600”,#文件权限属性
source=>。“puppet://$ puppet server/modules/ssh/ssh/ssh _ config”,
#从服务器同步文件
要求=>。Class["ssh::install"],#调用install.pp确认ssh已经安装
notify=>。Class["ssh::service"],# notify service.pp if config.pp更改。
}
}
5)创建模块配置文件服务
[root @ master puppet]# vim/etc/puppet/modules/ssh/manifest/service . PP
类ssh::service{
服务{ "sshd ":
确保=>。运行,#确认ssh正在运行
hasstatus=>。该服务支持状态命令,类似于服务ssh状态
hasrestart=>。该服务支持重启,类似于服务ssh重启
启用=>。无论服务器是否通电,均为True
要求=>。class[" ssh::config "]# confirm config . PP调用
}
}
6)创建模块主配置文件init.pp
[root @ master puppet]# vim/etc/puppet/modules/ssh/manifest/init . PP
ssh类{
包括ssh:: install、ssh:: config、ssh:: service #来将配置文件加载到ssh类中
}
7)此时目录/etc/puppet/models/ssh/main fest中有四个文件
[root @ master puppet]# ll/etc/puppet/modules/ssh/manifest/
总消耗量16
-rw-r-r-.1根根248 8月6日21:40配置
-rw-r-r-.1根根60 8月6日21:46 init.pp
-rw-r-r-.1根根64 8月6日21:38安装
-rw-r-r-. 1 root root 165 August 6 21:42 service . PP
8)在服务器端建立ssh统一维护文件
由于服务器和客户端的ssh _ config文件在默认情况下是相同的,所以将服务器的/etc/ssh/ssh _ config复制到模块的默认路径。
[root @ master puppet]# CP/etc/ssh/ssh _ config/etc/puppet/modules/ssh/files/ssh/
[root @ master puppet]# chown-r puppet/etc/puppet/modules/ssh/files/ssh/#修改权限
9)创建一个测试节点配置文件,并将ssh加载到其中。
[root @ master puppet]# vim/etc/puppet/manifest/nodes/ssh . PP
节点“client01.test.cn”
包括ssh
}
节点“client02.test.cn”
包括ssh
}
10)将测试节点加载到puppet中,即修改site.pp..
[root @ master puppet]# vim/etc/puppet/manifests/site . PP
导入“nodes/ssh.pp”
11)修改服务器维护的sshd _ config配置文件
[根@主木偶]# vim/etc/puppet/modules/ssh/files/ssh/ssh _ config
端口22 #改为9922
12)重启puppet服务
[root@master puppet]# systemctl重新启动puppetmaster.service
2.客户主动拉动
一般在小规模的自动化集群中,如果代码上线,需要重启服务,为了防止网站暂时无法访问,每个客户端运行一次puppet agent -t命令,选择模式根据客户端集群的大小而定。根据经验,傀儡服务器和客户端之间通常建立ssh信任,然后定制shell脚本。ssh允许客户端批量执行傀儡同步命令。
1)客户端01端:
[root@client01 ~]#傀儡代理-t
...//省略
注意:/Stage[main]/Ssh::Config/File[/etc/Ssh/Ssh _ Config]/内容:
-/etc/ssh/ssh _ config 2017-08-07 10:28:25.000000000+0800
+++/tmp/puppet-file 2018 08 06-5162-JC 80 yr 2018-08-06 22:25:58.726506429+0800
@@ -14,7 +14,7 @@
# SELinux关于这个变化。
# SEM anage port-a-t ssh _ port _ t-p TCP # PORTNUMBER
#
-#端口22
+端口9922
#地址家族任何
#列表地址0.0.0.0
#列表地址::
...//省略
Client02:...//省略
注意:/Stage[main]/Ssh::Config/File[/etc/Ssh/Ssh _ Config]/内容:
-/etc/ssh/ssh _ config 2017-08-07 10:28:25.000000000+0800
++ ++/tmp/puppet-file 2018 08 06-4667-149 TJ 11 2018-08-06 22:27:39.362282788+0800
@@ -14,7 +14,7 @@
# SELinux关于这个变化。
# SEM anage port-a-t ssh _ port _ t-p TCP # PORTNUMBER
#
-#端口22
+端口9922
#地址家族任何
#列表地址0.0.0.0
#列表地址::
.....//省略
2)此时,命令已在客户端成功执行,验证如下:
[root @ client 01 ~]# cat/etc/ssh/ssh _ config | grep Port
端口9922
#网关端口编号
3)检查服务器的ssh服务是否重启,端口是否生效。
[root @ client 01 ~]# netstat-tunlp | grep ssh
TCP 0 0 0 . 0 . 0 . 0:9922 0 . 0 . 0 . 0:* LISTEN 5428/ssh
TCP 60 0:::9922::* LISTEN 5428/宋承宪
3.服务器推送同步
1)大规模部署时,采用服务器推送模式。
客户端:
[root @ client 02 ~]# vim/etc/puppet/puppet . conf
在最后一行加上
听=真#让木偶在端口8139上听
2)认证配置文件auth.conf定义了一些认证信息和访问权限
[root @ client 02 ~]# vim/etc/puppet/auth . conf
在最后一行加上
允许* #允许任何服务器推送
3)启动傀儡客户端
[root @ client 02 ~]# system CTL start puppetagent . service
[root @ client 02 ~]# cat/etc/ssh/ssh _ config #视图
.....//省略
端口9922
#地址家族任何
#列表地址0.0.0.0
#列表地址::
.....//省略
4)开始向客户推销
主人:
[root @ master puppet]# puppet kick client02.test.cn
触发client02.test.cn
获取状态
地位就是成功
client02.test.cn以退出代码0结束
完成了的
5)校准结果如下
[root @ master puppet]# cat/etc/ssh/ssh _ config | grep Port
#端口22
#网关端口编号
6)检查服务器的ssh服务是否重启,端口是否生效。
[root @ client 02 ~]# netstat-tunlp | grep ssh
TCP 0 0 0 . 0 . 0 . 0:9922 0 . 0 . 0 . 0:* LISTEN 4908/ssh
TCP 60 0:::9922::* LISTEN 4908/宋承宪
实验成功,仅供参考。
1.《puppet Puppet 搭建与部署,看这一篇就够了》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《puppet Puppet 搭建与部署,看这一篇就够了》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/junshi/1620391.html