puppet安裝與使用--模塊結構(iptables與rsync模塊)

 puppet安裝與使用--模塊結構(iptablesrsync模塊)

模塊結構
    一個模塊就是一個/etc/puppet/modules目錄下面的一個目錄和它的子目錄,在puppet的主文件site.pp裏面用import   modulename可以插入模塊。新版本的puppet可以自動插入/etc/puppet/modules目錄下的模塊。引入模塊,可以結構化代碼,便於分享和管理。

    例如關於apache的所有配置都寫到apache模塊下面。一個模塊目錄下面通常包括三個目錄:filesmanifeststemplatesmanifests   裏面必須要包括一個init.pp的文件,這是該模塊的初始(入口)文件,導入一個模塊的時候,會從init.pp開始執行。可以把所有的代碼都寫到init.pp裏面,也可以分成多個pp文件,init   再去包含其他文件。files目錄是該模塊的文件發佈目錄,puppet提供一個文件分發機制,類似rsync的模塊。templates   目錄包含erb模型文件,這個和file資源的template屬性有關。

網上有好多結構圖,還不錯

結構類似,自己也可以跟着創建相應目錄,如下圖,我的測試機器上目錄結構:


結構與上敘述完全相同,每個模塊下manifests下總會有一個init.pp文件,總規是一個套一個

iptalbes模塊例子使用

結構與上,在/etc/puppet/modules模塊下增加rsync模塊


事先要把給客戶端定製好的iptables.sh腳本放入files下,編寫init.pp



創建一個class 類,在模塊modules.pp中調用即可,主入口爲site.pp,所以在site.pp要調用modules.pp

上圖中難理解的就是source => "puppet://$fileserver/iptables/iptables.sh",這個是puppet代碼中就寫好的,每個模塊files下面的文件,都可以寫成 puppet://$fileserver/模塊名/files文件下的文件名來調用 notify指定了順序,在執行exec前執行file,因爲puppet程序裏面定義的資源是同時執行的,不分先後,所以控制先後順序必須的利用某個參數


模塊寫好後,看/etc/puppet下文件 內容,如下:

modules.pp中 import "模塊名”,在site.pp裏面 import modules.pp

還有個節點pp,可義爲nodes.pp,在init.pp裏也有import,nodes.pp裏面可以這樣寫
 node default {

            include 'iptables'} 

對默認節點使用iptables,要結某個節點使用iptables,可以node '節點名' {}

驗證測試

rsync模塊例子使用

Puppet結合rsync同步文件是參考網上一篇文章,模塊是由別人寫的,可以下載自由使用,但測試後,發現rsync客戶端同步還是有問題,所以自己在裏面填了部分client,可以實現文件同步

參考文章網址:http://www.mysqlops.com/2012/02/20/puppet-rsync.html#comment-1564
當然,同步文件也可以使用puppet文件服務器,要用到fileserver.conf文件 ,同步小文件可以,但考慮到要同步大文件還是考慮用rsyncx效率要高點

根據文章中,先下載兩個模塊到modules
cd /etc/puppet/modules/   
git clone https://github.com/onyxpoint/pupmod-concat && mv pupmod-concat concat 
git clone https://github.com/onyxpoint/pupmod-rsync && mv pupmod-rsync rsync 

Git如果沒有裝的話,yum下,git好象類似svn(有待研究),git時可能會報個錯,如下解決即可
Cloning into cancan…
error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while 

 

。。。。。 
解決辦法:
git config --global http.sslVerify false

下載後,就該配rsync服務了,我選擇puppet1(server)作爲rsync-server,node.pp裏面如下配置


puppet1運行 puppetd --test --server puppet1 ,即可生成rsyncd.conf文件,啓動rsync服務
(注意:防火牆中要過濾873服務端口)


rsyncd的配置文件 應該大家不默認,不多說了

服務端配置好後,需要配置客戶端了,但按上面那個鏈接來做,我沒有成功,可能跟版本有關,大家可以嘗試下他的做法,我現在共享下我的做法
cd /etc/puppet/modules/rsync/manifests/

進到下載的模塊後,有init.pp  server  server.pp 3個文件,觀察裏面內容,可自己編寫
client.pp  client/rs.pp


回到note.pp 對節點puppet2做下面配置,


注:上面rsync在服務端配置兩模塊,defaulttest,對應路徑都爲puppet1/usr/local/src

note.pp對節點2中,我寫的是定義的模塊名,所以意思就是把puppet1/usr/local/src下的文件同步到puppet2下的/tmp/test /tmp/test1

驗證測試:
puppet1上,有兩文件

puppet2


同步成功

Puppet 功能非常強大,自身包括了很多的資源,根據自己的愛好和自己工作實際所需,可以有選擇有研究,還有cron也是很好用的,並且配置也是比較簡單的,有興趣的可以一起研究

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章