nullPuppet 应用与架构Puppet 应用与架构 吴问志 网站:www.mysqlops.com/category/puppet
邮箱: puppetfans@sina.com
微博:puppetfans@sina.com引言引言机器越来越多
应用越来越复杂
架构越来越复杂
审记越来越难
内容概要内容概要1.puppet 介绍
- 什么是puppet
- puppet 能做什么
- puppet 如何做到
- puppet 目录结构介绍
2.运维自动化工具对比
- puppet vs cfengine
- puppet vs chef
3.puppet 使用时注意事项
4.puppet 应用案例
-puppet 管理用户
-puppet nginx 管理
-puppet kick 介绍
-puppet MCollective 介绍
- puppet func 介绍
5.puppet 架构与集群
-puppet 架构
-puppet 集群
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
- puppet 集群核心思想
-puppet性能测试方法
6. QA
-puppet 未来
puppet 介绍puppet 介绍什么是puppet
遵循GPL
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
(2.7.0),基于ruby 语言开发的系统配置管理工具
说明性语言表达系统,用库实现配置
基于C/S架构,配置客户端和服务端,也可以独立运行
puppet 对于系统管理员是抽象,只依赖于ruby与facter.
默认情况下,客户端每30分钟连接到puppetmaster
puppet 能做什么
puppet 能管理多达将40多种资源管理,例如:file,user group, host,package,service,cron,exec,yumrepo适合整个软件生命周期管理。
注:2.7.0以后使用(Apache 2.0 license )
注:puppet特殊资源--虚拟资源
. puppet 有个特殊的Type,例如Package,User等。这个Type就是告诉puppet被管理的是什么资源。
puppet 的适用场景puppet 的适用场景puppet 是如何工作的puppet 是如何工作的puppet 工作
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
puppet 工作流程 注:内部处理过程是抽象的Puppet 模型参考Puppet 模型参考Puppet 三层模型
package { "nginx":
ensure => installed,
}puppet 工作流程分拆puppet 工作流程分拆Facter介绍Facter介绍Facter是什么
facter是内置的puppet工具,它提供的一个
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
方式去获得客户端环境变量等相关信息
Facter能获得哪些信息
#facter -p
architecture => x86_64
id => root
interfaces => eth0,lo
ipaddress => 192.168.200.63
ipaddress_eth0 => 192.168.200.63
。。。。。。。
ikernprocessor0 => Intel(R) Xeon(R) CPU E5405 @ 2.00GHz
prouptime => 27 days
uptime_days => 27
uptime_hours => 651
uptime_seconds => 2344200
注:这些变量可以直接来使用,例如: {$::ipaddress}或者$::ipaddress
当然你也可以自定义fact,需要使用ruby来编写。
开源社区版和企业版对比开源社区版和企业版对比puppet 目录结构与模块介绍puppet 目录结构与模块介绍puppet 目录结构 (右一)
注:manifests/site.pp必须存在
puppet 模块结构(右二)
注: manifests/init.pp必须存存
Puppet 与其它自动化工具对比Puppet 与其它自动化工具对比puppet VS cfenginepuppet VS chefPuppet 使用注意事项Puppet 使用注意事项1.主机名使用FQDN格式命名,需要DNS或者hosts解析
2.C/S两端时间要同步,SSL认证依赖于时间
3.ssl认证过后,请不要修改主机名
4.Usecachefaiure
5.tag 和tagged
6.节点可以继承,但不能多重继承
7.类可以继承与覆盖,子类可以向父类添加额外属性值
8.puppet 支持多环境部署(分:开发、测试、线上)
9.tidy 资源中多条件关系是或者,而不是and
10.选择正确的版本Puppet 使用时注意事项Puppet 使用时注意事项1.节点设置tag
tag("old-slow-server")
if tagged("old-slow-server") {
notify { "this will succeed": }
}
2.对资源设置tag
file { "/etc/ssh/sshd_config":
...
notify => Service["ssh"],
tag => "ssh",
}
# puppet agent --test --tags ssh1,类继承示例
class nginx::port81 inherits nginx { ....
}
错误示例
class nginx::port81 inherits nginx ,apache {
.... }
子类向父类添加额外属性
Service["nginx"] {
require +> File[/"etc/nginx/conf.d/nginx81.conf"],
}
}
Puppet 的应用案例Puppet 的应用案例Puppet 管理用户(关于:管理用户的几点说明
a. puppet 支持ldap以及nis集中认证
b.puppet 支持用户密码管理,最好以''(单引号)括起来
c. puppet 建用户的默认是不建家目录的,需要使用managerhome=>true
puppet 管理nginx
puppet kick
Puppet MCollective
Puppet func
puppet 虚拟资源puppet 虚拟资源以@为前缀
使用虚拟资源需要配置storeconfig
虚拟资源使用场景
多个资源需要引用共同的某个资源实例,例如A用户是SA,又是DBApuppet nginx 应用案例puppet nginx 应用案例Exec有条件的执行:
creates:指定命令所生成的文件那么命令只会在所指定的文件不存在的情况的被执行
unless:所设定的命令返回0时才执行
onlyif:只会在onlyif设定的命令返回0时才执行
refreshonly:触发刷新动作。
资源之间依赖关系:
before 、 after、 require
资源之间触发
subscribe notify
友情提示:
refreshonly,refresh的区别
refreshonly:收到多少次
通知
关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知
,就执行多少资源,
refresh:不管有多少次通知,请执行一次。
puppet +kickpuppet +kickpuppet kick:主动强制客户端运行puppet agent.
注意:puppet kick 并不关心客户端puppet agent 有没有执行错误,它成功连接到agent 即返回退出0.MCollective介绍MCollective介绍官方的解释:MCollective就是一个调度器,可以解决多个puppet agent同时向master提出请求造成性能,速度下降的问题;它可以根据不同的属性对节点进行分类,对不同分类执行不同的任务;它是一个控制终端,可以使用它控制客户端和服务器,因此不需要puppet agent定时运行了.
MCollective也是一种Client/Server架构,而且client和server使用Midware(中间件)进行通信,需要java以及activemq支持.
Mcollective官文说明:
http://puppetlabs.com/mcollective/introduction/Puppet MCollective 功能Puppet MCollective 功能1.管理/控制/执行
服务
软件包
进程信息
Facter facts
ping
使用说明:
# mco
The Marionette Collective version 1.3.2
/usr/bin/mco: command (options)
Known commands: find pgrep facts ping puppetd help controller rpc inventory service
需要更多功能,可以安装更多插件
Mcollective 使用示例Mcollective 使用示例[root@puppet1 ~]# mco find
client1.test.com
puppet1
client2.test.com
[root@puppet1 ~]## mco ping
client1.test.com time=56.11 ms
client2.test.com time=95.86 ms
puppet1 time=96.78 ms
---- ping statistics ----
3 replies max: 96.78 min: 56.11 avg: 82.92
[root@puppet1 ~]# mco puppetd status
* [ ===================================================> ] 3 / 3
client1.test.com Currently stopped; last completed run 9663 seconds ago
puppet1 Currently idling; last completed run 1665580 seconds ago
client2..test.com Currently idling; last completed run 149 seconds ago
Finished processing 3 / 3 hosts in 36.27 ms
Puppet mcollective使用示例Puppet mcollective使用示例MCollect使用示例MCollect使用示例[root@puppet1 ~]# mco pgrep ruby
* [ ======================================================> ] 3 / 3
client1.test.com
PID USER VSZ COMMAND
9955 root 112.996 MB ruby /usr/sbin/mcollectived --pid=/var/run/mcollectived.pid
client2.test.com
PID USER VSZ COMMAND
5717 root 113.801 MB ruby /usr/sbin/mcollectived --pid=/var/run/mcollectived.pid
25631 root 153.289 MB /usr/bin/ruby /usr/sbin/puppetd --server=puppetmaster1 --log
---- process list stats ----
Matched hosts: 2
Matched processes: 3
Resident Size: 28.917 MB
Virtual Size: 380.086 MB
Finished processing 3 / 3 hosts in 198.42 mspuppet +func 管理puppet +func 管理Func全称为Fedora Unified Network Controller(Fedora统一网络控制器),由Fedara社区维护的一款用于服务器自动化远程管理的工具。有如下特性:
Func 可以在主控机上一次管理任意多台服务器,或任意多个服务器组;
Func 基于 Certmaster(https://fedorahosted.org/certmaster/)建立了
Master – Slaves 主从 SSL 证书管控体系,可以将证书自动分发到所有受控服务器;
Func 命令行可以直接发送远程命令或者远程获取数据;
Func 开 发 者 已 经 完 成 了 大 多 数 常 用 任 务 模 块 的 开 发 :
CommandModule 、 FileTrackerModule 、 JBossModule 、IPtablesModule、HardwareModule、MountModule、NagiosCheck、NetappModule、 NetworkTest、ProcessModule、ServiceModule、SysctlModule、RebootModule、 RpmModule、VirtModule、YumModule等等,这些模块的作用都可以顾名思义,或者参考:https://fedorahosted.org/func/wiki/ModulesList ;
任何人都可以通过 Func 提供的 Python API 轻松编写自己的模块,以实现体功能扩展。而且 任何 Func 命令行能完成的工作,都能通过 API 编程实现;
Func 通讯基于 XMLRPC 和 SSL 标准协议。 func 使用示例func 使用示例# func "@fmgr" call process info "aux" ##查看进程
# func "@fmgr" call process mem ## 查看内存
# func "@fmgr" call service status puppet ##查看fmgr组中各成员puppet进程状态
#func "@fmgr" call service stop puppet
{'puppet2': 0, 'puppet3': 0}
# func "@fmgr" call service start puppet
tips: func也是使用ssl认证,可以使用puppetmaster上的ssl证书认证,参见官方文档说明
puppet 应用QApuppet 应用QA1. 客户端是如何使用?
node default {
include nginx
}
2. 文件备份
a.backup 决定文件的内容在被修改前是否进行备份。
b. 文件服务器
a. 默认是备份到远程
filebucket { main: server => "puppet" }
File { backup => main }
默认保存在/ /var/lib/puppet/clientbucket
b.备份到本地
filebucket { 'sky' :
path=>"/data/backup",
}
File { backup=>sky }
文件备份示例:
file { "/etc/sudoers":
mode => "440",
source => "puppet:///modules/admin/sudoers",
backup => ".bak",
}
恢复:(哈希值)
cp /var/lib/puppet/clientbucket/c/0/7/
d/0/a/a/2/c07d0aa2d43d58ea7b5c5307f532a0b1/contents /etc/sudoers
puppet 同步大文件可以使用rsync模块Puppet架构与集群Puppet架构与集群Puppet 普遍部署为C/S架构:
Puppet 成熟的集群方案:
1.Puppet +nginx
2.Puppet +passenger
3.Puppet +mongrel
4.Puppet+git(特殊)Puppet架构与集群Puppet架构与集群Puppet 集群核心思想:
1).puppetmaster集群
- 分担puppetmaster来自于客户端的请求压力,可以采取Active ,Active 模式.
- 采取反向代理模式,将来自于8140的端口请求分散到多台puppetmaster
2).puppet ssl 证书集群
-分担puppetmaster来自于客户端ssl证书的请求压力, 采取Active,Standby模式.
3). 采取独立运行模式,通过git 将代码push到客户端,客户端本地执行相应代码。
Puppet架构与集群Puppet架构与集群a.puppetmaster 集群架构图
Puppet架构与集群Puppet架构与集群puppetca 集群架构图:
puppetmaster 并发性能测试方法puppetmaster 并发性能测试方法默认:centos系列puppet-load.rb在 /usr/share/puppet/ext目录下。
测试puppetmaster性能:
./ext/puppet-load.rb - --debug --node client2.test.com --server puppet1 --factsdir=/var/lib/puppet/yaml/facts --concurrency 1 --repeat 1 --cert /var/lib/puppet/ssl/certs/puppet1.pem --key /var/lib/puppet/ssl/private_keys/puppet1.pem
参阅:
http://www.masterzen.fr/2010/10/18/benchmarking-puppetmaster-stacks/ EC2 客户端puppet 工作流EC2 客户端puppet 工作流 puppet 未来puppet 未来项目地址:
https://github.com/puppetlabs/puppetlabs-openstack
https://github.com/bcarpio/puppet-hadoop
https://github.com/jamtur01/puppetlabs-cloudfoundry
https://github.com/puppetlabs/RazorQ&AQ&A