自動化運維之Puppet服務部署
作為一名系統管理員,維護服務器正常運行是最基本的職責,在管理幾臺到幾十臺服務器時,大部分管理員喜歡自己寫小工具來維護,但隨著服務器的數量曾多,任務量也逐漸增多,這時就需要簡潔的、強大的框架來完成系統管理的任務,為了實現這一目的,我們引入了一些工具,這些工具是可編程的,系統管理員只需要為這個工具寫上幾行代碼,它便會自動的完成所有的工作,這批工具就是運維自動化puppet,它可以針對多臺服務器進行統一操作,如部署統一的軟件、進行統一上線維護等,而且能快速完成上線部署,減少人力及人力誤操作風險。
工作原理
Puppet的目錄是讓管理員只集中於要管理的目標,而忽略實現的細節。Puppet即可以運行在單機上,也可以以C/S結構使用。在大規模使用puppet的情況下,通常使用C/S結構,在這種結構中puppet客戶端只運行puppeclient,puppet服務端只運行puppemaster。
具體工作步驟
1、客戶端puppet調用fast探測出主機的一些變量,如主機名、內存大小、IP地址等。Puppet把這些信息使用SSL連接發送給服務器端;
2、服務器端的puppetmaster通過fast工具分析檢測客戶端的主機名,然後找到項目的主配置文件manifest裏面對應的node配置,並對該部分內容進行解析,fast發送過來的信息可以作為變量處理,node牽扯到的代碼才被解析,沒牽扯到的不解析,解析分為語法檢查,如果語法沒錯,繼續解析,解析結果生成一個結果‘偽代碼’,然後把‘偽代碼’發給客戶端;
3、客戶端收到‘偽代碼’並且執行,客戶端把執行結果發給服務器;
4、服務器端把客戶端的執行結果寫入日誌.
工作過程中的註意事項
1、為了保證安全,Client和Master之間是基於SSL和證書的,只有經Master證書認證的Client可以與Master通信
2、Puppet會讓系統保持在人們所期望的某種狀態並一直維持下去,如檢測某個文件並保證其一直存在,保證SSH服務始終開啟,如果文件被刪除了或者ssh服務關閉了,puppet下次執行時(默認30分鐘)會重新創建該文件或者啟動SSH服務
拓撲圖
系統環境
主機名 | 操作系統 | IP地址 | 軟件包 |
---|---|---|---|
NTP-Server | Centos 7.3 x86_64 | 192.168.96.27 | ntp-4.2.6p5-28.el7.centos.x86_64 |
puppetmaster | Centos 7.3 x86_64 | 192.168.96.28 | Puppet-master-3.6.2.noarch、ntpdate-4.2.6p5-28.el7.centos.x86_64 |
puppetclient1 | Centos 7.3 x86_64 | 192.168.96.29 | puppet-3.6.2-3.el7.noarch、ntpdate-4.2.6p5-28.el7.centos.x86_64 |
puppetclient2 | Centos 7.3 x86_64 | 192.168.96.30 | puppet-3.6.2-3.el7.noarch、ntpdate-4.2.6p5-28.el7.centos.x86_64 |
開始部署
一、NTP-Server服務器
1.關閉防火墻及Selinux
setenforce 0
systemctl stop firewalld
2.修改主機名
vim /etc/hostname
NTP-Server
3.修改hosts文件(極小規模適用,當部署上百臺以上服務器時,需要搭建dns服務器來實現服務間通過主機名進行通信)
vim /etc/hosts
192.168.96.28 puppetmaster
192.168.96.29 puppetclient1
192.168.96.30 puppetclient2
4.安裝ntp服務
由於puppet需要使用ssl證書,依賴於時間同步,所以這裏需要搭建NTP服務器,以保證數據的有效性
yum -y install ntp
5.編輯ntp配置文件
vim /etc/ntp.conf
server 127.127.1.0 //24行後新增記錄
fudge 127.127.1.0 stratum 8
6.啟動ntpd服務
systemctl enable ntpd
systemctl start ntpd
7.查看ntp時間同步狀態
ntpstat
二、puppetmaster服務器
1.關閉防火墻及Selinux
setenforce 0
systemctl stop firewalld
2.修改主機名
vim /etc/hostname
puppetmaster
3.修改hosts文件
vim /etc/hosts
192.168.96.28 puppetmaster
192.168.96.29 puppetclient1
192.168.96.30 puppetclient2
4.安裝ntpdate服務
yum -y install ntpdate
5.同ntp服務器進行同步時間
ntpdate 192.168.96.27
6.安裝puppet控制端
yum -y install puppet-server
7.啟動服務
systemctl enable puppetmaster.service
systemctl start puppetmaster.service
三、puppetclient1、puppetclient2服務器(配置一致)
1.關閉防火墻及Selinux
setenforce 0
systemctl stop firewalld
2.分別修改主機名
vim /etc/hostname
puppetclient1
vim /etc/hostname
puppetclient2
3.分別修改hosts文件
vim /etc/hosts
192.168.96.28 puppetmaster
192.168.96.29 puppetclient1
192.168.96.30 puppetclient2
4.安裝ntpdate服務
yum -y install ntpdate
5.同ntp服務器進行同步時間
ntpdate 192.168.96.27
6.安裝puppet控制端
yum -y install puppet
7.編輯puppet配置文件
vim /etc/puppet/puppet.conf
[main]
server = puppetmaster
......
8.客戶端進行註冊
puppet agent --server=puppetmaster --no-daemonize --verbose
Info: Creating a new SSL key for puppetclient1.localdomain
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for puppetclient1.localdomain
Info: Certificate Request fingerprint (SHA256): 74:CA:CB:8A:2B:B6:BB:04:39:BF:4A:D3:0A:C0:2D:E4:8D:84:31:B2:D4:F6:26:26:71:5C:66:17:DE:6C:FD:A0
Info: Caching certificate for ca
等待一會出現以上信息後,可以ctrl+c中斷退出,需通過puppetmaster服務器查看到申請信息
回到puppetmaster服務器
1.查看申請註冊的客戶端
[root@puppetmaster ~]# puppet cert --list
"puppetclient1.localdomain" (SHA256) 74:CA:CB:8A:2B:B6:BB:04:39:BF:4A:D3:0A:C0:2D:E4:8D:84:31:B2:D4:F6:26:26:71:5C:66:17:DE:6C:FD:A0
"puppetclient2.localdomain" (SHA256) 07:5E:40:56:7E:19:23:1A:D5:58:E3:D1:CD:B9:0C:5A:E3:7C:EB:60:5A:5E:A6:26:3D:FB:12:B3:99:05:F4:DD
2.對未註冊的客戶端進行註冊
[root@puppetmaster ~]# puppet cert sign --all
Notice: Signed certificate request for puppetclient1.localdomain
Notice: Removing file Puppet::SSL::CertificateRequest puppetclient1.localdomain at ‘/var/lib/puppet/ssl/ca/requests/puppetclient1.localdomain.pem‘
Notice: Signed certificate request for puppetclient2.localdomain
Notice: Removing file Puppet::SSL::CertificateRequest puppetclient2.localdomain at ‘/var/lib/puppet/ssl/ca/requests/puppetclient2.localdomain.pem‘
3.通過目錄查看已經註冊的客戶端
ll /var/lib/puppet/ssl/ca/signed/
-rw-r--r--. 1 puppet puppet 1980 8月 3 21:32 puppetclient1.localdomain.pem
-rw-r--r--. 1 puppet puppet 1980 8月 3 21:32 puppetclient2.localdomain.pem
-rw-r--r--. 1 puppet puppet 2065 8月 3 21:15 puppetmaster.localdomain.pem
至此已經完成了證書的請求與簽名,以後便可以使用puppetserver進行統一部署等操作了。
自動化運維之Puppet服務部署