puppet
Posted shysky123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了puppet相关的知识,希望对你有一定的参考价值。
1、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不关心软件是怎
样安装上的,服务是怎样启动的,它只关心结果。
2、puppet工作原理
2.1、puppet两种工作方式介绍
puppet有两种工作方式,一种是独立工作方式(standalon),另一种是master-agent的方式 。以两张图片来说明这两种工作方式。
(图一:puppet以standalone方式工作流程示意图,图片来自网络)
图片中各术语解释:
manifest:字面意思是清单,在这里指被puppet代码化的各种资源,是一种用PCL编写的代码;
catalog:表示把各种manifest编译后生成的可执行代码,也叫伪代码;
apply:生成catalog后puppet就可以把代码进行运用,在运用时也要先对伪代码进行检测,检测后才执行。
(图二: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的证书签署请求后,由管理员先验证请求是否合法,而后对证书签署请求作出签署或不签署。
3、puppet安装及认证
http://blog.csdn.net/junjunjiao/article/details/50844816
systemctl start puppetserver/service puppetserver start 开启puppet server服务
netstat -nltp | grep 8140 查看puppet server端口是否正常开启
puppet status 查看puppet状态
puppet agent -t #同步puppet server一次
puppet agent/service puppet start #开启agent进程,周期性同步server,默认为30分钟一次
puppet cert list #来查看来查看所有待处理的请求
puppet cert sign <agent名称> #来签发Puppet agents的证书
4、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的主要内容,如果未能解决你的问题,请参考以下文章