Puppet作为自动化部署平台,它采用C/S的架构,Master端,将部署要求写入配置文件,为Client端提供安装和部署的自动化服务,封装了实现过程,提高了在数据中心部署和维护服务器的工作效率。
【关键词】自动化部署 Puppet C/S
随着信息化建设的深入,数据中心有大量的服务器硬件平台需要进行软件和服务的安装和配置。如何提高这些日常繁复工作的效率,减少管理人员的压力,各种自动化部署工具应运而生,主要有以下三类:
1 安装自动化工具
它将安装中所需的安装包和参数文件保存到特定计算机中,并引导需要安装系统的服务器来获取相应的安装包和参数设置文件,替代人工进行系统安装,具体工具有:Kickstart、Cobbler等。
2 服务部署自动化工具
它在控制端保存服务所依赖的安装包、主文件、服务配置文件。当客户端提出申请时,它启动控制端发送上述内容到客户端,进行服务的部署,具体的工具有Puppet、Func等。
3 系统监控自动化工具
它主要依靠SNMP协议,获取客户端的系统资源和服务运行参数,以图表和报告的形式提供给管理员进行控制和统计,并能进行日志归档、监控报警以及控制指令的下发,具体的工具有Zabbix、Nagios等。
3.1 Puppet技术架构
Puppet 是一种 Linux、Unix、Windows 平台的集中配置管理系统,使用自有的Puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。它由Puppet Labs开发,工作模式为C/S(服务器端称为Master,客户端为Client)模式。这种架构运行的 Puppet 应用常为可调度的任务或者是定时作业。Master端保存服务和配置文件,向Client端发布服务类型、安装要求、启动方式的定义文件,Client端默认每半小时检索Master端,根据收集的本机信息向服务器端进行注册、认证,下载相应的服务安装包和配置文件,进入服务安装过程;同时,Master可以以推送的方式将服务更新推送到Client端,确保服务器版本的及时更新。
Master端,将需要发布的内容定义为资源,资源和不同的配置和部署任务组合成类,以节点区分Client的不同要求,再以模块实现结构化代码和共享。
3.2 Puppet架设
3.2.1 Master架设
Puppet基于开源平台,Master适用于各种Linux版本,本例采用CentOS6.5平台进行安装,机器域名为master.niit.com,同时为niit.com区域的Client端提供服务。
(1)为了防止和安全协议冲突,关闭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程序进行后续安装。
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发送SSL连接,实现注册,以方便Master端的管理。
puppet agent --test
3.3 自动化部署
在搭建好的平台上,服务端按照:设置部署目录、编写部署文件、设置Client的步骤进行。以下为自动化安装mysql的步骤:
3.3.1 设置部署目录
mkdir -p /etc/puppet/modules/mysql/{manifests,file,templates}
3.3.2 编写部署文件
在mannifests目录下,创建部署文件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节点
在/etc/puppet/manifests/nodes/agent.niit.com中,添加:node agent.niit.com‘{ include mysqld },在指定节点安装mysql。
4 小结
本文实现了Puppet平台的架设和mysql的安装。Puppet平台封装了部署自动化实现的具体细节,自动的实现了配置文件描述的部署任务。在实际的运用中,可以通过横向扩展实现服务集群,提供系统的可靠性;同时采用消息中间件Rabbitmq和组件mcollective实现部署更新的推送。
参考文献
[1]李新虎,刘正伟,刘俊朋.基于puppet工具的软件批量部署的实现[J].信息技术与标准化,2014(06).
[2]李小文,刘玉龙.基于Puppet的自动化部署工具的设计与实现[J].软件,2015(12).
作者简介
张俊(1975-),男,江苏省扬州市人。硕士学位。研究方向为计算机应用、网络技术。
作者单位
南京工业职业技术学院 江苏省南京市 210023