基于Puppet的自动化配置服务器系统
2016-12-04 16:57
344 查看
Puppet简介
认识Puppet
Puppet是一个跨平台的集中化配置管理系统,它使用自有的描述语言,可管理配置文件、用户、Cron定时任务、软件包、系统服务等,Puppet把这些统称为“资源”。Puppet的设计目标就是简化对这些资源的管理以及妥善处理资源之间的依赖关系。
国内外有很多公司都在使用Puppet,国外有Twitter、迪斯尼、Oracle/Sun、Google、RedHat等,国内有新浪、阿里巴巴、百度、腾讯、奇虎360、小米等。(《Puppet实战》刘宇著)
Puppet工作形式
Puppet是基于Ruby语言并使用Apache协议授权的开源软件,它既能以客户端-服务端(C/S)的方式运行,也能独立运行。C/S方式运行时,客户端默认每30分钟会与服务端确认一次更新,以确保配置的一致性;当配置更新时,服务端也可以通知客户端实时更新配置。
在Puppet中,服务端叫做Master,客户端叫做Node,客户端的Puppet也叫做Agent;Node在向Master发送本机信息后,获取对应本机的配置文件(Catalog),Puppet在根据Catalog配置好后将结果反馈给Master。
在CentOS下安装Puppet
本人安装Puppet及测试的环境为CentOS 6及以上,以下内容可能仅适用于CentOS 6及以上版本。(PS:以下终端命令中,前面的 # 符号是代表的root用户命令提示符,不用输入到终端上。)0 前期工作
0.1 使用ntp同步时间
由于puppet会定期进行配置的更新同步,所以会依赖于系统时间,如果各服务器系统时间有太大差距的话,同步可能会失败,所以要先同步一下服务器的时间。第一种方法是通过
ntpdate time.nist.gov命令同步,可添加定时任务进行同步,不过这种方法并不推荐,因为
ntpdate命令同步时间比较粗暴,是跳跃式的同步,可能会对服务器上的一些依赖于时间的任务会有影响。添加定时任务同步时间示例如下:
# vim /etc/crontab服务同步时间,先配置好ntpd的配置文件:*/10 * * * * /usr/sbin/ntpdate time.nist.gov
第二种方法是通过[code]ntpd
vim /etc/ntp.conf,在其中添加:
server 1.pool.ntp.org
server 2.pool.ntp.org
server cn.pool.ntp.org prefer
如图:
之后启动
ntpd服务:
# service ntpd start(CentOS 6) 或
# systemctl start ntpd.service(CentOS 7),然后可用
# ntpq -p查看同步状态:
设置
ntpd服务开机启动:
# chkconfig ntpd on(CentOS 6) 或
# systemctl enable ntpd.service(CentOS 7)。
0.2 关闭selinux
selinux是Linux系统的一种访问控制体系,很多时候在服务器上配置一些工具时遇到的问题都是selinux的锅,所以要省心不费力配置selinux的话,就直接关掉它吧:# vim /etc/selinux/config
把
SELINUX=enforcing改成
SELINUX=disabled,如图:
重启系统,用命令
# getenforce可查看selinux的状态。
0.3 关闭防火墙或开放防火墙端口
Puppet需要用到网络同步状态,故需要开启防火墙的8140端口,或者干脆关闭防火墙。CentOS 6:
关闭防火墙:# service iptables stop # chkconfig iptables off
开放8140端口:
# iptables -A INPUT -p tcp --dport 8140 -j ACCEPT # service iptables save
CentOS 7:
关闭防火墙:# systemctl stop firewalld.service # systemctl disable firewalld.service
开放8140端口:
# firewall-cmd --permanent --add-port=8140/tcp --zone=public # firewall-cmd --reload
1 安装Puppet
Puppet有很多种安装方法,本人使用的是最简单方便的yum安装,主要需要安装两个源:epel源和puppetlabs源。1.1 安装epel源:
很简单,CentOS 6和CentOS 7都是一样的方法:# yum install -y epel-release
1.2 安装puppetlabs源:
CentOS 6:
# rpm -Uvh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm # rpm --import http://yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs[/code]CentOS 7:
# rpm -Uvh http://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm # rpm --import http://yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs[/code]1.3 安装ruby
Puppet是基于ruby语言编写的,故需要先安装ruby:# yum install -y ruby ruby-libs ruby-shadow1.4 安装Puppet服务端和客户端
本人所用Puppet是以客户端-服务端(C/S)的方式运行,故需要分别在两台服务器上安装客户端和服务端。服务端(master,IP: 192.168.18.130):
# yum install -y puppet puppet-server facter客户端(agent,IP: 192.168.18.131):
# yum install -y puppet facter1.5 配置系统
1.5.1 配置主机名
Puppet是通过主机名来识别各客户端的连接的,故需要配置好主机名,要有一定的规律,后面才好用正则表达式匹配。
CentOS6:# hostname puppet.example.com # vim /etc/sysconfig/network HOSTNAME=puppet.example.com
CentOS 7:# hostnamectl set-hostname puppet.example.com1.5.2 配置hosts
若服务器所用主机名不是有效的域名,则需要配置hosts文件,确保服务端和客户端两边能ping通:# vim /etc/hosts 192.168.18.130 puppetmaster.example.com puppet 192.168.18.131 node1.example.com2 配置Puppet
yum安装的Puppet配置文件默认为/etc/puppet/puppet.conf。2.1 服务端:
# vim /etc/puppet/puppet.conf [master] pluginsync = true reports = store environment = production certname = puppetmaster.example.com
如图:2.2 客户端:
# vim /etc/puppet/puppet.conf [agent] certname = node1.example.com server = puppetmaster.example.com report = true listen = true
如图:
由于配置了listen = true,故还需要:# vim /etc/puppet/auth.conf path /run method save auth any allow puppetmaster.example.com
如图:3 启动Puppet
先在服务端的/etc/puppet/manifests中创建site.pp文件,默认情况下,客户端连接master时会先读取此文件:# cd /etc/puppet/manifests # vim site.pp notify { "测试Puppet": }
启动master服务:# service puppetmaster start(CentOS 6)或# systemctl start puppetmaster.service(CentOS 7)。不过第一次启动建议用# puppet master --verbose --no-daemonize,这样能够看到详细的调试信息:
启动agent服务:# service puppet start(CentOS 6)或# systemctl start puppet.service(CentOS 7)。同样,第一次启动建议用# puppet agent --verbose --no-daemonize --debug,这样能够看到详细的调试信息:
出现Did not receive certificate,说明master没有认证agent,返回master进行认证:# puppet cert --list可以查看请求认证的agent:# puppet cert --sign node1.example.com给agent认证签名:
返回agent可看到:
说明agent已连接master成功,并读取到“测试Puppet”这个notify资源。4 结束语
至此,Puppet的简单搭建算是成功了,此文就仅讲到这里,后面会另开文章详细介绍Puppet的使用,如配置文件各项的意义、文件结构、资源的用法等等。
相关文章推荐
- 基于Linux系统的PPPOE拔号服务器的配置
- 记录基于Debian系统的Apache服务器多站点配置
- 基于linux系统平台的ftp服务器配置
- 中小企业服务器配置方案(文件服务器之NFS篇及后 网络文件系统(Network File System)
- FREEBSD5.4的系统安装与服务器配置手册
- windows安装基于Apache的SVN服务器(包括SSL配置)[
- windows安装基于Apache的Subversion服务器(包括SSL配置)
- 基于微软公司DNA模式的办公自动化系统
- 基于Vxworks的工业设备和工业自动化开发系统 实时系统图形界面-Tilcon
- RHEL下安装配置基于2台服务器的MYSQL集群
- 解决关于"因为配置类型不正确,系统无法开始服务器进程..."的错误
- windows安装基于Apache的SVN服务器(包括SSL配置)[2007-8-19更新]
- 基于数据库的站点导航提供程序,适合一般应用系统的管理后台的快速配置
- 基于系统真实数据的TUXEDO应用服务器压力测试的研究与实现
- 配置基于接口地址池的DHCP服务器
- 在嵌入式Linux 系统中实现基于Web 的配置管理
- [转贴]如何集成一套基于CVS的配置管理系统
- xp系统中配置DCOM应用服务器
- 使用sp_configure 系统存储过程,设置服务器配置选项
- windows安装基于Apache的SVN服务器(包括SSL配置)