天天看点

Puppet快速入门!

1

企业中管理环境的痛点

Puppet快速入门!

痛点1:在企业内部,部署4台服务器,每台服务器包含 JDk,Tomcat,AngularJs 等等看起来不是大问题,可以人工部署。但是,当需要部署同样的配置到100台服务器上,运维的同学该怎么办?

Puppet快速入门!

痛点2:设想公司需要升级某一个软件,例如 MongoDb,当升级完成之后发现有问题,需要回滚。如何做回滚?只能依次卸载新版本,安装旧版本,费时费力,效率低下。

痛点3:开发和运维最常见的对话: 

运维:”哥们,你写的代码有问题,我部署之后完全不能用!” 

开发:”不可能!我在本地跑得好好的,你是不是有东西没配?”

解决方法

Puppet快速入门!
Puppet快速入门!

基础设施即代码。用代码描述基础设施,包括机器 ip,操作系统,安装的软件,第三方依赖的路径,部署包的路径。

使用同一份代码,不同的配置文件在统一的虚拟化平台创建开发环境,测试环境,部署环境。这样能够屏蔽各种环境之间的差异,实现基础设施即代码。

2

目前的开源配置管理工具

Puppet快速入门!

配置管理工具有两种实现方式:推送或者拉取。

基于推送的工具是 Ansible 和 Salt。基于拉取的工具有 Puppet 和 Chef。

3

Puppet 的作用以及工作原理

Puppet 能干什么?

Puppet快速入门!

举个例子:我想在某个几个机器上快速部署 Mysql服务器,用 Puppet 怎么实现?

1. 在 Puppet 主节点机器上安装 Puppet  Mysql模块。

Puppet快速入门!

2. 在 Puppet 主节点上写site.pp配置文件,描述需要部署的 Mysql。

Puppet快速入门!

3. 在目标机上执行 puppet agent –t。

4. 完成!Mysql 已经在目标机上安装好。

Puppet快速入门!

Puppet 工作原理是什么?

Puppet快速入门!
Puppet快速入门!

Puppet 主要用于部署,配置管理,以及服务器管理。 Puppert 由Master 和 Agent组成,Master 负责管理所有的配置文件, Agent 节点向Master拉取配置文件。

      Puppet 如何实现 Master 节点的高可用?

Puppet快速入门!

它使用了Multi-Master的模式来实现高可用,这也是精典的高可用实现方式:冗余+故障转移。

主从节点如何通信?

Puppet快速入门!
Puppet快速入门!

主从节点通信是 基于SSL 的受信任通信,一旦主节点和从节点建立了 SSL 双向认证,之后发自从节点的请求都会经过 SSL 加密传输到主节点,主节点向从节点的数据传输也是加密的。

Puppet快速入门!

Puppet的组成部分

Puppet快速入门!
Puppet快速入门!

Puppet 由 Classes ,Resources,Manifests 和 Modules 组成。

1. Resource – 任何文件,配置可以做为一个 Resource。例如

Puppet快速入门!

它描述了文件的信息,以及文件在目标机上的将来时状态。

2. Classes – Classes 是一组 Resource 的集合,用来描述一组服务或应用。

3. Manifest – 由Class生成若干个 Manifest。在 Manifest 里可以使用某个模块,将这个模块部署到节点上。

Puppet快速入门!

4. Module – 由若干个 Manifest 组合成一个 Module,用来高效的组织你的 Puppet 代码,以便将来重用。Puppet 社区已经有了非常丰富的 Module,你可以直接下载使用。

Puppet快速入门!
Puppet快速入门!

Puppet 的工作流程

Puppet快速入门!
Puppet快速入门!

1.     Facts – Node 节点向 Puppet 主节点报告自己的信息,使得自己处于一个被发现的状态。 Facts 是一组键值对,可以是 IP 地址,或者是操作系统 信息。

2.      Catalog 是一组资源的关系集合,Puppet 使用 Catalog 来描述某一个节点应该被配置成什么样子。

3.     当 Node 节点完成的配置,它会向 Puppet 主节点报告任务完成。

如何管理开源社区的已有模块?

Puppet快速入门!

不重复造车轮,是软件开发中是很关键的理念。重复利用现有的模块,能够加速你的环境搭建的速度,而且更加的稳定,虽然开源社区已经有了非常丰富的共用 Module,但每次连接外网去下载 Module 又带来了网速慢,下载不稳定的问题。 Artifactory 5.1以上版本已经支持了 Puppet 仓库,以及Chef 仓库。将 Artifactory 设置为 Puppet 的 Module 源,即可实现远程Puppet Module仓库的私有化,让你的环境发布变得实时,可控。

Puppet快速入门!

4

总结

使用 Puppet可以帮助运维团队快速,可重复的发布一个计算环境,并且安装配置文件安装指定的软件,服务,实现基础设施即代码。