puppet搭建
系统自动化运维
随着互联网企业的数据量和业务难度不断增长,从初期的几台服务器发展到庞大的数据中心和服务器集群,单靠人工的修改和部署已经无法满足业务的需求,所以我们需要对系统的部署和服务的搭建提供统一的部署和管理,应蕴而生了一匹自动化管理的开源软件,例如puppet和saltstack等,使用他们可以轻松的管理上千节点,让运维的工作变得更加优雅起来。
本篇文章我们将会介绍一款开源地自动化部署软件puppet。
什么是puppet
在puppet官方声明中,介绍puppet是一个开源的集中化管理工具,它由自己声明的一套语法表达系统的配置(有些类似于json),采用c/s架构,通过客户端和服务端之间的连接,维护着关系库,它不仅可以管理丰富的资源(file、repo、server、package等),而且可以由使用者自己定义相关的模板,这些模板符合相同的编写规范,使用者可以轻松的借鉴别人成型的模板迅速完成系统的部署。
处理资源和资源之间的依赖关系是puppet的优势,puppet管理着主机的整个声明周期,从初始化安装,升级,维护,服务迁移及下载,它把所有的操作都可以抽象成“资源”的方式,系统的任务就是维护每个“资源”以及协调好该资源与其他资源之间的关系。
puppet原理
Agent与Master的通信
puppet的架构是c/s架构,及客户端和服务端之间的通信,那么我们需要了解两者之间的关系,如下图所示:
client即客户端,Master即服务端,上述的八个步骤描述了一个资源的部署步骤:
1.客户端puppet向Master发起认证请求,或使用带签名的证书。
2.Mster经过验证对客户端进行验证,客户端合法。
3.客户端 Puppetd 调用 Facter,Facter 探测出主机的一些变量,例如主机名、内存大小、IP 地址等。Puppetd 将这些信息通过 SSL 连接发送到服务器端。
4.puppet服务器Master将所需要的Class信息进行编译后存入Catalog并发送给puppet客户