安裝好 Master/Agent 架構後,我們就可以將 agent 登記到 master,接著 master 之中建立一個 manifests 資料夾,裡面需建立 .pp 的檔案給 puppet 作遠端部署,puppet 依靠 manifests 遠端 agent 安裝服務、新增使用者帳號和更改檔案內容等等。

筆者會在這篇文章建立一個 site.pp 檔案,然後利用類似 Ruby 程式編寫安裝 Apache 及新增一個使用者帳號程式,希望不僅程式的 IT 管理員也能學會使用。

Agent 記 Master

Step 1首先於 agent 輸入以下指令嘗試登記到 master。

puppet agent –test

Step 2跟著會顯示以下尋找不到認證錯誤訊息,大家不要擔心,因為 master 還沒簽發認證給 agent。

Exiting; no certificate found and waitforcert is disabled

Step 3於 master 之中輸入以下指令便可知道那台 agent 需要簽發認證。

puppet cert list

Step 4然後輸入以下指令簽發認證給 agent.abc.com,這就能夠登記 master。

puppet cert sign agent.abc.com

第一個 manifests

Step 1我們需於 /etc/puppet/ 路徑建立 manifests 資料夾。

mkdir -p /etc/puppet/manifests

Step 2接著於 manifests 資料夾之中建立 site.pp 檔案。

vi /etc/puppet/manifests/site.pp

Step 3加入以下安裝 Apache 程式於 site.pp 之中。

node ‘agent.abc.com’ {

package { ‘httpd’ :

ensure => installed,

}

service {‘httpd’:

ensure => running,

enable => true,

}

}

node 是指將 Apache 部署到那一台 agent。 package 是指安裝那套服務套件。 ensure 是一定要確認完成安裝。 service 之中是用來將 Apache 服務開啟。

加入後記得輸入 :wq 儲存檔案。

Agent 查詢更新

Step 1Agent 預設 30 分鐘向 master 查詢更新,所以我們可以輸入以下指令即時更新。\

puppet agent -t

Step 2然後輸入以下指令檢查是否成功安裝 Apache 服務套件。

rpm -qa | grep httpd

使用者

Step 1我們只要於 site.pp 的下方加入一段 user 程式便可於 agent 建立一位 testing 使用者。

node ‘agent.abc.com’ {

package { ‘httpd’ :

ensure => installed,

}

service {‘httpd’:

ensure => running,

enable => true,

}

user { “testing":

ensure => “present",

shell => ‘/sbin/nologin’,

home => ‘/home/testing’,

managehome => true,

password => ‘123456’,

}

}

user 主要用來新增一位 testing 使用者帳戶。 ensure 是啟動使用者帳戶。 shell 定義使用者環境變數。 home 定義使用者家目錄路徑。 managehome 是用來指定使用者是否有家目錄。 password 定義使用者密碼(能夠輸入 SHA512 加密) 。

Step 2然後同樣於 agent 輸入以下指令即時向 master 查詢更新。

puppet agent -t

Step 3最後利用 vi /etc/passwd 查看使用者是否存在於這個檔案之中,如果有的話表示成功更新。

我們終於在 manifests 建立了一個簡單的程式,方便 IT 管理員遠端更新多台 Linux 系統。但如果有很長的部署步驟需要自動化和想繼承其他 puppet 程式,大家可利用 modules 來編程,其實 modules 是取回 manifests 內的程式,這很像物件導向 Class 的原理,筆者會在下一篇教大家建立 modules。


 (第二篇) 針對複雜 IT 架構:中央跨平台自動更新設置提高效率 – manifests 配置篇

 https://www.facebook.com/hkitblog