1 实现原理 通过安装部署Puppet C/S模型,实现Puppet Server端管理所有被控制机的整个生命周期:从初始化到软件升级、从配置文件创建到测试部署、从系统维护到服务器迁移等。Puppet能够持续化的与被控制机进行交互,从而实现配置文件的及时检测更新。结合SVN版本控制系统,puppet可在更新之前将当前正在运行的环境以版本的方式保存到SVN版本控制系统中,方便以后通过puppet更新出错或者需要回滚到之前的某一个环境时快速恢复。
2 Puppet介绍2.1 什么是puppetPuppet是由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; 可以通过服务器端触发或者节点自动同步的方式进行交互; 目前最新版本为3.3.1(统计时间为2013年10月18号);
注: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内部工作流程
puppet information 2.4 Puppet模型部署:通过C/S模式或者S模式进行部署,通过触发或者主动定时同步进行更新 配置语言及资源抽象:通过Puppet语言定义一系列的具有依赖关系的资源将主机系统上的配置、服务等元素进行抽象,并以状态的形式表现出来。 事物层:对Puppt语法配置进行解释和编译然后同步到agent上应用配置,并向Master端返回运行结果 2.5 Puppet目录结构2.5.1 Puppet目录结构: manifests/init.pp必须存在 主配置为puppet.conf
puppet information 2.5.2 Puppet模块结构: files目录存放文件 manifests目录存放pp文件 templates目录存放erb模版
puppet information 2.6 什么是facterfacter是一个系统盘点工具,它提供的一个标准方式去获得客户端环境变量等相关信息,并自动创建为可以被Puppet使用的变量。 Facter能获得哪些信息
puppet information 当然你也可以自定义fact,需要使用ruby来编写,可以参考《Puppet高级扩展及操作规范》对应章节。 2.7 Puppet开源版与企业版对比
|