第二十二週微職位puppet

描述puppet的工做原理,部署一套puppet系統.node

  1. puppet的工做原理:
    python

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

  2. wKioL1ninGrDofp1AAB6qiFIWnM380.png

1)      客戶端puppet調用fast探測出主機的一些變量,如主機名、內存大小、IP地址等。Puppet把這些信息使用SSL鏈接發送給服務器端
2)      服務器端的puppetmaster經過fast工具分析檢測客戶端的主機名,而後找到項目的主配置文件manifest裏面對應的node配置,並對該部份內容進行解析,fast發送過來的信息能夠做爲變量處理,node牽扯到的代碼才被解析,沒牽扯到的不解析,解析分爲語法檢查,若是語法沒錯,繼續解析,解析結果生成一個結果‘僞代碼’,而後把‘僞代碼’發給客戶端
3)      客戶端收到‘僞代碼’而且執行,客戶端把執行結果發給服務器
4)      服務器端把客戶端的執行結果寫入日誌

 3.puppet工做過程當中須要注意的事項:
安全

1)      爲了保證安全,Client和Master之間是基於SSL和證書的,只有經Master證書認證的Client能夠與Master通訊
2)      Puppet會讓系統保持在人們所指望的某種狀態並一直維持下去,如檢測某個文件並保證其一直存在,保證SSH服務始終開啓,若是文件被刪除了或者ssh服務關閉了,puppet下次執行時(默認30分鐘)會從新建立該文件或者啓動SSH服務

  4.項目環境:ruby

wKioL1nincjgxbylAABd_IMrDis658.png

主機服務器

操做系統運維

IP地址ssh

主要軟件ide

Puppetmaster工具

Centos6.5

192.168.31.83

Ruby-rdoc-1.8.7.352

Ruby-libs-1.8.7.352

Ruby-irb-1.8.7.352

Ruby-1.8.7.352

Puppet-2.7.21.tar.gz

Facter-1.7.1.tar.gz

Puppetclient1

Centos6.5

192.168.31.184

Ruby-rdoc-1.8.7.352

Ruby-libs-1.8.7.352

Ruby-irb-1.8.7.352

Ruby-1.8.7.352

Puppet-2.7.21.tar.gz

Facter-1.7.1.tar.gz

Puppetclient2

Centos6.5

192.168.31.79

Ruby-rdoc-1.8.7.352

Ruby-libs-1.8.7.352

Ruby-irb-1.8.7.352

Ruby-1.8.7.352

Puppet-2.7.21.tar.gz

Facter-1.7.1.tar.gz

NTP server

Centos6.5

192.168.31.224


  5.項目實施:

1)搭建puppetmaster

規劃服務器主機名

在小的規模puppet環境下,通常修改/etc/hosts文件,然而在上千臺服務器的環境中,咱們要搭建本身的DNS服務器來實現服務經過主機名來進行通訊,此項目咱們經過修改/etc/hosts文件來實現

wKiom1nioWuzI54KAAAHkzbcj_c976.png

 修改HOSTNAME=master.zjz.cn

wKioL1nins6xwnGIAAAJ7kPxaYo092.png

wKiom1niocihNEKTAAAGp3pZFvM969.png

添加一下幾行:

wKioL1ninyuBZ1c2AACBIXlvpsk312.png

還有一種方式來修改主機名,不用重啓系統的方式

2)時間同步服務器

因爲facter使用SSL證書,依賴時間同步,因此須要搭建NTP服務器

1、搭建NTP Server

wKioL1nin-_T96YuAAAItdql7Ns029.png

wKiom1niotbgD4oPAAAQBuB1aqI429.png

打開ntp的配置文件添加下面兩行

wKiom1niovDy4BRJAAAI4majQj0582.png

wKioL1nioDuz_mZhAAAMDj9JVw4601.png

其做用是當/etc/ntp.conf中定義的server都不可用時,將使用local時間做爲NTP服務提供給NTP客戶端

啓動NTP服務,並設置爲開機自啓

wKiom1nio13hVY1iAAA7NK0MKg4995.png

2、Puppetmaster 做爲NTP客戶端配置

wKiom1nio52SeqTbAAAI-8QC8d0285.png

wKioL1nioOeTjK0tAAA6j9vJw_I661.png

3、安裝ruby

必定按照一下前後順序安裝,先安裝compat-readline5,也能夠一併安裝

首先新建一個掛載系統盤的目錄(由於咱們安裝的包,在系統盤中有,使用rpm直接安裝)

wKiom1nipBHRZL04AAAJ_0xdroY378.png

掛載系統盤

wKioL1nioXexmy2-AAA1NwSxvNY334.png

切換到掛載目錄的Packages目錄中

wKioL1niocSh_5McAAALqD33qw4933.png

開始安裝

wKioL1nioimAKPm2AAAq6Icq70U366.png

安裝完成後,查看版本

wKioL1niolaRm28TAABRtu6DEWg195.png

4、Puppet、facter安裝

wKiom1nipUuQq1ehAAAtjYJxyQw072.png

經過facter工具分析檢測客戶端傳輸過來的信息

安裝facter

a)      解壓源碼包

wKioL1niovGiuqFsAABVAdMN1pU683.png

新建一個存放安裝包的目錄,下載源碼包

wKiom1nipdGSNR-bAAAu-k02Kv8766.png

b)      編譯安裝源碼包

wKiom1niphCBC7nvAABYlh2RVGE877.png

安裝puppet:

(一)  解壓源碼包

先下載源碼包

wKioL1nio5_w1FydAABE2_BuiRM801.png

wKioL1nio7TC-0w7AAAvXw5cY7M672.png

(二)  編譯安裝

wKiom1nips6TsAXQAABxuhnDJCI666.png

(三)  複製配置文件

wKiom1nipvaSD7f2AAB5ZvouToM660.png

(四)  修改文件屬性

wKioL1nipHqijy6LAAAzXl-p-fg211.png

(五)  建立puppet主目錄

wKioL1nipO_guihtAABn6UGgIfI755.png

注意:這兩個目錄的名稱是固定的

5、Puppet服務證書請求與簽名

生產環境中iptables默認是關閉的

Master端配置

wKioL1nipQ3QKHOrAAAJxGaymnI308.png

(一)  修改配置文件

在【main】標題下添加如下一行:配置服務器模塊的路徑

wKiom1nip_zgToFSAADVqksy-Io419.png

(二)  啓動puppet主程序

wKioL1nipY2ivRtcAAAz6AbPeFQ474.png

wKiom1niqEPA8zAJAAAg1FagrVc214.png

  6.搭建puppetclient:

首先配置puppetclient1,步驟以下:

1)      規劃服務器主機名

wKioL1nipjKyAfY8AAA3UG2pCdw294.png

wKiom1niqOih2sY1AAANy1Bauh4052.png

wKiom1niqOjBb9X5AAAVXjGHLrA194.png

wKioL1nipjKjOi8jAAAJrFfK9Mc675.png

添加一下幾行

wKiom1niqTXgjF5UAACCJaKxZ9c384.png

確保能夠經過域名ping同puppetmaster,即ping master.zjz.cn

wKioL1nipq2SAj_jAAB6GFNJqT4609.png

2)      服務器時間同步

wKioL1nipx7SgtQIAAAJzShnJbE162.png

wKiom1niqdTx97E2AABA7mykeTw308.png

3)      安裝ruby

必定按照一下順序安裝,先安裝compat-readline5,也能夠一塊兒安裝

wKioL1nip3PQzAnbAACBzKjB_RI721.png

安裝同master安裝步驟

安裝完成後檢查版本

wKiom1niqkeD0e_KAABK1YdBdBU850.png

4)      Puppet、facter安裝

wKioL1nip8zzJ9OZAAA08srgBqw330.png

經過facter工具分析檢測客戶端傳輸過來的信息

安裝facter:

1、解壓源碼包

wKiom1niqtWRFr7EAABQP178AFw099.png

wKioL1niqDTTPvieAAAktOGs7Ck571.png

2、編譯安裝源碼包

wKiom1niqyqQNHmXAABGpr_IaIQ308.png

安裝puppet:

1、解壓源碼包

wKioL1niqKzyhOJrAAA7DZMAbvc599.png

2、編譯安裝源碼包

wKioL1niqWDROCslAABxGkP2ue4363.png

3、複製配置文件

wKiom1niq7Tg1gyOAAArsaB2rXQ087.png

wKiom1niq7TBzhv8AAArK-vDOg8274.png

4、修改文件屬性

wKioL1niqaCShFL5AAAhCsgw5wk382.png

5、Puppet服務證書請求與簽名

生產環境中iptebles默認是所有關閉的

wKiom1nirISiUtDHAAAluZ3OjeA285.png

Puppetclient1和puppetclient2同樣,以下操做

修改client配置文件

wKiom1nirO6R7zI-AAA5unZZ47Y495.png

在【main】標題下加上一行,設置服務器的域名

wKioL1niqlHx_bB6AADdH38cY7g713.png

Puppetclient2和puppetclient1配置過程相似,注意將主機名修改成client2

申請和註冊

Client端:

分別在puppetclient1和puppetclient2上進行註冊

wKioL1niqrKQm-csAABZ1ljEjPk668.png

wKioL1niqrLB7YuLAABUt8dvZqc568.png

此時能夠按Ctrl+C結束,由於puppet一直在等待任務,可是已經從server查看到了申請信息

Master端

查看申請註冊的客戶端:

wKiom1nirZyzSTJSAABvViSFhgk837.png

將未註冊的客戶端進行註冊

wKioL1niqy3AjfOgAABepsQw2Ng633.png

能夠經過目錄查看已註冊的客戶端

wKioL1niq2WxhbA9AAC09fBfFYk156.png

此時客戶端已經完成了證書的請求和簽名

  七、配置實例

     1.      配置一個測試節點

節點信息:/etc/puppet/manifests/nodes

模塊信息:/etc/puppet/modules

爲了保護Linux的ssh端×××破,批量修改客戶端sshd端口,將端口22修改成9922,並實現重啓工做

建立ssh模塊,模塊目錄爲ssh,模塊下面有三個文件:mainfests、templates和files

Mainfests裏面必需要包含一個init.pp文件,這是該模塊的初始文件,導入一個模塊的時候,會從init.pp開始執行。能夠把因此的代碼寫到init.pp文件裏面,也能夠分紅多個pp文件,init再去包含其餘文件,定義class類名的時候必須是ssh,這樣能實現調用

Files目錄是該模塊的文件發佈目錄,puppet提供一個文件的分發機制,相似rsync的模塊

Templates目錄包含erb模型文件,這個和file資源的template屬性有關(不多用)

Master端:

1)      建立須要的必要的目錄

wKiom1nirreT7v5QAACER_3nUuI798.png

此時/etc/puppet/modules/ssh/目錄下結構:

wKioL1nirDHTtLvVAAC63-M9__w834.png

2)      建立模塊配置文件install.pp

wKiom1nirzayIeJcAAAnp6nNs5U353.png

輸入一下信息:

wKioL1nirLjDIzF7AAAQw9tGWJQ107.png

3)      建立模塊配置文件config.pp

wKiom1nir6miBHfjAAAl85R4ifI587.png

輸入一下信息:

wKiom1nir-TxRxrpAACTF6JCp-A702.png

4)      建立模塊配置文件service.pp

wKiom1nisGmDuTDfAAAs4lFxtAE581.png

輸入一下信息:

wKiom1nisIOQn4yrAACEUT6NGIk359.png

5)      建立模塊主配置文件init.pp

wKioL1niriSwGgA1AAAxjl-5Pzw537.png

輸入一下信息:

wKioL1niriSDSaAYAAA20vJoLik809.png

此時/etc/puppet/modules/ssh/manifests目錄下有四個文件:

wKiom1nisRbD0_GIAADZF4WoyVU312.png

6)      創建服務器端ssh統一維護文件

因爲服務器端和客戶端的sshd_config文件默認同樣,此時將服務器端/etc/ssh/sshd_config複製到模塊默認路徑

wKiom1nisU3TKmpZAABVOjEw6O0792.png

7)      建立測試節點配置文件,並將ssh加載進去

wKioL1niruSjMv8hAAAwvCQggwM740.png

輸入一下信息:

wKiom1nisZqyH562AAAUTw7hz_A204.png

8)      將測試節點載入puppet,即修改site.pp

wKiom1nisdmh13w1AAArw6UAmOQ549.png

輸入一下信息:

wKiom1nisgmAmwg-AAAHJzXCP9Q674.png

9)      修改服務端維護的sshd_config配置文件

wKiom1niskajPfVRAAAp9tfbk0c092.png

wKiom1niskaQDQRhAAE5_JKIrxw997.png

10)   從新啓動puppet

#] /etc/init.d/puppetmaster restart 

2.      客戶端主動拉取

通常在小規模自動化集羣中,如代碼上線須要重啓服務時,爲了防止網站暫時性的沒法訪問的問題,每臺客戶端運行一次puppet agent –t命令,選擇模式根據客戶端集羣規模的大小,根據經驗,通常運維工程師puppet服務器到各客戶端會創建ssh信任,而後自定義shell腳本,ssh批量讓客戶端執行puppet同步命令

Client端:

192.168.31.184(puppetclient1)端執行命令以下:

wKiom1nis0jBJzq7AADQKDBKOsA057.png

此時在Client端已經執行成功,驗證以下:

wKiom1nis5HyJOwpAAErS33QBEE916.png

查看服務器ssh服務是否重啓,端口是否生效:

wKioL1nisSuzT3dWAAAsMO7HS3o699.png

3.      服務器推送同步

當大規模部署時採用服務器推送模式

Client端:

192.168.31.79(puppetclient2)端修改:

1)      修改配置文件:

wKioL1nisXTRkE0ZAAAz0UC6wNU885.png

最後一行添加以下:

wKiom1nitCuBWQs7AAIUQSCsyMM606.png

修改auth.conf

wKiom1nitJjAF2kcAAA4ig6hfwQ341.png

最後一行添加以下:

wKiom1nitJiwFNFrAAFO78juhAg960.png

2)      啓動puppet客戶端

wKiom1nitP-Dc537AAAfQXf9w50956.png

查看/etc/ssh/sshd_config的內容以下:

wKioL1nisknhvnt-AAAW7DtGsO0048.png

確認啓動ssh服務:

wKioL1nisrWQxLZIAAAyocylMtI033.png

Master端:

3)      開始往客戶端推送

wKioL1nisrXQRiL3AACbYF-1lOU850.png

4)      校驗結果:

此時Client端已經執行成功,驗證以下:

wKiom1nitceDbrskAAAq4TSAvVg144.png

wKiom1nitceDeYXaAAAVheYIUHo837.png

查看服務器ssh服務是否重啓,端口是否生效:

wKioL1nisxGARLOWAAAysaBOO-A300.png

相關文章
相關標籤/搜索