1. 程式人生 > >自動化運維之Puppet服務部署

自動化運維之Puppet服務部署

職責 not 使用 The att 註冊 化運維 工作 完成

介 紹

作為一名系統管理員,維護服務器正常運行是最基本的職責,在管理幾臺到幾十臺服務器時,大部分管理員喜歡自己寫小工具來維護,但隨著服務器的數量曾多,任務量也逐漸增多,這時就需要簡潔的、強大的框架來完成系統管理的任務,為了實現這一目的,我們引入了一些工具,這些工具是可編程的,系統管理員只需要為這個工具寫上幾行代碼,它便會自動的完成所有的工作,這批工具就是運維自動化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服務部署