1. 程式人生 > >自動化運維之Puppet

自動化運維之Puppet

.com ast fir 之間 puppet com 工作流 運行 sign

Puppet原理

Puppet的目錄是讓管理員只集中於要管理的目標,而忽略實現的細節。Puppet即可以運行在單機上,也可以以C/S結構使用。在大規模使用puppet的情況下,通常使用C/S結構,在這種結構中puppet客戶端只運行puppeclient,puppet服務端只運行puppemaster。

工作流程

  • 客戶端puppet調用fast探測出主機的一些變量,如主機名、內存大小、IP地址等。Puppet把這些信息使用SSL連接發送給服務器端;
  • 服務器端的puppetmaster通過fast工具分析檢測客戶端的主機名,然後找到項目的主配置文件manifest裏面對應的node配置,並對該部分內容進行解析,fast發送過來的信息可以作為變量處理,node牽扯到的代碼才被解析,沒牽扯到的不解析,解析分為語法檢查,如果語法沒錯,繼續解析,解析結果生成一個結果‘偽代碼’,然後把‘偽代碼’發給客戶端;
  • 客戶端收到‘偽代碼’並且執行,客戶端把執行結果發給服務器;
  • 服務器端把客戶端的執行結果寫入日誌.

註意事項

  • 為了保證安全,Client和Master之間是基於SSL和證書的,只有經Master證書認證的Client可以與Master通信
  • Puppet會讓系統保持在人們所期望的某種狀態並一直維持下去,如檢測某個文件並保證其一直存在,保證SSH服務始終開啟,如果文件被刪除了或者ssh服務關閉了,puppet下次執行時(默認30分鐘)會重新創建該文件或者啟動SSH服務

案例環境

使用四臺服務器模擬搭建Puppet環境
技術分享圖片

NTPserver:192.168.1.25
puppetmaster:192.168.1.26
puppetclient1:192.168.1.27
puppetclient2:192.168.1.28

實施

所有服務器修改主機名,重啟生效

vim /etc/hostname

NTPserver(puppetmaster,puppetclient1,puppetclient2)

init 6

所有服務器關閉防火墻和安全功能

systemctl stop firewalld.service
setenforce 0

puppet三臺服務器修改/etc/hosts文件

vim /etc/hosts

192.168.1.26   puppetmaster
192.168.1.27   puppetclient1
192.168.1.28   puppetclient2

NTPserver配置

yum install ntp -y      //安裝NTP

vim /etc/ntp.conf         //編輯配置文件

server 127.127.1.0
fudge 127.127.1.0 stratum 8

systemctl enable ntpd.service
systemctl start ntpd.service    //開啟ntpd服務

ntpstat  //查看時間同步狀態

技術分享圖片

puppetmaster配置


yum install ntpdate -y        //安裝ntp客戶端
ntpdate 192.168.1.25        //進行時間同步

技術分享圖片

yum install puppet-server -y      //安裝puppet服務端

systemctl enable puppetmaster.service 
systemctl start puppetmaster.service        //啟動puppet主程序

puppetclient1,puppetclient2配置,步驟相同

yum install ntpdate -y        //安裝ntp客戶端
ntpdate 192.168.1.25        //進行時間同步

技術分享圖片
技術分享圖片

yum -y install puppet         //安裝puppet客戶端
vim /etc/puppet/puppet.conf        //修改配置文件

[main]
    server = puppetmaster        //指明puppetmaster
......

技術分享圖片

申請與註冊

puppetclient端:
puppet agent --server=puppetmaster --no-daemonize --verbose     //申請註冊

Info: Creating a new SSL key for puppetclient1
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
Info: Certificate Request fingerprint (SHA256): 24:94:14:43:80:93:D4:A1:71:5E:3F:2D:0B:5A:3E:69:44:02:03:0F:0D:FC:09:C8:9A:65:6E:F8:21:CC:50:50
Info: Caching certificate for ca
#出現以上信息,等待一會即可使用Ctrl+c組合鍵結束

技術分享圖片

puppetmaster端:
查看申請
puppet cert --list      //查看申請
  "puppetclient1" (SHA256) 24:94:14:43:80:93:D4:A1:71:5E:3F:2D:0B:5A:3E:69:44:02:03:0F:0D:FC:09:C8:9A:65:6E:F8:21:CC:50:50
  "puppetclient2" (SHA256) 6B:22:44:3B:13:51:56:A7:80:59:46:74:B5:01:99:AC:27:5F:75:B1:46:0D:2F:7A:72:62:0D:C9:34:22:DE:47

技術分享圖片

對未註冊的進行註冊
puppet cert sign --all      //對未註冊的進行註冊
Notice: Signed certificate request for puppetclient1
Notice: Removing file Puppet::SSL::CertificateRequest puppetclient1 at ‘/var/lib/puppet/ssl/ca/requests/puppetclient1.pem‘
Notice: Signed certificate request for puppetclient2
Notice: Removing file Puppet::SSL::CertificateRequest puppetclient2 at ‘/var/lib/puppet/ssl/ca/requests/puppetclient2.pem‘

技術分享圖片

通過目錄查看已經註冊的客戶端
ll /var/lib/puppet/ssl/ca/signed/      //通過目錄查看已經註冊的客戶端
-rw-r--r--. 1 puppet puppet 1948 8月   5 19:20 puppetclient1.pem
-rw-r--r--. 1 puppet puppet 1948 8月   5 19:20 puppetclient2.pem
-rw-r--r--. 1 puppet puppet 1944 8月   5 19:01 puppetmaster.pem

技術分享圖片
此時客戶端已經完成證書的請求與簽名。

自動化運維之Puppet