运维自动化

1,320 views
1,165 views

Published on

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,320
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

运维自动化

  1. 1. Puppet 应用与架构 吴问志 网站:www.mysqlops.com/category/puppet 邮箱: puppetfans@sina.com 微博:puppetfans@sina.com
  2. 2. puppet 介绍� 什么是 puppet� 遵循 GPL 协义基于 ruby 语言开发的系统配置管理工具� 说明性语言表达系统,用库实现配置� 基于 C/S架构,配置客户端和服务端� puppt 对于系统管理员是抽象的,只依赖于 ruby 与facter.� 默认情况下,客户端每 30分钟连接到 puppetmaster 分钟连接到puppetmaster 30分钟连接到� puppet 能做什么 puppet 能管理多达近 40多种资源管理,例如: file,user 能管理多达近40 40多种资源管理,例如: group, host,package,service,cron,exec,yumrepo 等。 �. puppet 有个特殊的 Type,例如 Package,User等。
  3. 3. puppet 工作流程
  4. 4. Puppet 与其它自动化工具比较� puppet VS cfengine� Puppet 设计的初衷用来管理结构化的软件包 ,服务,用户,组等资源� Cfengin 设计的初衷是用来管理文件� Puppet 是驱动模型。� - puppet 最底层是负责建模。� - 例如, freebsd 和 centos 的建立用户� Puppet 能隐式的处理资源之间依赖的关系。� - 例如 ,nginx 和 nginx.conf� Puppet 是基于 ruby 语言开发� Cfengin 是基于 C语言开发
  5. 5. Puppet 与其它自动化工具对比总结 puppet cfengine Puppet vs chef安装配置简单 安装复杂需要 安装配置简单 安装配置比较复 依赖DB DB 杂基于ruby开 基于c语言, 基于ruby,用户 使用的是ruby扩发,Puppet 语法难懂,学 不熟悉ruby,也 展,需要用户熟自有高级配置 习维护成本高 可以使用 悉ruby语言,入语言 门难备份恢复简单 备份恢复复杂 备份恢复简单 维护不方便用于管理各种 重点用于管理 有众多开发者和 文档或者资料少资源 文件 文档底层负责建模 有更成熟悉商业 用户群相对少模拟资源之间 经验相互关系 更多功能 借鉴其思想,是 puppet一个分支
  6. 6. Puppet 模型参考� Puppet 模型有三层,来源于 puppet 官方, puppet pro 也有详细介 绍,如下图
  7. 7. Puppet 使用注意事项� 1.主机名使用 FQDN(全域名)格式命名 ,需要 DNS或者 hosts解析� 2.C/S两端时间要同步 ,SSL认证依赖于时间� 3.ssl认证过后,请不要修改主机名� 4. Usecachefaiure� 5. 客户端如何运行指定的类( tagged)� 6.节点可以继承,但不能多重继承 6.节点可以继承,但不能多重继承� 7.类可以继承与覆盖,子类可以向父类添加额外属性值� 8.puppet 支持多环境应用(开发,线上,测试)� 9.tidy 资源中多条件关系是或者,而不是 and.� 10.选择正确的版本
  8. 8. Puppet 使用时注意事项 � 从缓存的读取上个版本,并阻制所有的编译� Usecachefaiure 错误。只有在agent模式才会有问题 � 导致问题: � 如果代码有错误,你修改了,没有重启agent, 就会一直报错。Tagged使用示例 � node base inherits webbase_server { � if tagged( “ base") { tagged(“ � notify { "this will succeed": }-默认tagged是节点名称或者从父节点 � } � if tagged( “ webbase_server") { tagged(“ 继承过来的。 � notify { "so will this": } � }-一般来说版本号越高代表性能改进 � } � #puppet agent --test --tags base
  9. 9. Puppet 使用时注意事项� 节点继承示例:� node webserver inherits base { � 类继承示例� …. � class apache::port8000 inherits apache {� � … }� 下面错误的多重继承示例 � }� node web1 inherits base, dbserver { � 类的覆盖与添加额外的值� … � class apache::ssl inherits apache {� } � file { "/etc/ssl/certs/cookbook.pem":� 运行指定环境: � source =>"puppet:///modules/apache/cookbook.� puppet agent --test -- pem", environment=testing � }� Tidy 资源示例 � Service["apache2"] {� tidy { "/var/lib/puppet/reports": � require +>� age => "1w", File["/etc/ssl/certs/cookbook.pem"],� Sise => “512k” 512k” � }� recurse => true, � }� }
  10. 10. Puppet 使用时注意事项� 开源版本与企业版对比� 1. 用户图形接口� 2. 内置EC2 模块� 3. 内置vms� 4. 配置管理-发现克隆� 5. 配置管理-操作系统� 6. 配置管理-用户账户管理� 7. 管理应用� 8.300+ 的内置模块� 9. 业务流程-自动化� 10.合法性-自动配置审记� 11.基于角色访问控制� 12.统一跨平台组件安装� 13.网络社区支持� 14.7 *24 技术支持和SLA (服务协议)支持 14.7*� 15. puppetalbs 工程师认证� 16.依赖包在一个目录下� 17.平滑升级和维护支持
  11. 11. Puppet架构与集群� Puppet 是 C/S架构,如下图:� Puppet 集群方案1.Puppet +nginx2.Puppet +Passenger3.Puppet +mongrel4.Puppet+git
  12. 12. Puppet架构与集群� Puppet 集群核心思想:� 1).puppetmaster集群� - 分担 puppetmaster来自于客户端的请求压力 ,可以采取 Active ,Active 模式 .� - 采取反向代理模式,将来自于 8140的端口请求分散多台� 2).puppet ssl 证书集群� -分担 puppetmaster的来自于客户端 ssl 证书的请求压力 , 采取 Active,Standby模式 .� 3). 采取独立运行模式,绕开 puppetmaster单点 puppetmaster单点� -puppet +git 这种方式�
  13. 13. Puppet架构与集群� a.puppetmaster 集群架构图
  14. 14. Puppet架构与集群� puppetca 集群架构图:

×