问题导读
1.Puppet是什么工具?
2.puppet工作原理是什么?
3.puppet目录结构包含哪些内容?
puppet简介* Puppet是一个IT基础设施自动化管理工具,帮助系统管理员管理基础设施整个生命周期的供应(provisioning),配置(configuration),联动(orchestration)及报告(reporting)。 * 基于puppet可以实现自动化重复任务,快速部署关键性应用以及在本地或者云端完成主动管理变更和快速部署扩展架构。 * 当然,对于管理员它是抽象的,只依赖于facter工具(可以检索出不同系统的基本信息)和ruby语言环境(主要以模版的形式来开发)。 * Puppet能管理40多种资源,架构模式是master/agent管理与被管理的关系并非主从关系。
puppet工作原理
(1)客户端Puppetd向Master发起认证请求,或使用带签名的证书。 (2)Master告诉Client你是合法的。 (3)客户端Puppetd调用Facter,Facter探测出主机的一些变量,例如主机名、内存大小、IP地址等。Puppetd将这些信息通过SSL连接发送到服务器端。 (4)服务器端的PuppetMaster检测客户端的主机名,然后找到manifest对应的node配置,并对该部分内容进行解析。Facter送过来的信息可以作为变量处理,node牵涉到的代码才解析,其他没牵涉的代码不解析。解析分为几个阶段,首先是语法检查,如果语法错误就报错;如果语法没错,就继续解析,解析的结果生成一个中间的“伪代码”(catelog),然后把伪代码发给客户端。 (5)客户端接收到“伪代码”,并且执行。 (6)客户端在执行时判断有没有File文件,如果有,则向fileserver发起请求。 (7)客户端判断有没有配置Report,如果已配置,则把执行结果发送给服务器。 (8)服务器端把客户端的执行结果写入日志,并发送给报告系统。
认证过程任何一台puppet客户端想要获取服务器的配置信息第一步必须先要认证完毕。具体认证过程如下: (1)puppet客户端请求节点配置。 (2)puppetmaster进行SSL认证。 (3)将信息日志写入cactlog。 (4)puppet解析器解释代码(包括错误检查以及语法检查),并写入日志。 (5)客户端发送日志。 (6)ssl认证授权结束,整个流程结束。 puppet目录结构
- root@cloud-32:~# tree /etc/puppet/ --charset gbk -L 1
- /etc/puppet/
- |-- auth.conf
- |-- autosign.conf
- |-- etckeeper-commit-post
- |-- etckeeper-commit-pre
- |-- fileserver.conf
- |-- manifests
- |-- site.pp
- |-- modules
- |-- namespaceauth.conf
- |-- puppet.conf
- |-- puppet-queue.conf
- |`-- templates
-
- 3 directories, 8 files
复制代码
puppet.conf主配置文件 fileserver.conf允许访问的文件控制 auth.conf访问权限配置 autosign.conf自动验证配置文件 manifests文件存储目录(puppet会先读取该目录的.pp文件<site.pp>) site.conf全局配置文件 modules定义模块 templates模块配置目录
应用背景:目前puppet官方有根据openstack各种环境编辑好了一整套部署脚本,这一套也已经上传到社区(比如github)给一些相关人士进行维护并更新。我们只要获取那些脚本,在根据我们自己的需求来封装自己的一个类,这个类就是关于怎么调用那些人家已经完善得非常好的各种相关openstack组件模块。
操作系统:centos6.5 Openstack版本:havana icehousejuno Puppet版本:2.7或以上(如果一些脚本需要的话可能要把版本更新到3.x以上的) 安装puppet设置源: 安装: Agent端:yuminstall puppet Server端:yuminstall puppet-server 获取脚本: puppet module install puppetlabs-openstack 下载git上面的脚本: cd /etc/puppet/modules git clonegit://github.com/stackforge/puppet-openstack.git openstack cdopenstack gem installlibrarian-puppet librarian-puppet install--path ../ openstack模块[root@puppet modules]# tree -L 1 . ├── 99cloud ├── apache ├── ceilometer ├──certmonger . . . ├──vlan ├──vswitch └──xinetd
50 directories, 0 files
在这50个左右的模块里面控制整个openstack流程安装部署的就在openstack这个模块里面, 在openstack这个模块里面主要是把各个openstack各个组件模块调用起来最后形成了可以灵活地运用各种参数去部署openstack的脚本。这是由于openstack有很多配置文件以及后面要更变配置,所有才有了如此之多的参数。当然,你可以根据自己的需要,比如一些组件你不安装或者一些配置是不需要的,然后自己组成一个模块之类的。
部署在自己脚本完成后并测试没有什么语法错误就可以开始部署安装,当然在这之前肯定要经过大量的测试来完善自己的脚本: There are two kinds of use: ---1 stand-alone mode: directcalling scripts allinone #sudo puppet apply -e "class {99cloud::allinone: }" controller #sudo puppet apply -e "class {99cloud::controller: }" only compute #sudo puppetapply -e "class { 99cloud::compute: }" ---2 server-agent mode: a: pick out one end as aservice b: edit/etc/puppet/manifests/site.pp (If not,please create) c: depending on thefqdn(hostname+domain) to deploy different nodes For your controller node, you need to assign your node the controllerrole. For example: ``` node 'control.localdomain' { include 99cloud::controller } ``` allinone: include 99cloud::allinone ``` compute: include 99cloud::compute ``` d: on your node exec: #puppet agent -t --server 'service of fqdn'
也就是说主要有2种部署方式,一种是单机模式,另一种是C/S模式。如果你的服务器有上几十台以上就需要用到C/S模式,否则尽量用单机模式来部署。这样既节省时间,又方便控制各个服务器。
从裸机到openstack平台
简而言之,就是先对一台裸机进行PXE(安装系统)之后再利用puppet把openstack平台架起来
|