1. 程式人生 > >自動化運維工具Puppet服務安裝和部署詳解

自動化運維工具Puppet服務安裝和部署詳解

puppet簡介

puppet是一種基於ruby語言開發的Lnux、Unix、windows平臺的集中配置管理系統。它使用自有的puppet描述語言,可管理配置檔案file、使用者user、cron任務、軟體包、系統服務等系統實體。

puppet依賴於C/S(客戶端/伺服器)的部署架構。它需要在puppet伺服器上安裝puppet-server軟體包(以下簡稱master),在需要管理的目標主機上安裝puppet客戶端軟體(以下簡稱client)。

為了保證安全,master和client之間是基於SSL和證書的,只有經過master證書認證的client才可以與master通訊。

puppet工作原理

  • 1、客戶端puppet呼叫fast探測出主機的一些變數,如主機名、記憶體大小、IP地址等。Puppet把這些資訊使用SSL連線傳送給伺服器端;
  • 2、伺服器端的puppetmaster通過fast工具分析檢測客戶端的主機名,然後找到專案的主配置檔案manifest裡面對應的node配置,並對該部分內容進行解析,fast傳送過來的資訊可以作為變數處理,node牽扯到的程式碼才被解析,沒牽扯到的不解析,解析分為語法檢查,如果語法沒錯,繼續解析,解析結果生成一個結果‘虛擬碼’,然後把‘虛擬碼’發給客戶端;
  • 3、客戶端收到‘虛擬碼’並且執行,客戶端把執行結果發給伺服器;
  • 4、伺服器端把客戶端的執行結果寫入日誌。

實驗:

使用四臺伺服器模擬搭建Puppet環境,具體拓撲圖如下:
自動化運維工具Puppet服務安裝和部署詳解

1.安裝NTP Server

由於Puppet需要使用SSL證書,依賴時間同步,所有需要搭建NTP伺服器。

(1)關閉所有伺服器的防火牆和安全性策略

(2)yum安裝NTP並修改配置檔案



vi /etc/ntp.conf  
                            
    server 
    fudge 

(3)啟動ntp服務


chkconfig ntpd 

(4)檢視同步狀態`

自動化運維工具Puppet服務安裝和部署詳解

2.安裝Puppet Master

(1)規劃主機名

 /etc/hostname
   master.test.cn     

vi /etc/hosts  
   master.test.cn
   client1.test.cn

然後重啟,將安全性策略再關一下

(2)搭建NTP客戶端服務


服務

自動化運維工具Puppet服務安裝和部署詳解

(3)安裝puppet控制端


yum install -y puppet-server   

(4)啟動Puppet主程式

3.安裝Puppet client(client1 client2配置一樣)

(1)規劃主機名

 /etc/hostname
   client1.test.cn     

vi /etc/hosts  
   master.test.cn
   client1.test.cn

然後重啟,將安全性策略再關一下

(2)搭建NTP客戶端服務


服務

(3)安裝puppet控制端


yum install -y puppet   

(4)編輯puppet配置檔案

 /etc/puppet/puppet.conf
    [main]
    server = master.test.cn
    ......

自動化運維工具Puppet服務安裝和部署詳解
(5)client端申請證書

執行完會有如下提示:

 client2.test.cn
 ca
 csr_attributes file loading from /etc/puppet/csr_attributes.yaml
 client2.test.cn

等待一會兒按ctrl+c組合鍵結束

4.回到Puppet Master端檢視申請資訊

(1)檢視申請證書的客戶端

自動化運維工具Puppet服務安裝和部署詳解

(2)將未申請的客戶端進行授權

自動化運維工具Puppet服務安裝和部署詳解
(3)通過目錄檢視已經申請註冊的客戶端

自動化運維工具Puppet服務安裝和部署詳解

5.批量修改客戶端ssh埠

master端配置:

(1)建立ssh模組,模組下面有3個檔案:manifests、templates和files

(2)建立模組配置檔案install.pp




package{:
         => present,
        }
}

(3)建立模組配置檔案config.pp



file {
        
        owner => 
        group =>  mode =>  source =>   notify => Class[ } } 

(4)建立模組配置檔案service.pp



        service {:          
                
                hasstatus=>
                hasrestart=> enable=>  } } 

(5)建立模組主配置檔案init.pp


{
        
}

此時/etc/puppet/modules/ssh/manifests目錄下有四個檔案:

(6)建立服務端ssh統一維護檔案
將服務端ssh配置檔案sshd_config複製到模組預設路徑


chown -R puppet /etc/puppet/modules/ssh/files/ssh/sshd_config  

(7)建立測試節點配置檔案,並將ssh載入進去

 /etc/puppet/manifests/nodes/ssh.pp  
node  {
         ssh
}
node  {
         ssh
}

(8)將測試節點載入puppet,建立站點檔案site.pp

/

(9)修改服務端維護的sshd_cofig配置檔案


Port 

(10)重新啟動puppet

下面就是介紹客戶端怎麼獲取到伺服器端的資源的方式:

(1)一般在小規模自動化叢集中,客戶端主動拉取

自動化運維工具Puppet服務安裝和部署詳解
在客戶端檢視/etc/ssh/sshd_config的內容
自動化運維工具Puppet服務安裝和部署詳解
檢視伺服器ssh服務是否重啟,埠是否生效
自動化運維工具Puppet服務安裝和部署詳解
(2)當大規模部署時,採用伺服器推送

client端(192.168.26.133)為例:

1)修改配置檔案


listen = true

allow *

2)啟動puppet客戶端

在客戶端檢視/etc/ssh/sshd_config的埠內容
自動化運維工具Puppet服務安裝和部署詳解
檢視伺服器ssh服務是否重啟,埠是否生效
自動化運維工具Puppet服務安裝和部署詳解
master端:

3)修改服務端維護的sshd_cofig配置檔案


Port 

4)開始往客戶端推送

自動化運維工具Puppet服務安裝和部署詳解
在客戶端檢視/etc/ssh/sshd_config的內容
自動化運維工具Puppet服務安裝和部署詳解
在客戶端檢視ssh服務是否重啟,埠是否生效
自動化運維工具Puppet服務安裝和部署詳解