Puppet系列之一:自动化配置管理平台介绍
1 概述
通过安装部署Puppet C/S模型,实现Puppet Server端管理所有被控制机的整个生命周期:从初始化到软件升级、从配置文件创建到测试部署、从系统维护到服务器迁移等。Puppet能够持续化的与被控制机进行交互,从而实现配置文件的及时检测更新。结合SVN版本控制系统,puppet可在更新之前将当前正在运行的环境以版本的方式保存到SVN版本控制系统中,方便以后通过puppet更新出错或者需要回滚到之前的某一个环境时快速恢复。
2 关于Puppet
2.1 Puppet简介
Puppet是由Puppetlabs公司开发的系统管理框架和工具集,被用于IT服务的自动化管理。由于良好的声明式语言和易于扩展的框架设计以及可重用可共享的模块,使得Google、Cisco、Twitter、RedHat、New York Stock Exchange等众多公司和机构在其数据中心的自动化管理中用到了puppet。同时,puppet在Openstack中也发挥着重要的作用:Openstack-intra社区将其用于Openstack wiki系统,持续集成系统等等的运维管理;此外社区的puppet-openstack项目用于完成Openstack服务的自动化部署和管理,目前已经在stackforge中托管并通过Openstack的Gerrit系统来管理代码提交;此外,Cisco,RedHat,Miriantis等多家公司的Openstack发行版或部署工具中均使用到了puppet-openstack。目前,Puppet在UnitedStack的日常运维管理和产品的自动化部署中也起到了重要作用。
基于Ruby开发,并使用Apache 2.0 license协议授权的开源软件,分企业版和开源版;
主要由Luke Kanies和他的公司Puppet Labs开发;
基于C/S架构,它既能以客户端-服务端的方式运行,也可以独立运行;
Puppet对于系统管理员是抽象的,只依赖于ruby与facter;
可以通过服务器端触发或者节点自动同步的方式进行交互;
Puppetlabs官网http://www.puppetlabs.com/ ;
目前最新版本为3.4.3;
注:2.7.0以前使用GPLv2协议授权 。
2.2 Puppet功能
Puppet 能管理多达将40多种资源管理,例如:file、user、group 、host、package、service、cron、exec、yumrepo等,适合管理一台主机或者虚拟机的整个生命周期:从初始化安装到软件升级,从系统维护到服务器迁移,从SSH配置到Apache虚拟主机创建。Puppet被设计成能够持续化的与被控制机进行交互,和Cobbler不同的是Puppet不仅仅提供一个搭建主机系统的服务,它还提供管理操作系统之上应用服务器的工具。
2.3 Puppet内部工作流程
2.4 Puppet模型
部署:通过C/S模式或者S模式进行部署,通过触发或者主动定时同步进行更新
配置语言及资源抽象:通过Puppet语言定义一系列的具有依赖关系的资源将主机系统上的配置、服务等元素进行抽象,并以状态的形式表现出来。
事物层:对Puppt语法配置进行解释和编译然后同步到agent上应用配置,并向Master端返回运行结果
2.5 Puppet目录结构
2.5.1 Puppet目录结构:
manifests/init.pp必须存在
主配置为puppet.conf
2.5.2 Puppet模块结构:
files目录存放文件
manifests目录存放pp文件
templates目录存放erb模版
2.6 关于嗅探器facter
facter是一个系统盘点工具,它提供的一个标准方式去获得客户端环境变量等相关信息,并自动创建为可以被Puppet使用的变量。
Facter能获得哪些信息
2.7 Puppet开源版与企业版对比
3 总结
此文是在大神www.kisspuppet.com博客的基础上,结合自身学习所得。在后续Puppet系列中,将会介绍Puppet自动化配置管理平台的搭建、Puppet与SVN的结合、Puppet利用Nginx多端口实现负载均衡等技术。
——RangoChen
转载于:https://blog.51cto.com/rangochen/1371894