自動化運維之Puppet
阿新 • • 發佈:2018-08-05
.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