現在位置: 首頁 > Puppet > 正文

【DevOps】Puppet 4 自動化部署 – 設定第一個自動佈署工作(manifests)

在 Puppet 中必須撰寫 manifests 去佈署你的 Agent 伺服器,顧名思義 manifests 是每一個 node 的佈署清單,要做什麼事情都在 manifests 這邊撰寫,可以參考下圖架構關係

 

 

 

Master 和 Agent 之間取得佈署清單流程:

  1. Agent 傳送 catalog 內容包含 nodename (節點名稱) 和 facts (由 facter 所獲取的系統參數)
  2. Master 從 catalog 提供的資訊將 manifests 編譯重新打包 catalog
  3. Agent 收到 catalog 後執行佈署工作,並且回應 Report 給 Master 執行結果。

 

Master 和 Agent 提交的關係有很多種:

  • 由 Master 設定的 puppet kick 觸發更新
  • 由 Agent 設定的 runinterval 觸發更新
  • MCollective 的 MQ (Message Queue) 更新
  • etc

 

實際運用關係到你的環境有多少台 Server 需要佈署,據說用 1 台Puppet + Hadoop,能夠支撐近千台的 Agent !?,不過如果你的環境有這麼多的 Agent 節點,那你的 Puppet 如果只使用一台心臟也太大顆。

 

在 manifests 佈署計畫裡,僅需要在 Master 上撰寫,當 manifests 寫好後並不需要重啟 Puppet service 立即生效,這時候 Puppet environment 就相對重要了。

 

目標:

  • agent01.puppet.com 這台伺服器必須安裝 chrony 校時。
  • agent02.puppet.com 這台伺服器必須安裝 httpd。

 

建立第一個 manifests – chrony

 

在建立 manifests 前或許你可以先查看有哪些 resource 能夠使用,在這邊簡單利用 package + service 去安裝 chrony

 

  • node 定義為你的 agent 目標
  • package 安裝套件
    • 第一個 package title: 定義 package 名稱,通常設定為 package name,但實際安裝 package name 建議使用 name 定義。
    • name:則為你要安裝的套件名稱,如果你有多 OS 就一定要用 name 去設定 package name,否則預設將採用 package title name。
    • ensure:進行的動作為 present (同 installed )
  • service  同 package,但 ensure 狀態為 running,因為我們希望安裝好後為服務是啟動的。

 

在這邊我範例寫的是 Ubuntu 的 chrony,如果你是 CentOS/Redhat 系列,service 請用 “chronyd"

**如果有多 OS 環境小弟建議可以採用 case or if 判斷式去寫你的 manifests/modules。

 

 

 

第二個 manifests 範例 – apache

 

在第二個範例除了安裝 apache 以外還要用 file 建立一個測試檔案

 

在這邊使用了 -> 這個符號代表執行的順序是:

package -> 建立目錄 agent02.puppet.com -> 建立 index.html 檔案 -> 啟動 apache 服務。

 

file 則是可以拿來建立"目錄"或"檔案",當中目錄又可以指定多個目錄來表達你想要的目錄結構。

 

$fqdn 則是用了從 agent 那邊 facter 來的 facts 資訊。

 

 

Puppet agnet 驗證

寫好 manifests 之後就要讓 agent 更新,由於是在測試階段,所以直接使用 puppet agent -t 進行測試更新

**如果僅是想測試 manifests 而不想執行佈署可以使用 –noop

 

最後你收到的訊息應該是 Applied catalog,表示執行完成,可以檢測安裝的 apache or chrony,如果出現錯誤代表 manifests 寫的有誤。

 

 

 

 

 

參考資料:

Image from people.cs.ksu.edu

 

文章連結: https://shazi.info/%e3%80%90devops%e3%80%91puppet-%e8%87%aa%e5%8b%95%e5%8c%96%e9%83%a8%e7%bd%b2-%e8%a8%ad%e5%ae%9a%e7%ac%ac%e4%b8%80%e5%80%8b%e8%87%aa%e5%8b%95%e4%bd%88%e7%bd%b2%e5%b7%a5%e4%bd%9cmanifests/ | Mr. 沙先生

該文章由 shazi7804 於2017年01月10日發表在 Puppet 分類下, 你可以發表回文,並在保留原文地址及作者的情况下引用到你的網站或部落格。
原文轉載請註明: 【DevOps】Puppet 4 自動化部署 – 設定第一個自動佈署工作(manifests) | Mr. 沙先生
標籤: , , ,

【DevOps】Puppet 4 自動化部署 – 設定第一個自動佈署工作(manifests):給Mr.沙先生一點建議

發表回文