一、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工作原理

1、puppet有两种工作方式,一种是独立工作方式(standalon),另一种是master-agent的方式,这里主要介绍C/S方式。

简述:

manifest:字面意思是清单,在这里指被puppet代码化的各种资源,是一种用PCL编写的代码;

catalog:表示把各种manifest编译后生成的可执行代码,也叫伪代码;

apply:生成catalog后puppet就可以把代码进行运用,在运用时也要先对伪代码进行检测,检测后才执行。

a)、agent向主机请求catalog代码,在请求时要带上自己的主机名与facts,facts里包含了agent服务器自身的一些系统特征,比如操作系统是什么,是哪个版本,cpu是什么型号,内存有多大等信息;

b)、master接收到agent的请求后开始查询此节点包含的清单,把这些资源找出后编译成catalog,再发送给agent;

c)、agent收到catalog后就开始应用代码,并把执行的状态结果生成报告返还给master;

d)、master接收报告并记录日志。

2、puppet认证机制

puppet有其自己的证书管理机制,agent与master间的通信是需要得到master的认证,证书存放在/var/lib/puppet/ssl/。

在master/agent首次启用的过程:

a)、master启动时会为自己生成key,并签署证书,让自己成为一个ca;

b)、agent首次启动要为自己生成key,生成证书签署请求,并将证书请求发送给master请求签署;

c)、master收到agent的证书签署请求后,由管理员先验证请求是否合法,而后对证书签署请求作出签署或不签署。

三、puppet的安装

puppet既然是C/S架构,那安装包就有master安装包与agent安装包之分。以下的安装及测试都是基于CentOS 6.4_x86_64的系统进行,在epel源也包含了puppet的软件包,所以我以yum安装为例,大家可以通过puppet官方给的yum源进行安装,官方的yum软件版本比较新,官网yum地址http://yum.puppetlabs.com/el/6.5/products/x86_64/,也可以使用epel的源安装,我推荐安装的版本是puppet 2.7.25或者3.6.2,目前puppet开源社区提供四个版本分支:

puppet 0.22.1--->0.25.5     puppet早期分支,目前官网已经不再提供技术支持;

puppet 2.6.0 --->2.6.18     目前正在维护的安全分支,已经停止开发;

puppet 2.7.0 --->2.7.26     目前正在维护的安全版本分支,也是比较流行的版本分支;

puppet 3.0.0 --->3.8.*      当前开发中的版本分支。

所以我推荐使用epel yum源来进行安装,yum提供的版本目前是2.7.26,安装puppet依赖ruby facter,yum安装会解决这些依赖。

1、首先安装epel源

RHEL/CentOS/SL Linux 6.x 下安装 EPEL6 yum源:

32位系统选择:
rpm -ivh http://download4.fedora.redhat.com/pub/epel/6/i386/epel-release-6-8.noarch.rpm
64位系统选择:
rpm -ivh http://download4.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

2、puppet master端的安装

yum install puppet-server -y

3、puppet agent端的安装

yum install puppet -y


四、puppet子命令介绍

直接点击标题即可查看

五、puppet的主机认证

先来介绍一下我这里的环境,系统都是CentOS 6.4_x86_64,主机名及IP规划如下:

Master:
monitor.comratings.com        10.0.0.14
Agent:
***.comratings.com        10.0.0.41

1.1 域名解析配置

确保两主机的“/etc/hosts”文件中有以下配置:

# cat /etc/hosts

10.0.0.14    monitor.comratings.com
10.0.0.41    ***.comratings.com

注:在puppet的环境中一旦安装好puppet后,如果修改了主机名,那agent与master间的通信会有问题,因为它们之间的通信是需要证书,而证书又包含了主机的信息。

先在前台启动puppet来观察一下,puppet服务端在首次的启动时会发生什么,所用到的命令是puppet,此命令的使用格式为“puppet <subcommand> [options] <action> [options]”,因这是master,所以子命令就是master,用“puppet help master”就可以查看master子命令的使用方法。

# puppet master -v --no-daemonize

 

仔细观察上边的输出,在服务端启动时,puppet会自己创建一个ca,并为自己颁发一个证书,接下来它就可以接受agent端面的证书签署请求了,一旦服务端给agent签署证书签署请求,那agent就可以到master来请求catalog了。

puppet的证书管理的目录是在"/var/lib/puppet/ssl/":

检测服务端能正常启动后,结束掉前台运行的模式,用服务脚本的方式启动puppet master

# service puppetmaster start

Starting puppetmaster:                                     [  OK  ]

# netstat -tlnp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address    Foreign Address       State       PID/Program name
tcp     0      0    0.0.0.0:8140         0.0.0.0:*         LISTEN         937/ruby

puppet master自己给自己颁发了一个证书,每行前的“+”号表示已签发。

# puppet cert list -all

+ "monitor.comratings.com" (81:DB:AF:32:AA:C5:7A:DB:39:5F:71:15:5F:F8:9B:B6) (alt names: "DNS:monitor.comratings.com", "DNS:puppet", "DNS:puppet.comratings.com")

agent与master通信

在agent端运行

# puppet agent -v --no-daemonize --server monitor.comratings.com

这时候会卡在这里,agent端在启动时会生成一个证书签署请求,存放的路径在“/var/lib/puppet/ssl/certificate_requests/,

然后我们去matser端查看

# puppet cert list

  "***.comratings.com" (D6:D7:33:60:05:0A:88:82:07:28:0D:80:B2:70:BE:BF)

这里有一个待签名的请求,如果对其授权签名就运行如下命令

# puppet cert sign ***.comratings.com

注:对不签署证书的操作很容易搞错,因为签署时所用的命令是“puppet cert sign ***.comratings.com”,在cert的帮助信息中也有"revoke"和"clean"这样的选项,给人造成了混淆。如果master因某种原因拒绝了agent的证书签署请求,当agent的故障排除后需要再次向master端发起证书签署请求,这时你再次运行“puppet agent -v --no-daemonize --server nod1.test.com”命令后agent不会有任何反应,因为之前已发送了证书签署请求,这时应该把生成的证书签署请求删除后再运行命令重新向master连接,规范的做法如下

# puppet certificate_request destroy ***.comratings.com

也可以直接去删除“/var/lib/puppet/ssl/certificate_requests/***.comratings.com.pem”这个证书签署请求文件。

六、puppet的配置

1、配置文件及目录的介绍

配置文件的路径是/etc/puppet

● auth.conf 配置文件是agent访问master的权限认证文件;

● autosign.conf 配置文件是master对agent证书自动签名的配置文件;

● fileserver.conf 配置文件是master向agent同步静态文件的配置文件;

● mainfests/ agent入库的导航文件与逻辑文件,此目录中的文件又称为清单;

● module/ 基础模块目录

● puppet.conf 配置文件是master守护进程的主要配置文件

2、master上创建site.pp文件

agent访问master的一切配置管理工作都由site.pp文件开始的,它的作用是告诉master寻找并载入agent的配置信息,默认情况下site.pp文件会存放在/etc/puppet/manifests目录中

# mkdir /etc/puppet/manifests

# vim /etc/puppet/manifests/site.pp

notify{"hello world": }

当agent访问master时会调用site.pp文件中的notify资源,将其值(hello world)在屏幕上输出,如果我们看到了屏幕的输出,这就表明agent已经成功的访问了master

3、puppet 配置文件常用配置参数

1)[main]用于puppet全局配置

[main]
server = monitor.comratings.com     #指定puppet服务端地址
autoflush = false     #是否实时刷新日志到磁盘
logdir = /var/log/puppet          #日志目录
rundir = /var/run/puppet        #进程文件存放目录
ssldir = $vardir/ssl   存放签名文件的配置路径

2)[master]用于服务端配置

[master]
# 监听在所有网卡
bindaddress = 0.0.0.0
# 监听端口
masterport = 8140
# 报告存放目录,客户端的每次执行会生成一份以日期+时间命令的yaml文件报告
reportdir = /var/lib/puppet/reports
# 自动授权签名配置文件
autosign = true
autosign = /etc/puppet/autosign.conf

注:可以设置master自动签发所有的证书,我们只需要在/etc/puppet 目录下创建 autosign.conf 文件。(不需要修改 /etc/puppet/puppet.conf文件,因为我默认的autosign.conf 文件的位置没有修改)

cat > /etc/puppet/autosign.conf <<EOF

*.comratings.com

EOF

这样就会对所有来自 comratings.com 的机器的请求,都自动签名。

3)[agent]用于客户端配置

[agent]

#

4、manifests和modules目录介绍

manifests目录中存放了配置管理代逻辑和site.pp入口文件,所有的agent访问master时优先匹配到site,pp文件中的node节点。节点与节点间有支持继承

下面来看一下site.pp文件中定义的node节点格式

node ' web.puppet.com' {

#省略

node ' ***.puppet.com' {

#省略

node default {

#省略

当agent访问master时就会匹配这些节点,并获取node节点中的配置信息,当没有匹配到相应的node节点时,就会匹配默认节点。

modules目录又称“基础模块”目录,它由不同的目录和class类文件组成,这些目录和文件是完成一个任务的子集,最终可以通过manifests串联modules中的这些子集来完成一个完整的任务,这就是基础模块的作用,如何获取这些基础模块呢,一种是从官方获取基础模块,另一种是自己开发基础模块。

七、puppet资源详解


1puppet进阶指南——file资源详解

2、puppet进阶指南——filebucket资源详解

3、puppet进阶指南——host资源详解

4、puppet进阶指南——user资源详解

5、puppet进阶指南——package资源详解

6、puppet进阶指南——service资源详解

7、puppet进阶指南——exec资源详解

八、puppet案例

puppet案例介绍

欢迎关注http://www.wzlinux.com:45 和http://www.wzlinux.com 。

Linux puppet的安装配置部署相关推荐

  1. 【Linux系列】安装配置Nginx

    [Linux 环境]安装配置Nginx 文章目录 [Linux 环境]安装配置Nginx 前言 一.Nginx是什么? 二.使用Nginx 1.安装nginx 2.配置Nginx 3.配置websoc ...

  2. Linux环境Spark安装配置及使用

    Linux环境Spark安装配置及使用 1. 认识Spark (1) Spark介绍 大数据计算引擎 官网:spark.apache.org/ 官方介绍:Apache Spark™ is a unif ...

  3. Linux环境HBase安装配置及使用

    Linux环境HBase安装配置及使用 1. 认识HBase (1) HBase介绍 HBase = Hadoop database,Hadoop数据库 开源数据库 官网:hbase.apache.o ...

  4. Linux服务器下安装配置Nginx的教程

    这篇文章主要介绍了Linux服务器下安装配置Nginx服务器的教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 Nginx("engine x")是一款 ...

  5. linux redis 3.0.7,linux虚拟机上安装配置redis3.0.7

    linux shell 的 linux虚拟机上安装配置redis3.0.7 我们给大家列出详细的图文步骤教给大家在linux虚拟机上安装redis以及相关的配置流程. 将redis-3.0.7.tar ...

  6. Linux下,安装配置Weblogic

    Linux下,安装配置Weblogic 2009-03-20 15:03 一.安装配置JDK //如果应用不需要高版本的JDK的话,可以不单独安装JDK 1. 安装JDK # chmod a+x jd ...

  7. linux apf防火墙安装配置

    linux apf防火墙安装配置 APF(Advanced Policy Firewall)是 Rf-x Networks 出品的Linux环境下的软件防火墙,被大部分Linux服务器管理员所采用,使 ...

  8. Linux下ejabberd安装配置

    为什么80%的码农都做不了架构师?>>>    Linux下ejabberd安装配置 1.下载Ejabberd安装包 wget http://www.process-one.net/ ...

  9. Linux环境Kafka安装配置

    Linux环境Kafka安装配置 1. 认识Kafa (1) Kafa介绍 开源消息系统 官网:kafka.apache.org/ 用途:在流式计算中,Kafka一般用来缓存数据,Storm通过消费K ...

最新文章

  1. dynamo方程怎么写_根据以下说明,画出因果关系图,建立流图模型,并拟定变量名称和适当数据,写出对应的...
  2. 机器学习之 weka学习(六)最大内存
  3. 个人计算机既pc机,个人计算机简称pc机这种计算机属于___pc机开机后计算机执行_个人计算机即pc机(14)...
  4. excel单元格调用mysql数据,excel表格自动调用数据库-如何把Excel表格当做数据库处理...
  5. 计算机怎么删除表格,win10系统下Word2010如何删除表格和表格中内容
  6. 网络安全工程师面试题汇总
  7. inssider序列号_AP注册问题-华三.ppt
  8. 计算机技术能力校本培训总结,教师现代教育技术校本培训总结(2篇)
  9. 半导体封装测试英语词汇量的软件,半导体英语
  10. 目标检测数据集格式转换(yolo→voc)
  11. 转行开始的前端填坑之路
  12. DataFrame实现两表连接
  13. npm i 报错及解决方案
  14. 《数据之美》读书笔记
  15. java与javax的区别
  16. ECSHOP最小起订数插件,ECSHOP商品起订数量插件,ECSHOP商品批发限购插件,ecshop商品批发起订量限购插件,ecshop商品购买批发最小起订量数量插件
  17. rust石头壁炉_《腐蚀》RUST生存攻略心得
  18. net view 时报错 发生系统错误 6118 解决
  19. 营销型网站的概念及设计制作过程中的注意事项
  20. 代码审计工程师_36行代码完成5个审计师一周的工作

热门文章

  1. 安装MYSQL的思考与分析_mysql安装和基本使用
  2. android wear 运动程序,Android Wear 之 为通知添加动作
  3. linux 内核优化实战,Linux编译优化必须掌握的几个姿势总结
  4. php1到5000排序,常用的排序算法(一)--快速排序(PHP实现)
  5. vim python 代码提示_linux vim 编写代码python使用tab补全
  6. 加密芯片——RSA算法特点与应用注意事项
  7. 视频直接变漫画!GAN又有了新玩法 | Demo+代码+论文
  8. 华为宣布智能计算战略,全栈全场景,当企业智能化转型加速器
  9. 荣耀Magic2 发布:滑盖全面屏、前后6摄、屏下指纹、麒麟980
  10. 第二弹!谷歌大脑2017总结下篇:Jeff Dean梳理6大领域研究