木偶是如何工作的
讓管理員只關注要管理的目標,而忽略實現的細節(jié)。木偶可以在單機上使用,也可以在C/S結構中使用。在大規(guī)模使用Puppet的情況下,通常采用C/S結構,其中puppetclient只運行puppet client,puppet server只運行puppetmaster。具體工作流程如下所示:
環(huán)境
使用四個服務器模擬傀儡環(huán)境,拓撲圖如下:
環(huán)境表
實驗步驟1。建造傀儡師
(1)規(guī)劃三臺服務器的主機名
[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)字節(jié)的數據。
來自master.test.cn的64字節(jié)(192 . 168 . 126 . 138):icmp _ seq = 1 TTL = 64時間=1.06毫秒
來自master.test.cn的64字節(jié)(192 . 168 . 126 . 138):icmp _ seq = 2 TTL = 64時間=3.27毫秒
來自master.test.cn的64字節(jié)(192 . 168 . 126 . 138):icmp _ seq = 3 TTL = 64時間=0.382毫秒
來自master.test.cn的64字節(jié)(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創(chuàng)建一個新的SSL密鑰
信息:為ca緩存證書
信息:從/etc/puppet/csr_attributes . YAML加載CSR _ attributes文件
信息:為client01.test.cn創(chuàng)建新的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,并實 現重啟工作。首先創(chuàng)建ssh模塊,ssh模塊下面有三個文件:manifests,templates和files。在manifests里面包含一個init.pp文件,這是該模塊的初始入口文件,導入模塊時,會從init.pp開始執(zhí)行。可以把所有的代碼都寫到init.pp里面,也可以分成多個pp文件,init再去包含其他文件。定義class類名的時候必須是ssh,這樣才能實現調用。file目錄是該模塊的文件發(fā)布目錄,Puppet提供一個文件分發(fā)機制,類似于rsync的模塊。templates目錄包含erb模型文件,這個和file資源的template屬性相關,不過很少用。具體配置如下:1)創(chuàng)建必要的目錄:
[root@master ~]# cd /etc/puppet/
[root @ master puppet]# mkdir-p modules/ssh/{清單、模板、文件}
[root@master puppet]# mkdir清單/節(jié)點
[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)創(chuàng)建模塊配置文件
[root @ master puppet]# vim/etc/puppet/modules/ssh/manifest/install . PP
輸入以下信息(首先確保客戶端已安裝ssh服務):ssh類::安裝{
包{"openssh ":
確保=>。目前,
}
}
4)創(chuàng)建模塊配置文件
[root @ master puppet]# vim/etc/puppet/modules/ssh/manifest/config . PP
類ssh::config{
文件{ "/etc/ssh/ssh _ config ":#配置客戶端需要同步的文件
確保=>。出現,#確認該文件存在于客戶端
所有者=>?!皉oot”,#文件所有者
group=>。根“,#文件屬于組
模式=>?!?600”,#文件權限屬性
source=>?!皃uppet://$ puppet server/modules/ssh/ssh/ssh _ config”,
#從服務器同步文件
要求=>。Class["ssh::install"],#調用install.pp確認ssh已經安裝
notify=>。Class["ssh::service"],# notify service.pp if config.pp更改。
}
}
5)創(chuàng)建模塊配置文件服務
[root @ master puppet]# vim/etc/puppet/modules/ssh/manifest/service . PP
類ssh::service{
服務{ "sshd ":
確保=>。運行,#確認ssh正在運行
hasstatus=>。該服務支持狀態(tài)命令,類似于服務ssh狀態(tài)
hasrestart=>。該服務支持重啟,類似于服務ssh重啟
啟用=>。無論服務器是否通電,均為True
要求=>。class[" ssh::config "]# confirm config . PP調用
}
}
6)創(chuàng)建模塊主配置文件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)創(chuàng)建一個測試節(jié)點配置文件,并將ssh加載到其中。
[root @ master puppet]# vim/etc/puppet/manifest/nodes/ssh . PP
節(jié)點“client01.test.cn”
包括ssh
}
節(jié)點“client02.test.cn”
包括ssh
}
10)將測試節(jié)點加載到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.客戶主動拉動
一般在小規(guī)模的自動化集群中,如果代碼上線,需要重啟服務,為了防止網站暫時無法訪問,每個客戶端運行一次puppet agent -t命令,選擇模式根據客戶端集群的大小而定。根據經驗,傀儡服務器和客戶端之間通常建立ssh信任,然后定制shell腳本。ssh允許客戶端批量執(zhí)行傀儡同步命令。
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)此時,命令已在客戶端成功執(zhí)行,驗證如下:
[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)大規(guī)模部署時,采用服務器推送模式。
客戶端:
[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
觸發(fā)client02.test.cn
獲取狀態(tài)
地位就是成功
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 搭建與部署,看這一篇就夠了》僅供讀者參考,本網站未對該內容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉載時請保留本站內容來源地址,http://f99ss.com/junshi/1620391.html