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