天天看點

自動化運維之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服務

拓撲圖

自動化運維之Puppet服務部署

系統環境

主機名 作業系統 IP位址 軟體包
NTP-Server Centos 7.3 x86_64 192.168.96.27 ntp-4.2.6p5-28.el7.centos.x86_64
puppetmaster 192.168.96.28 Puppet-master-3.6.2.noarch、ntpdate-4.2.6p5-28.el7.centos.x86_64
puppetclient1 192.168.96.29 puppet-3.6.2-3.el7.noarch、ntpdate-4.2.6p5-28.el7.centos.x86_64
puppetclient2 192.168.96.30

開始部署

一、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
自動化運維之Puppet服務部署

二、puppetmaster伺服器

setenforce 0
systemctl stop firewalld           

puppetmaster           

3.修改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
自動化運維之Puppet服務部署

6.安裝puppet控制端

yum -y install puppet-server

7.啟動服務

systemctl enable puppetmaster.service
systemctl start puppetmaster.service           

三、puppetclient1、puppetclient2伺服器(配置一緻)

setenforce 0
systemctl stop firewalld           

2.分别修改主機名

puppetclient1           
puppetclient2           

3.分别修改hosts檔案

192.168.96.28   puppetmaster
192.168.96.29   puppetclient1
192.168.96.30   puppetclient2           

yum -y install puppet

7.編輯puppet配置檔案

vim /etc/puppet/puppet.conf
[main]
    server = puppetmaster
    ......           
自動化運維之Puppet服務部署

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.對未注冊的用戶端進行注冊

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.通過目錄檢視已經注冊的用戶端

-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           

繼續閱讀