puppet運(yùn)維自動(dòng)化之puppet模塊示例
【puppet 模塊導(dǎo)讀】
在puppet運(yùn)維管理中,很多同學(xué)安裝配置好puppet后,就急不可待的寫(xiě)puppet模塊,我個(gè)人還是建議大家先熟悉puppet各種資源管理后,再寫(xiě)puppet模塊。假如你已經(jīng)看完了puppet管理各種資源后,并且熟悉了模塊和類(lèi)的操作,現(xiàn)在你可以寫(xiě)自己的第一個(gè)puppet模塊,在使用模塊之前我們要知道,puppet的模塊存放的路徑是在哪里?如何引用模塊呢?接下來(lái)sky就為大家寫(xiě)個(gè)簡(jiǎn)單的puppet模塊供大家參考。
【puppet 模塊基礎(chǔ)】
puppet模塊可以導(dǎo)入,復(fù)用都很方便,在這里sky先回答下之前的兩個(gè)回答。
1.查看puppet 模塊路徑,可以使用如下命令:
puppetmasterd –configprint modulepath /etc/puppet/modules:/usr/share/puppet/modules ##可以看到這兩個(gè)目錄是puppet 模塊默認(rèn)所在的目錄。
2.要引用 puppet模塊,如果模塊所在上面的兩個(gè)默認(rèn)的路徑可以使用:
import “模塊名”
如果不在,比如我在/data/modules,那么有兩種解決方法:
1.是修改puppet.conf文件,添加目錄到modulepath.舉例 :
modulepath = /data/modules:/etlc/puppet/modules
2.是在引用的是時(shí)候用絕對(duì)路徑。
import "/data/modules/模塊名"
了解完puppet 模塊基礎(chǔ)后,接下來(lái)sky就為大家寫(xiě)個(gè)簡(jiǎn)單模塊示例:
【puppet 模塊實(shí)例】
現(xiàn)在請(qǐng)跟sky一起來(lái)寫(xiě)簡(jiǎn)單的模塊吧:
cd /etc/puppet/modules mkdir -p test/{manifests,files,templates}
這三個(gè)目錄說(shuō)明:files目錄是用來(lái)存放同步遠(yuǎn)程客戶(hù)端的文件或者文件夾,manifests目錄下放.pp文件,而且必須要有init.pp,templates是存放的puppet模板文件,是以.erb結(jié)尾的
建立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 }
注:不建議這樣操作,實(shí)際生產(chǎn)中,我會(huì)在site.pp里添加 import “nodes.pp”,然后在nodes.pp里添加上面的內(nèi)容。
這樣我們就建立了我們第一個(gè)puppet 模塊,sky在到客戶(hù)端web01.test.com上運(yùn)行puppet查看結(jié)果:
[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
再次驗(yàn)證,可以看到已經(jīng)成功運(yùn)行,已經(jīng)達(dá)到預(yù)期的效果。在/tmp/目錄下生成了sky這個(gè)文件,有個(gè)問(wèn)題,不知道大家注意到?jīng)]有,sky這里并沒(méi)有import "test"模塊,而直接使用了include test::test類(lèi)。有興趣的同學(xué)可以試試,再看下效果,
【puppet模塊總結(jié)】
模塊是由類(lèi)構(gòu)成,但最原始的都是代碼,只要我們平時(shí)在puppet運(yùn)維過(guò)程中,經(jīng)常使用puppet管理常用資源等,還是要不斷的摸索的,不斷總結(jié)經(jīng)驗(yàn),puppet運(yùn)維過(guò)程中,如有不清楚的問(wèn)題,最好通過(guò)google,或者去puppetlabs實(shí)驗(yàn)上,去查看手冊(cè)。本次puppet模塊示例就到此結(jié)束。puppet有更多功能期待大家的發(fā)現(xiàn)。