我們已經學會怎樣定義 manifests 檔案了,但有時需要編寫很長的程式,或是需要編寫多個 manifests 程式,然後想將它們合併,所以可利用 modules 定義 Class 程式,以下是一個小小 module 程式來安裝和設定 Apache 服務套件。
事前準備建立新資料夾
Step 1:我們輸入 cd /etc/puppet/modules/ 進入 modules 資料夾。
Step 2:接著輸入以下指令建立資料夾,因為要於 apache 資料夾內再建立兩個資料夾,所以會以 -p 來一次過建立。
mkdir -p apache/manifests
mkdir -p apache/files
Step 3:然後輸入以下指令建立 init.pp 檔案,大家記得 module 是使用 init.pp 檔案。
vi apache/manifests/init.pp
建立 Class 於 manifests 之中
Step 1:在 init.pp 加入以下 class 程式碼。
class apache {
package { ‘httpd’:
ensure => present,
} ->
file { “/var/www/apache": # 建立 Document 根根目錄
ensure => “directory",
owner => “apache",
group => “apache",
mode => 750,
} ->
file { ‘/var/www/apache/index.html’: # 建立 Index 檔案
ensure => file,
content => “Add this text into index.html",
mode => ‘0644’,
} ->
file { ‘/etc/httpd/conf.d/apache.conf’: # Agent 路徑檔案
ensure => file,
mode => ‘0600’,
source => ‘puppet:///modules/apache/apache.conf’, # 這個 puppet:// URL是用來自建檔案使用的
} ~>
service { ‘httpd’:
ensure => running,
enable => true,
}
}
加入後記得輸入 :wq 儲存檔案。
Step 2:然後輸入以下指令將 “alias /apache /var/www/apache” 加入 custom_apache.conf 檔案之中。
echo “alias /apache /var/www/apache" > /etc/puppet/modules/apache/files/custom_apache.conf
備注:以上指令是用來給 puppet:///modules/apache/apache.conf 使用,大家可以看到為何沒有 files 這個資料夾,原因是 puppet:// URL 包含 files 資料夾,而 files 資料夾內的檔案是有可能作新增或修改的。
於 site.pp 之中定義 class
Step 1:我們辛辛苦苦製作出來的 apache class 需要於 site.pp 檔案定義,請先輸入以下指令進入 site.pp 檔案。
vi /etc/puppet/manifests/site.pp
Step 2:然後加入以下程式碼,這可於 client.abc.com 的 agent 安裝和修改有關 apache class 之中的內容。
node ‘client.abc.com’ {
include apache # 這個名稱一定需要與 module 資料夾和 class 名稱相符
}
加入後記得輸入 :wq 儲存檔案。
Step 3:然後同樣於 agent 輸入以下指令即時向 master 查詢更新。
puppet agent -t
Step 4:最後檢查是否安裝了 Apache 服務套件,還需檢查一下是否建立了 /var/www/apache 資料夾,以及進入此資料夾檢查是否建立了 index.html 檔案等等。
Puppet Open Source 版本是一套全程式編寫系統,筆者只是教了一些簡單的程式碼,希望大家明白。如果不想麻煩的話,可購買 Puppet Enterprise 版本使用其好用 GUI 介面。
(第三篇) 針對複雜 IT 架構:中央跨平台自動更新設置提高效率 – modules 配置篇
https://www.facebook.com/hkitblog