Puppet作為自動(dòng)化部署平臺(tái),它采用C/S的架構(gòu),Master端,將部署要求寫入配置文件,為Client端提供安裝和部署的自動(dòng)化服務(wù),封裝了實(shí)現(xiàn)過程,提高了在數(shù)據(jù)中心部署和維護(hù)服務(wù)器的工作效率。
【關(guān)鍵詞】自動(dòng)化部署 Puppet C/S
隨著信息化建設(shè)的深入,數(shù)據(jù)中心有大量的服務(wù)器硬件平臺(tái)需要進(jìn)行軟件和服務(wù)的安裝和配置。如何提高這些日常繁復(fù)工作的效率,減少管理人員的壓力,各種自動(dòng)化部署工具應(yīng)運(yùn)而生,主要有以下三類:
1 安裝自動(dòng)化工具
它將安裝中所需的安裝包和參數(shù)文件保存到特定計(jì)算機(jī)中,并引導(dǎo)需要安裝系統(tǒng)的服務(wù)器來獲取相應(yīng)的安裝包和參數(shù)設(shè)置文件,替代人工進(jìn)行系統(tǒng)安裝,具體工具有:Kickstart、Cobbler等。
2 服務(wù)部署自動(dòng)化工具
它在控制端保存服務(wù)所依賴的安裝包、主文件、服務(wù)配置文件。當(dāng)客戶端提出申請(qǐng)時(shí),它啟動(dòng)控制端發(fā)送上述內(nèi)容到客戶端,進(jìn)行服務(wù)的部署,具體的工具有Puppet、Func等。
3 系統(tǒng)監(jiān)控自動(dòng)化工具
它主要依靠SNMP協(xié)議,獲取客戶端的系統(tǒng)資源和服務(wù)運(yùn)行參數(shù),以圖表和報(bào)告的形式提供給管理員進(jìn)行控制和統(tǒng)計(jì),并能進(jìn)行日志歸檔、監(jiān)控報(bào)警以及控制指令的下發(fā),具體的工具有Zabbix、Nagios等。
3.1 Puppet技術(shù)架構(gòu)
Puppet 是一種 Linux、Unix、Windows 平臺(tái)的集中配置管理系統(tǒng),使用自有的Puppet描述語言,可管理配置文件、用戶、cron任務(wù)、軟件包、系統(tǒng)服務(wù)等。它由Puppet Labs開發(fā),工作模式為C/S(服務(wù)器端稱為Master,客戶端為Client)模式。這種架構(gòu)運(yùn)行的 Puppet 應(yīng)用常為可調(diào)度的任務(wù)或者是定時(shí)作業(yè)。Master端保存服務(wù)和配置文件,向Client端發(fā)布服務(wù)類型、安裝要求、啟動(dòng)方式的定義文件,Client端默認(rèn)每半小時(shí)檢索Master端,根據(jù)收集的本機(jī)信息向服務(wù)器端進(jìn)行注冊(cè)、認(rèn)證,下載相應(yīng)的服務(wù)安裝包和配置文件,進(jìn)入服務(wù)安裝過程;同時(shí),Master可以以推送的方式將服務(wù)更新推送到Client端,確保服務(wù)器版本的及時(shí)更新。
Master端,將需要發(fā)布的內(nèi)容定義為資源,資源和不同的配置和部署任務(wù)組合成類,以節(jié)點(diǎn)區(qū)分Client的不同要求,再以模塊實(shí)現(xiàn)結(jié)構(gòu)化代碼和共享。
3.2 Puppet架設(shè)
3.2.1 Master架設(shè)
Puppet基于開源平臺(tái),Master適用于各種Linux版本,本例采用CentOS6.5平臺(tái)進(jìn)行安裝,機(jī)器域名為master.niit.com,同時(shí)為niit.com區(qū)域的Client端提供服務(wù)。
(1)為了防止和安全協(xié)議沖突,關(guān)閉Selinux:
setenforce 0 #停止當(dāng)前運(yùn)行
sed -i '/SELINUX/ s/enforcing/disabled/g' /etc/selinux/config #設(shè)置配置文件停止運(yùn)行
(2)開啟NTP服務(wù):
ntpdate s2c.time.edu.cn #使用國(guó)內(nèi)時(shí)間服務(wù)器對(duì)時(shí)
service ntpd start #啟動(dòng)對(duì)時(shí)服務(wù)
chkconfig ntpd on #配置開機(jī)啟動(dòng)服務(wù)
(3)安裝源設(shè)置:
CentOS6.5安裝包中默認(rèn)沒有提供Puppet的安裝包,所以通過Puppet官方安裝包puppetlabs-release-6-5.noarch.rpm,方便yum程序進(jìn)行后續(xù)安裝。
rpm -ivh puppetlabs-release-6-5.noarch.rpm #安裝擴(kuò)展包
yum update #更新yum庫(kù)文件
(4)安裝Puppet-server:
yum install puppet-server #安裝Master端
service puppet-server start #啟動(dòng)服務(wù)
chkconfig puppet-serve on #設(shè)置開機(jī)啟動(dòng)
(5)設(shè)置可以默認(rèn)授權(quán)的客戶端:
touch /etc/puppet/autosign.conf #修改配置文件
修改/etc/puppet/autosign.conf,添加語句:*niit.com
3.2.2 Client架設(shè)
(1)安裝程序。Client端同樣需要進(jìn)行安裝源設(shè)置,獲取在線安裝包。然后按照以下步驟完成配置:
yum install puppet #安裝客戶端
service puppet start #啟動(dòng)服務(wù)
chkconfig puppet on #設(shè)置開機(jī)啟動(dòng)
(2)修改配置文件定位Master端。修改/etc/puppet/puppet.conf文件,添加:server = master.niit.com。
(3)獲取認(rèn)證:向Master發(fā)送SSL連接,實(shí)現(xiàn)注冊(cè),以方便Master端的管理。
puppet agent --test
3.3 自動(dòng)化部署
在搭建好的平臺(tái)上,服務(wù)端按照:設(shè)置部署目錄、編寫部署文件、設(shè)置Client的步驟進(jìn)行。以下為自動(dòng)化安裝mysql的步驟:
3.3.1 設(shè)置部署目錄
mkdir -p /etc/puppet/modules/mysql/{manifests,file,templates}
3.3.2 編寫部署文件
在mannifests目錄下,創(chuàng)建部署文件install.pp,定義安裝源和安裝包內(nèi)容如下:
class mysqld { #定義安裝的類
yumrepo {“repo163”:
descr => “repo163”, #安裝源名稱
baseurl => http://mirrors.163.com/centos/6/os/x86_64/, #安裝名稱位置
gpgcheck => ”0”, #不用校驗(yàn)
enabled => “1”; }
ensure => installed, #確認(rèn)需要安裝
require=> yumrepo[“repo163”];} #安裝源的位置
}
3.3.3 設(shè)置Client節(jié)點(diǎn)
在/etc/puppet/manifests/nodes/agent.niit.com中,添加:node agent.niit.com‘{ include mysqld },在指定節(jié)點(diǎn)安裝mysql。
4 小結(jié)
本文實(shí)現(xiàn)了Puppet平臺(tái)的架設(shè)和mysql的安裝。Puppet平臺(tái)封裝了部署自動(dòng)化實(shí)現(xiàn)的具體細(xì)節(jié),自動(dòng)的實(shí)現(xiàn)了配置文件描述的部署任務(wù)。在實(shí)際的運(yùn)用中,可以通過橫向擴(kuò)展實(shí)現(xiàn)服務(wù)集群,提供系統(tǒng)的可靠性;同時(shí)采用消息中間件Rabbitmq和組件mcollective實(shí)現(xiàn)部署更新的推送。
參考文獻(xiàn)
[1]李新虎,劉正偉,劉俊朋.基于puppet工具的軟件批量部署的實(shí)現(xiàn)[J].信息技術(shù)與標(biāo)準(zhǔn)化,2014(06).
[2]李小文,劉玉龍.基于Puppet的自動(dòng)化部署工具的設(shè)計(jì)與實(shí)現(xiàn)[J].軟件,2015(12).
作者簡(jiǎn)介
張?。?975-),男,江蘇省揚(yáng)州市人。碩士學(xué)位。研究方向?yàn)橛?jì)算機(jī)應(yīng)用、網(wǎng)絡(luò)技術(shù)。
作者單位
南京工業(yè)職業(yè)技術(shù)學(xué)院 江蘇省南京市 210023