puppet運維自動化之puppet模塊示例
【puppet 模塊導讀】
在puppet運維管理中,很多同學安裝配置好puppet后,就急不可待的寫puppet模塊,我個人還是建議大家先熟悉puppet各種資源管理后,再寫puppet模塊。假如你已經看完了puppet管理各種資源后,并且熟悉了模塊和類的操作,現在你可以寫自己的第一個puppet模塊,在使用模塊之前我們要知道,puppet的模塊存放的路徑是在哪里?如何引用模塊呢?接下來sky就為大家寫個簡單的puppet模塊供大家參考。
【puppet 模塊基礎】
puppet模塊可以導入,復用都很方便,在這里sky先回答下之前的兩個回答。
1.查看puppet 模塊路徑,可以使用如下命令:
puppetmasterd –configprint modulepath /etc/puppet/modules:/usr/share/puppet/modules ##可以看到這兩個目錄是puppet 模塊默認所在的目錄。
2.要引用 puppet模塊,如果模塊所在上面的兩個默認的路徑可以使用:
import “模塊名”
如果不在,比如我在/data/modules,那么有兩種解決方法:
1.是修改puppet.conf文件,添加目錄到modulepath.舉例 :
modulepath = /data/modules:/etlc/puppet/modules
2.是在引用的是時候用絕對路徑。
import "/data/modules/模塊名"
了解完puppet 模塊基礎后,接下來sky就為大家寫個簡單模塊示例:
【puppet 模塊實例】
現在請跟sky一起來寫簡單的模塊吧:
cd /etc/puppet/modules mkdir -p test/{manifests,files,templates}
這三個目錄說明:files目錄是用來存放同步遠程客戶端的文件或者文件夾,manifests目錄下放.pp文件,而且必須要有init.pp,templates是存放的puppet模板文件,是以.erb結尾的
建立init.pp文件
cat test/manifests/init.pp class test::test { file { "/tmp/sky": owner => root, group => root, ensure => present, content => "www.mysqlops.com test by sky", mode => 644, } }
在/etc/puppet/manifests/site.pp里添加node "web01.test.com" { include test::test }
注:不建議這樣操作,實際生產中,我會在site.pp里添加 import “nodes.pp”,然后在nodes.pp里添加上面的內容。
這樣我們就建立了我們第一個puppet 模塊,sky在到客戶端web01.test.com上運行puppet查看結果:
[root@web01 ~]# puppet agent --server puppet --test info: Caching catalog for web01.fminutes.com info: Applying configuration version '1319738837' notice: /Stage[main]/Test::Test/File[/tmp/sky]/ensure: created notice: Finished catalog run in 0.04 seconds [root@web01 ~]# cat /tmp/sky www.mysqlops.com test by sky
再次驗證,可以看到已經成功運行,已經達到預期的效果。在/tmp/目錄下生成了sky這個文件,有個問題,不知道大家注意到沒有,sky這里并沒有import "test"模塊,而直接使用了include test::test類。有興趣的同學可以試試,再看下效果,
【puppet模塊總結】
模塊是由類構成,但最原始的都是代碼,只要我們平時在puppet運維過程中,經常使用puppet管理常用資源等,還是要不斷的摸索的,不斷總結經驗,puppet運維過程中,如有不清楚的問題,最好通過google,或者去puppetlabs實驗上,去查看手冊。本次puppet模塊示例就到此結束。puppet有更多功能期待大家的發現。