标签归档:puppet

Centos6.5下安装Puppet及测试

安装前注意事项
  1. Puppet master尽量使用高配置server
  2. 任何官方未支持的系统也可以正常运行puppet,前提是要装合适的版本的ruby环境
    请参考:http://docs.puppetlabs.com/puppet/latest/reference/system_requirements.html#basic-requirements
  3. master防火墙放行8140端口给agent
  4. 每个节点都必须有一个唯一的主机名,正解析和反解析都被正确配置,如果没有DNS服务,必须在每个节点上配置/etc/hosts
    :默认情况下puppet的master的主机名是puppet
  5. 由于Puppet master同时扮演着CA(认证授权机构)的角色,需要时间同步,启动ntpd服务;
  6. 两种工作模式:Master/Agent、Standatone
环境说明

192.168.10.216   Puppet Agent   c1.geekwolf.github.io
192.168.10.217   Puppet Agent   c2.geekwolf.github.io
192.168.10.218   Puppet Master   m.geekwolf.github.io

安装步骤
安装puppet

rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
说明:若要测试RC版及相关软件编辑/etc/yum.repos.d/puppetlabs.repo:

配置好hostname,并将解析写进hosts同步到所有节点
在master:192.168.10.218安装puppet-server

在c1 c2 上安装puppet

配置puppet agent c1 c2指定Puppet Master地址

证书管理

A.手动签发证书
c1、c2申请证书,由于已经配置了server=m.geekwolf.github.io,故申请时不必在指定server

在Master上管理证书:
签发证书:

注销证书:

清除证书:

B.自动签发证书
在Puppet Master创建/etc/puppet/autosign.conf文件
*.geekwolf.github.io (geekwolf.github.io域的申请会自动签发)
service puppetmaster restart
所有节点上执行
rm -rf /var/lib/puppet/ssl

然后所有的节点申请签名
puppet agent -t —server m.geekwolf.github.io

参考文档: 多CA配置

测试

初认识Puppet

自动化运维都有哪些开源软件?

初始化:Kickstart、Cobbler、 Rpmbuild/Xen、Kvm、Lxc、Docker/Openstack、Cloudstack、Opennebula、Eucalyplus
配置类工具:Chef、Puppet、Func、Cfengine
命令和控制类工具: Fabric、Salstack、Ansible、Capistrano、Pssh、Dsh、Expect
监控类工具:Cacti、Nagios、Zabbix、Ganglia
推荐阅读:http://hotpu-meeting.b0.upaiyun.com/2014dtcc/post_pdf/liuyu.pdf

什么是Puppet?
puppet是一种Linux、Unix平台的集中配置管理系统,使用ruby语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系

Puppet都有哪些特性?

  • 可自动化重复任务、快速部署关键性应用及本地或者云端完成主动管理变更和快速扩展架构规模等
  • 遵循GPL协议,基于ruby开发,2.7.0以后使用Apache 2.0 License
  • 对于sa来讲是抽象的,只依赖于ruby与facter
  • 基于C/S架构,配置master和agent
  • 默认agent每30分钟连接到puppet master
  • 能管理多达40多种资源,如:file、user 、group、host、packeage、service、cron、exec、yumrepo等,适合整个软件生命周期的管理

puppet的整个生命周期
供应(provisioning:包安装)—>配置(configuration)—>联动(orchestration)—>报告(reporting)

Puppet适用于哪些场合?

  • 初始化配置、修复、升级、审计
  • 统一安装、配置管理软件
  • 统一配置系统优化参数
  • 定期检测服务是否运行
  • 快速替换集群时设备的角色

Puppet社区版和企业版本功能上有什么差别?

cb

请参考:http://puppetlabs.com/puppet/enterprise-vs-open-source

Puppet支持哪些系统?

zcos

Puppet架构是怎样的?

ppjg

Puppet如何工作的?

yl

  所有配置信息为实现其通用性,在master端通常被定义为modules—class—resource(管理和被管理的对象)
资源组成类,类封装成模块
puppet只定义目标状态,不用关心实现过程;
module(class(resource))—>node ‘FQDN’ {class1,class2}—>agent(facter)报告facter给master —>master根据facter信息生成相应的catalog结果—>agent 应用catalog

流程简述如下:

  1. 客户端puppetd向master发起认证请求。
  2. Puppet Master告诉client是合法的。
  3. 客户端puppetd开始调用facter,facter可以探测出主机的一些变量,例如主机名,内存大小,IP地址等。pupppetd 把这些信息通过ssl连接发送到服务器端。
  4. 服务器端的puppet Master 检测客户端的主机名,然后找到manifest里面对应的node配置, 并对该部分内容进行解析,解析分为几个阶段,语法检查,如果语法错误就报错。如果语法没错,就继续解析,解析的结果会生成一个中间的“伪代码”(catalog),然后把伪代码发给客户端。
  5. 客户端接收到“伪代码”,并且执行。
  6. 客户端在执行时判断有没有file文件,如果有就向Fileserver发起请求。
  7. 客户端继续判断有没有配置Report。如果配置,就把执行结果发送给服务器。
  8. 服务器端把客户端的执行结果写入日志。并可以发送给报告系统(DashBoard)

Puppet组织结构是怎样的?

Puppet的目录结构描述如下: |— puppet.conf # 主配置配置文件
|— fileserver.conf #文件服务器配置文件
|— auth.conf #认证配置文件 (只允许域内认证)
|— autosign.conf #自动验证配置文件
|— tagmail.conf # 邮件配置文件(将错误信息发送)
|— manifests # 文件存储目录(puppet会先读取该目录的.pp文件<site.pp>)
|— nodes
| | | puppetclient.pp #puppet解析主配置文件所有的模块和节点都在此文件里include
| |— site.pp # 定义puppet相关的变量和默认配置
| |— modules.pp # 加载class类模块文件(include nginx)
|— modules # 定义模块
| —nginx # 以nginx为例
| |— file
| |— manifests
| | |— init.pp #类的定义,类名必须与模块名相同
| |—– templates # 模块配置目录,可以被模块的manifests引用
| | |— nginx.erb #erb模板

学习Puppet去哪里?

Puppet相关文档:http://docs.puppetlabs.com/
常用模块下载地址: https://forge.puppetlabs.com/
PuppetDashboard下载地址:https://downloads.puppetlabs.com/dashboard/
PuppetDashboard帮助文档:http://docs.puppetlabs.com/dashboard/
Puppet中文wiki:http://puppet.wikidot.com/
Puppet中文论坛:http://www.puppetfans.com/
Puppet运维自动化文档:http://pan.baidu.com/s/1c0hBMgg
Puppet简单安装可以参考:http://www.chenshake.com/puppet-study-notes/#i-3

参考 南非蜘蛛