puppet配置使用

openqrm將puppet作爲plugin集成進去。但是遠達不到puppet原系統的提供的功能。
下面是我在openqrm中去安裝、配置、使用puppet。
1、 首先要弄懂puppet是什麼,個人覺得這個實在太重要了,不然很難理解puppet的使用。
Puppet是數據中心中,自動配置工具。客戶端通過向服務器請求,將需要配置的服務,
或者操作命令從服務器端pull到本地,然後再應用運行。從而達到對衆多節點的管理
puppet有兩種結構:serverless模式、C/S模式。建議從serverless出發理解其結構特徵。
這裏從C/S模式來描述puppet結構。
具體結構參考:
[url]http://docs.puppetlabs.com/learning/agent_master_basic.html[/url]

在以上的結構中,Puppet使用ssl認證來保護master與agent之間的通信,所以沒用通過認證,agent就不能完全運行,agent必須通過認證。
當agent發起一個請求之後,master就會去agent進行認證,認證通過之後,master會編譯其上寫好的manifest代碼,並在agent上創建一個catalog信息。Agent會將catalog中保存的configuration應用到其自身之上,即安裝軟件、或者配置某個服務等等。
這裏有幾個術語說明一下:
Manifest:是一個使用puppet語言寫成的代碼(這個語言是puppet自帶的,應該是爲了統一接口,或者爲了實現其RAL而創立的),以.pp爲後綴,這些代碼總的來說,就描述了agent需要完成的操作。C/S模式下,manifest是放在master端的,serverless模式,manifest位於agent端。在C/S模式下,master負責對manifest進行編譯。
Catalog:就是所有將要被應用到agent端的資源集(資源可以是文件、用戶、服務、甚至是一段shell命令)
關於其他屬性請參考:
[url]http://docs.puppetlabs.com/learning/agent_master_basic.html[/url]


2、 大致瞭解了puppet的結構,現在就將如何在openqrm中使用他。
首先要安裝,客戶端、和服務器端(這裏最好讓服務器端是與openqrm端處於同一端)
我的環境是客戶端爲centos 5.4,服務器端爲 rhel6,這裏採用yum安裝方法:
rpm -ivh http://yum.puppetlabs.com/el/6/products/i386/puppetlabs-release-6-1.noarch.rpm


客戶端:
yum install puppet  –y

服務端:
 Yum install puppet-server –y 

其中會發現會有有些依賴包沒有安裝,可能需要手動下載安裝。

或者直接下載rpm進行安裝:
下載地址:http://yum.puppetlabs.com/el/5/products/i386/
注意:要在openqrm中使用puppet必須要在服務器端(master)安裝 puppet服務器,(puppet客戶端(agent)可選)
3、 配置puppet。
*首先是前期環境:dns。Puppet 的agent和master是通過主機名進行識別對方的。所以要配置dns。
或者如果只是測試,可以修改agent與master端/etc/hosts文件,是雙方都能識別對方。
*注意agent與master雙方的時鐘要一致,可以自己搭建ntp服務器,或者直接同步國家標準時間服務器:
ntpdate 210.72.145.44



*agent端配置:
/etc/pupper/puppet.conf
[agent]模塊:
server = 服務器端主機名(hostname)
certname = agent主機名
report = true
pluginsysc = false(如果你有自己定義的plugin,需要將其設定爲true,如果沒有就設爲false,一樣OK)

這部分概念參考:
[url]http://docs.puppetlabs.com/guides/plugins_in_modules.html
http://docs.puppetlabs.com/puppet/2.7/reference/modules_fundamentals.html
[/url]

*服務器(master端)配置。
我的試驗環境中,採用了默認配置,什麼都沒改。
4、 使用puppet:
在客戶端:
Puppet agent –test

若出現,如下信息
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
info: Creating a new SSL certificate request for yyp102
info: Certificate Request fingerprint (md5): 8C:78:19:09:BB:7E:44:9C:44:D6:93:29:EA:7D:CF:9A
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
Exiting; no certificate found and waitforcert is disabled
說明agent端沒有獲得master端的認證,
這是在master端執行:
puppet cert list

warning: You have configuration parameter $templatedir specified in [puppetmasterd], which is a deprecated section. I'm assuming you meant [master]
yyp102 (8C:78:19:09:BB:7E:44:9C:44:D6:93:29:EA:7D:CF:9A)
可以看到有個yyp102還沒有需要認證,執行:
puppet cert sign yyp102。


說明:
有的時候,有需要agent重新申請認證:
在master端
puppet cert clean yyp102
在agent端:
rm -f /var/lib/puppet/ssl/certs/yyp102.pem
puppetd --test --trace --debug
沒有看到異常錯誤就代表,此時配置是OK的

5、 結合openqrm使用:
在正確配置了puppet之後,啓動openqrm中puppet插件,並在openqrm的deployment/puppet/apply選擇,已有的資源(這個資源是openqrm的資源,不是puppet中的資源),然後選擇某個資源之後,會看到puppet默認配置group,
選中其中的組件,並update。
這時
cd /etc/puppet/manifests (這個目錄,不知道記沒記錯,如果不在這個目錄,就到
openqrm所在的目錄。默認爲/usr/share/openqrm/plugin/puppet/etc/puppt/manifests/目錄)
# ls
appliances classes groups site.pp
會在appliances 目錄下生成一個以剛剛openqrm資源命名的.pp文件。這裏以之前的yyp102爲例。
注意,這裏的命名中多了一個oqnet.org,這個是puppet默認的域名,爲了能做到自動化,請將puppet的域名改掉(具體怎麼改,我也沒試過)


# cat appliances/yyp102.oqnet.org.pp
node 'yyp102.oqnet.org' {
include webserver
}
之所以要提一下這個“多了一個oqnet.org”,原因是,如果我的客戶端yyp102沒有域名,
這裏需要將“oqnet.org”去掉,不然時延的時候就報錯。
注:既然是學習openqrm集成puppet的使用,這裏要看看webserver的內容。

6、 以上配置,
在agent端運行:
# puppetd --test --trace --debug
這時就能看到運行結果。

還可以在master端運行一個命令,也同樣可以將配置應用到agent端。
puppet kick -d --host yyp102

具體請參考:
http://blog.sina.com.cn/s/blog_4e424e210100plcw.html

7、 要寫自己manifest,必須要學習puppet語言。

[b][color=red]以上爲原創,轉載請註明出處。[/color][/b]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章