零基础学习Puppet自动化配置管理

Puppet中文社区

Gitbook同步更新 51CTO同步更新

目录:

一、Puppet基础篇

1、编写此系列文档的目的

2、如何学习和使用Puppet

3、安装Puppet前期的准备工作

4、安装、配置并使用Puppet

5、如何建立master和agent之间的认证关系

6、Puppet更新方式的选型

7、编写第一个完整测试模块puppet

8、编写第二个完整测试模块yum

9、Puppetmaster多环境配置

10、自定义fact实现的四种方式介绍

二、Puppet扩展篇

1、自定义fact结合ENC(hirea)的应用实践

2、如何使用虚拟资源解决puppet冲突问题

3、如何扩展master的SSL传输性能(apache)

4、如何扩展master的SSL传输性能(nginx)

5、通过多进程增强master的负载均衡能力(nginx+mongrel)

6、通过横向扩展puppetmaster增加架构的灵活性

7、puppet代码与版本控制系统的结合

8、Puppet dashboard的部署及测试

三、MCollective架构篇

1、MCollecitve架构的引入

2、MCollective+MQ架构的部署

3、Puppet插件的部署及测试

4、MCollective各种插件的部署及测试

5、MCollective安全性设计

6、MQ的安全性设计

7、多MQ下MCollective高可用部署

四、Foreman架构的引入

1、Foreman作为自动化运维工具为什么会如此强大

2、安装前环境准备

3、安装Foreman1.5架构(all-in-one)

4、安装Foreman1.6架构(foreman与puppetmaster分离)

5、安装Foreman1.7架构(源码,仅测试使用)

6、整合puppetmaster

7、Foreman结合mcollective完成push动作

8、Foreman结合puppetssh完成push动作

9、Foreman的ENC环境与fact环境的对比

10、hostgroup如何转换为本地的fact

11、智能变量与puppet模块参数化类的结合

12、Foreman报告系统的使用

13、Foreman-proxy如何做负载均衡

14、Foreman上如何展现代码及文件内容

15、Foreman如何和虚拟化管理软件结合

16、如何借助Foreman完成自动化部署操作系统(一)

17、如何借助Foreman完成自动化部署操作系统(二)

18、Foreman CLI(Hammer)工具的使用

19、Foreman目前的不足之处

定期不断更新中...

博客其他文章已经全部整理成了PDF,共计50余篇。【点击下载】

返回主目录

交流方式:

微信公众号:puppet2014,可微信搜索加入,也可以扫描以下二维码进行加入

微信公众号

QQ交流群:296934942

Puppet中文社区开放啦!

Puppet中文社区终于上线了,并且和微信订阅号“puppet2014”进行了整合,既可以通过web提问、搜索,同时也可以通过订阅号进行查询。欢迎大家加入!

puppet中文社区: http://puppetmaster.cn


交流方式:

微信公众号:puppet2014,可微信搜索加入,也可以扫描以下二维码进行加入

微信公众号

QQ交流群:296934942

QQ交流群

Foreman架构的引入10-hostgroup如何转换为本地的fact

零基础学习Puppet自动化配置管理系列文档

在Foreman上可以根据业务逻辑设置多个主机组(Host Groups),并且可以将不同的节点加入到不同的主机组,这样在每次操作“puppet run”的时候,只需要在搜索按钮里搜索对应的主机组即可找到里面包含的所有节点,如下图所示

Foreman安装

但是,foreman目前在puppet run上对mcollective的集成度很低,基本就是只能运行一条命令。那么如果要在shell终端上通过mco命令去对这些自定义的Host Groups进行操作应该如何做呢。答案是转换为facter。

foreman架构的引入7-Foreman结合mcollective完成push动作

零基础学习Puppet自动化配置管理系列文档

注:以下内容是在foreman1.6.3+puppet2.6.2环境下进行操作。更多配置请参考官网http://theforeman.org/manuals/1.6/index.html

在foreman-proxy的1.6.3版本,至少提供了以下五种触发puppet agent命令的工具,默认使用的是puppetrun,不过已经过时,这里介绍如何使用mcollective进行触发,下个章节会介绍如何使用puppetssh触发。

#   puppetrun   (for puppetrun/kick, deprecated in Puppet 3)
#   mcollective (uses mco puppet)
#   puppetssh   (run puppet over ssh)
#   salt        (uses salt puppet.run)
#   customrun   (calls a custom command with args)

安装Foreman1.6架构(foreman与puppetmaster分离)

零基础学习Puppet自动化配置管理系列文档

注意:本实验是在离线情况下安装的,所以需要在本地创建自己的yum仓库,创建方法可参考《如何根据版本制作属于自己的puppet yum源》,如何你实在是比较懒或者搞不定rpm包之间的依赖关系,那就去我的github上下载吧:https://github.com/kisspuppet/foreman-repo

更多安装细节请参考官网:http://theforeman.org/manuals/1.6/index.html

之前讲的all-in-one方式建议只用于测试使用,如果要用于生产环境,建议将foreman和puppetmaster分离安装,更有利于后期的维护和扩展。还有就是之前你已经部署过puppetmaster了,如何单独部署foreman和puppetmaster通信也是值得考虑的问题。

MCollective架构篇7-多MQ下MCollective高可用部署

零基础学习Puppet自动化配置管理系列文档

存在这样一种场景,当你的puppet基于mcollective环境搭建完成之后,需要考虑MQ的高可用,否则,MQ挂掉之后就不能用mco命令进行推送了哦。 如何做MQ的高可用呢,其实有两种方法: 方法一:两台MQ做集群,通过复制队列信息进行同步,节点访问可通过浮动IP进行。 方法二:两台MQ独立,在MC Server端做failover,通过rabbtimq的plugins参数实现,可设置自动检测,切换时间等等。

Rails入门1-安装并创建第一个Rails程序

Rails 入门

本文介绍如何开始使用 Ruby on Rails。

读完本文,你将学到:

  1. 如何安装 Rails,新建 Rails 程序,如何连接数据库;
  2. Rails 程序的基本文件结构;
  3. MVC(模型,视图,控制器)和 REST 架构的基本原理;
  4. 如何快速生成 Rails 程序骨架;

附:MVC模型 welcome abord

foreman架构的引入3-安装Foreman1.5.3架构(all-in-one)

零基础学习Puppet自动化配置管理系列文档

注意:本实验是在离线情况下安装的,所以需要在本地创建自己的yum仓库,创建方法可参考《如何根据版本制作属于自己的puppet yum源》,如何你实在是比较懒或者搞不定rpm包之间的依赖关系,那就去我的github上下载吧:https://github.com/kisspuppet/foreman-repo

更多安装细节请参考官网:http://theforeman.org/manuals/1.5/index.html#Releasenotesfor1.5.4

MCollective架构篇1-MCollective架构的引入

零基础学习Puppet自动化配置管理系列文档

Marionette Collective(MCollective)是一个与Puppet关系密切的服务运行框架。Puppet擅长管理系统的状态,但agent默认的30分钟间隔的运行方式使它不合适作为实时管理控制工具使用,而MCollective的功能定位正式面向大规模主机群的实时任务并行处理。它离线消息中间件技术实现检点间的信息传递,大量主机可以基于自身的某些固有属性(元数据)而非主机名进行分组,这意味着用这些信息按照不同标准将集群分为多个群组,任务执行的目标是一个群组,而不是一台主机。 也可以参考纸飞机的博客关于mcollective的介绍 http://junqili.com/

MCollective架构篇2-MCollective+MQ架构的部署

零基础学习Puppet自动化配置管理系列文档

1 Mcollective介绍

MCollective 是一个构建服务器编排(Server Orchestration)和并行工作执行系统的框架。 首先,MCollective 是一种针对服务器集群进行可编程控制的系统管理解决方案。在这一点上,它的功能类似:Func,Fabric 和 Capistrano。

其次,MCollective 的设计打破基于中心存储式系统和像 SSH 这样的工具,不再仅仅痴迷于 SSH 的 For 循环。它使用发布订阅中间件(Publish Subscribe Middleware)这样的现代化 工具和通过目标数据(meta data)而不是主机名(hostnames)来实时发现网络资源这样的现代化理念。提供了一个可扩展的而且迅速的并行执行环境。

MCollective 工具为命令行界面,但它可与数千个应用实例进行通信,而且传输速度惊人。无论部署的实例位于什么位置,通信都能以线速进行传输,使用的是一个类似多路传送的推送信息系统。MCollective 工具没有可视化用户界面,用户只能通过检索来获取需要应用的实例。Puppet Dashboard 提供有这部分功能。

MCollective架构篇3-Puppet插件的部署及测试

零基础学习Puppet自动化配置管理系列文档

1 puppet插件的安装及测试

MCollective可以使用多种方式进行扩展。最普遍的一种扩展MCollective的方式就是重用已经写好的agent插件。这些小的Ruby库可以让MCollective在整个集群中执行自定义的命令。

一个agent插件通常包含一个Ruby库,它必须被分发到所有运行MCollective agent的节点上。另外,一个数据定义文件(DDL)提供了插件接受的传入参数的具体描述,整个DDL文件需要放在MCollective客户端系统上。最后,一个使用指定的agent插件运行MCollective的脚步也需要被安装到所有的MCollective客户端系统上。

备注:更多插件可以在https://github.com/puppetlabs/mcollective-plugins找到。

MCollective架构篇4-MCollective各种插件的部署及测试

零基础学习Puppet自动化配置管理系列文档

MCollective只是一个框架,如果需要在上面发挥各种作用,那就需要各种插件的支持。官方提供了很多这方面的插件,除此之外,还有第三方的插件,比如shell插件等,下面会介绍各种插件的安装,以及插件之间如何组合进行使用。

Puppet扩展篇4-如何扩展master的SSL传输性能(nginx)

零基础学习Puppet自动化配置管理系列文档

描述:puppet使用SSL(https)协议来进行通讯,默认情况下,puppet server端使用基于Ruby的WEBRick HTTP服务器。由于WEBRick HTTP服务器在处理agent端的性能方面并不是很强劲,因此需要扩展puppet,搭建nginx或者其他强劲的web服务器来处理客户的https请求。

需要解决的问题:

  • 扩展传输方式:提高性能并增加Master和agent之间的并发连接数量。
  • 扩展SSL:采用良好的SSL证书管理方法来加密Master和agent之间的通讯。

Puppet扩展篇7-puppet代码与版本控制系统的结合

零基础学习Puppet自动化配置管理系列文档

一、介绍

通过安装部署Puppet C/S模型,实现Puppet Server端管理所有被控制机的整个生命周期:从初始化到软件升级、从配置文件创建到测试部署、从系统维护到服务器迁移等。Puppet能够持续化的与被控制机进行交互,从而实现配置文件的及时检测更新。结合SVN版本控制系统,puppet可在更新之前将当前正在运行的环境以版本的方式保存到SVN版本控制系统中,方便以后通过puppet更新出错或者需要回滚到之前的某一个环境时快速恢复。

如何更改puppetmaster证书默认的使用期限

零基础学习Puppet自动化配置管理系列文档

PuppetMaster默认签发时间是5年,也就意味着5年后所有证书都会过期,过期意味着不可用,想想看成千上万台服务器都经过了CA的签发,到时候重新签是多么可怕的一件事情啊。那么有什么版本能将证书的过期时间延长呢?