安裝好 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 1:Agent 預設 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