puppet

一、puppet简介
     puppet是一个为实现数据中心自动化管理而设计的配置管理软件,可以管理IT基础设施的整个生命周期:供应(provisioning)配置 (configuration)、联动(orchestration)及报告(reporting)。puppet基于C/S架构,相似于zabbiz, 有master与agent节点之分。它是一个开源的(谈不上真正的开源,由于有商业版与社区版之分)、新一代的、集中化的配置管理工具,由ruby语言 研发,它拥有本身的配置语言(PCL,puppet configuration language)。
    puppet可以把IT平常的系统管理代码化,而代码可重用,这样能够减小运维人员的工做量,并且能快速、大规模部署服务器。在puppet的世界有其自 己的哲学思想:在IT系统管理中,puppet只关注结果,不关心过程!这名话怎样理解,好比puppet的master端向各agent下达把 nginx这个包安装上并启动服务,puppet的agent端面只向master端报告软件是否安装完成,服务是否已启动,puppet不关心软件是怎 样安装上的,服务是怎样启动的,它只关心结果。
二、puppet工做原理
2.一、puppet两种工做方式介绍   
    puppet有两种工做方式,一种是独立工做方式(standalon),另外一种是master-agent的方式 。以两张图片来讲明这两种工做方式。

(图一:puppet以standalone方式工做流程示意图,图片来自网络)
图片中各术语解释:
manifest:字面意思是清单,在这里指被puppet代码化的各类资源,是一种用PCL编写的代码;
catalog:表示把各类manifest编译后生成的可执行代码,也叫伪代码;
apply:生成catalog后puppet就能够把代码进行运用,在运用时也要先对伪代码进行检测,检测后才执行。
html


(图二:puppet的master-agent工做流程图,图片来自网络)
简述:
a)、agent向主机请求catalog代码,在请求时要带上本身的主机名与facts,facts里包含了agent服务器自身的一些系统特征,好比操做系统是什么,是哪一个版本,cpu是什么型号,内存有多大等信息;
b)、master接收到agent的请求后开始查询此节点包含的清单,把这些资源找出后编译成catalog,再发送给agent;
c)、agent收到catalog后就开始应用代码,并把执行的状态结果生成报告返还给master;
d)、master接收报告并记录日志。
证书存放在/var/lib/puppet/ssl/。
在master/agent首次启用的过程:
a)、master启动时会为本身生成key,并签署证书,让本身成为一个ca;
b)、agent首次启动要为本身生成key,生成证书签署请求,并将证书请求发送给master请求签署;
c)、master收到agent的证书签署请求后,由管理员先验证请求是否合法,然后对证书签署请求做出签署或不签署。node

三、puppet安装及认证mysql

     http://blog.csdn.net/junjunjiao/article/details/50844816nginx

     systemctl start puppetserver/service puppetserver start  开启puppet server服务     sql

      netstat -nltp | grep 8140 查看puppet server端口是否正常开启ruby

      puppet status  查看puppet状态服务器

      puppet agent -t  #同步puppet server一次网络

      puppet agent/service puppet start     #开启agent进程,周期性同步server,默认为30分钟一次架构

      puppet cert list     #来查看来查看全部待处理的请求app

      puppet cert sign <agent名称>     #来签发Puppet agents的证书

四、puppet语法

      http://blog.csdn.net/euguosir/article/details/51883616

      http://blog.csdn.net/euguosir/article/details/51884559

      https://www.iyunv.com/thread-77455-1-1.html (站点清单的使用,site.pp的存放位置,在每一个puppet版本是不同的,3.x存放路径/etc/puppet/manifests/,4.x存放路径/etc/puppetlabs/code/environment/production/manifests/)

node 'nod2.test.com' {
        include nginx
        include mysql
}

node 'nod2.test.com' {
        user{'test123':

               ensure => present,#确保用户存在,不存在则建立

        }
}

 注意:puppet agent -t,若是想生效,必须在站点清单中定义该节点的node信息,好比该节点为nod2.test.com,如上所示,加载nginx、mysql模块。

相关文章
相关标签/搜索