我們已經學會怎樣定義 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