描述puppet的工作原理,部署一套puppet系统.

  1. puppet的工作原理:

    Puppet的目录是让管理员只集中于要管理的目标,而忽略实现的细节。Puppet即可以运行在单机上,也可以以C/S结构使用。在大规模使用puppet的情况下,通常使用C/S结构,在这种结构中puppet客户端只运行puppeclient,puppet服务端只运行puppemaster

1
2
3
4
1)      客户端puppet调用fast探测出主机的一些变量,如主机名、内存大小、IP地址等。Puppet把这些信息使用SSL连接发送给服务器端
2)      服务器端的puppetmaster通过fast工具分析检测客户端的主机名,然后找到项目的主配置文件manifest里面对应的node配置,并对该部分内容进行解析,fast发送过来的信息可以作为变量处理,node牵扯到的代码才被解析,没牵扯到的不解析,解析分为语法检查,如果语法没错,继续解析,解析结果生成一个结果‘伪代码’,然后把‘伪代码’发给客户端
3)      客户端收到‘伪代码’并且执行,客户端把执行结果发给服务器
4)      服务器端把客户端的执行结果写入日志

3.puppet工作过程中需要注意的事项:

1
2
1)      为了保证安全,Client和Master之间是基于SSL和证书的,只有经Master证书认证的Client可以与Master通信
2)      Puppet会让系统保持在人们所期望的某种状态并一直维持下去,如检测某个文件并保证其一直存在,保证SSH服务始终开启,如果文件被删除了或者ssh服务关闭了,puppet下次执行时(默认30分钟)会重新创建该文件或者启动SSH服务

4.项目环境:

主机

操作系统

IP地址

主要软件

Puppetmaster

Centos6.5

192.168.31.83

Ruby-rdoc-1.8.7.352

Ruby-libs-1.8.7.352

Ruby-irb-1.8.7.352

Ruby-1.8.7.352

Puppet-2.7.21.tar.gz

Facter-1.7.1.tar.gz

Puppetclient1

Centos6.5

192.168.31.184

Ruby-rdoc-1.8.7.352

Ruby-libs-1.8.7.352

Ruby-irb-1.8.7.352

Ruby-1.8.7.352

Puppet-2.7.21.tar.gz

Facter-1.7.1.tar.gz

Puppetclient2

Centos6.5

192.168.31.79

Ruby-rdoc-1.8.7.352

Ruby-libs-1.8.7.352

Ruby-irb-1.8.7.352

Ruby-1.8.7.352

Puppet-2.7.21.tar.gz

Facter-1.7.1.tar.gz

NTP server

Centos6.5

192.168.31.224

5.项目实施:

1)搭建puppetmaster

规划服务器主机名

在小的规模puppet环境下,一般修改/etc/hosts文件,然而在上千台服务器的环境中,我们要搭建自己的DNS服务器来实现服务通过主机名来进行通信,此项目我们通过修改/etc/hosts文件来实现

修改HOSTNAME=master.zjz.cn

添加一下几行:

还有一种方式来修改主机名,不用重启系统的方式

2)时间同步服务器

由于facter使用SSL证书,依赖时间同步,所以需要搭建NTP服务器

一、搭建NTP Server

打开ntp的配置文件添加下面两行

其作用是当/etc/ntp.conf中定义的server都不可用时,将使用local时间作为NTP服务提供给NTP客户端

启动NTP服务,并设置为开机自启

二、Puppetmaster 作为NTP客户端配置

三、安装ruby

一定按照一下先后顺序安装,先安装compat-readline5,也可以一并安装

首先新建一个挂载系统盘的目录(因为我们安装的包,在系统盘中有,使用rpm直接安装)

挂载系统盘

切换到挂载目录的Packages目录中

开始安装

安装完成后,查看版本

四、Puppet、facter安装

通过facter工具分析检测客户端传输过来的信息

安装facter

a)      解压源码包

新建一个存放安装包的目录,下载源码包

b)      编译安装源码包

安装puppet:

(一)  解压源码包

先下载源码包

(二)  编译安装

(三)  复制配置文件

(四)  修改文件属性

(五)  创建puppet主目录

注意:这两个目录的名称是固定的

五、Puppet服务证书请求与签名

生产环境中iptables默认是关闭的

Master端配置

(一)  修改配置文件

在【main】标题下添加以下一行:配置服务器模块的路径

(二)  启动puppet主程序

6.搭建puppetclient:

首先配置puppetclient1,步骤如下:

1)      规划服务器主机名

添加一下几行

确保可以通过域名ping同puppetmaster,即ping master.zjz.cn

2)      服务器时间同步

3)      安装ruby

一定按照一下顺序安装,先安装compat-readline5,也可以一起安装

安装同master安装步骤

安装完成后检查版本

4)      Puppet、facter安装

通过facter工具分析检测客户端传输过来的信息

安装facter:

一、解压源码包

二、编译安装源码包

安装puppet:

一、解压源码包

二、编译安装源码包

三、复制配置文件

四、修改文件属性

五、Puppet服务证书请求与签名

生产环境中iptebles默认是全部关闭的

Puppetclient1和puppetclient2一样,如下操作

修改client配置文件

在【main】标题下加上一行,设置服务器的域名

Puppetclient2和puppetclient1配置过程类似,注意将主机名修改为client2

申请和注册

Client端:

分别在puppetclient1和puppetclient2上进行注册

此时可以按Ctrl+C结束,因为puppet一直在等待任务,但是已经从server查看到了申请信息

Master端

查看申请注册的客户端:

将未注册的客户端进行注册

可以通过目录查看已注册的客户端

此时客户端已经完成了证书的请求和签名

7、配置实例

1.      配置一个测试节点

节点信息:/etc/puppet/manifests/nodes

模块信息:/etc/puppet/modules

为了保护Linux的ssh端口爆破,批量修改客户端sshd端口,将端口22修改为9922,并实现重启工作

创建ssh模块,模块目录为ssh,模块下面有三个文件:mainfests、templates和files

Mainfests里面必须要包含一个init.pp文件,这是该模块的初始文件,导入一个模块的时候,会从init.pp开始执行。可以把所以的代码写到init.pp文件里面,也可以分成多个pp文件,init再去包含其他文件,定义class类名的时候必须是ssh,这样能实现调用

Files目录是该模块的文件发布目录,puppet提供一个文件的分发机制,类似rsync的模块

Templates目录包含erb模型文件,这个和file资源的template属性有关(很少用)

Master端:

1)      创建需要的必要的目录

此时/etc/puppet/modules/ssh/目录下结构:

2)      创建模块配置文件install.pp

输入一下信息:

3)      创建模块配置文件config.pp

输入一下信息:

4)      创建模块配置文件service.pp

输入一下信息:

5)      创建模块主配置文件init.pp

输入一下信息:

此时/etc/puppet/modules/ssh/manifests目录下有四个文件:

6)      建立服务器端ssh统一维护文件

由于服务器端和客户端的sshd_config文件默认一样,此时将服务器端/etc/ssh/sshd_config复制到模块默认路径

7)      创建测试节点配置文件,并将ssh加载进去

输入一下信息:

8)      将测试节点载入puppet,即修改site.pp

输入一下信息:

9)      修改服务端维护的sshd_config配置文件

10)   重新启动puppet

#] /etc/init.d/puppetmaster restart

2.      客户端主动拉取

一般在小规模自动化集群中,如代码上线需要重启服务时,为了防止网站暂时性的无法访问的问题,每台客户端运行一次puppet agent –t命令,选择模式根据客户端集群规模的大小,根据经验,一般运维工程师puppet服务器到各客户端会建立ssh信任,然后自定义shell脚本,ssh批量让客户端执行puppet同步命令

Client端:

192.168.31.184(puppetclient1)端执行命令如下:

此时在Client端已经执行成功,验证如下:

查看服务器ssh服务是否重启,端口是否生效:

3.      服务器推送同步

当大规模部署时采用服务器推送模式

Client端:

192.168.31.79(puppetclient2)端修改:

1)      修改配置文件:

最后一行添加如下:

修改auth.conf

最后一行添加如下:

2)      启动puppet客户端

查看/etc/ssh/sshd_config的内容如下:

确认启动ssh服务:

Master端:

3)      开始往客户端推送

4)      校验结果:

此时Client端已经执行成功,验证如下:

查看服务器ssh服务是否重启,端口是否生效:

本文转自xinrenbaodao  51CTO博客,原文链接:http://blog.51cto.com/11832904/1972453,如需转载请自行联系原作者

第二十二周微职位puppet相关推荐

  1. C语言编程>第二十二周 ④ 从键盘输入一组小写字母,保存在字符数组str中,请补充fun函数,该函数的功能是:把字符数组str中字符下标为偶数的小写字母转换成对应的大写字母,结果仍保存在原数组

    例题:从键盘输入一组小写字母,保存在字符数组str中,请补充fun函数,该函数的功能是:把字符数组str中字符下标为偶数的小写字母转换成对应的大写字母,结果仍保存在原数组中. 例如,输入 " ...

  2. C语言编程>第二十二周 ⑥ 请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中。

    例题:请补充fun函数,该函数的功能是:把字符下标能被2和3同时整除的字符从字符串s中删除,把剩余的字符重新保存在字符串s中.字符串s从键盘输入,其长度作为参数传入fun函数. 例如,输入 " ...

  3. C语言编程>第二十二周 ③ 下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值:

    例题:下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值: 例如,若n=1000,则应输出0.000155. 注意:不要改动main函数,不能增行或删行,也不能更改程序的结构. 代码 ...

  4. 左耳听风 第二十二周

    左耳听风 第二十二周 每周完成一个ARTS: 每周至少做一个 leetcode 的算法题.阅读并点评至少一篇英文技术文章.学习至少一个技术技巧.分享一篇有观点和思考的技术文章.(也就是 Algorit ...

  5. C语言编程>第二十二周 ① 下列给定程序中,函数fun的功能是:找出一个大于给定整数n且紧随n的素数,并作为函数值返回。

    例题:下列给定程序中,函数fun的功能是:找出一个大于给定整数n且紧随n的素数,并作为函数值返回. 例如,输入 整数为32,则输出的数素数为37". 注意:不要改动main函数,不能增行或删 ...

  6. 第二十二周--星光不付赶路人

    本周学习总结 本周正在学习redis的相关知识,对于这方面的学习我觉得刚开始还是很迷糊的,不知道虚拟机什么的怎么弄,后来一点点摸索也有了一些眉目,一步步安装相关的软件,xshell,xtpf,linu ...

  7. 第二十二讲:自尊与自我实现 第二十三讲:总结(完)

    (注:此为课程第二十二课,更新于2017年7月23日.) 今天我们会讲完自尊,然后下节课将是我们这个学期最后一次课.我会总结一下我们讲过的内容,我们讲过的和我们将要讲的内容. 先回顾一下我们讲过的,就 ...

  8. stm32l0的停止模式怎么唤醒_探索者 STM32F407 开发板资料连载第二十二章 待机唤醒实验

    1)实验平台:alientek 阿波罗 STM32F767 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第二十二章 待机唤醒实 ...

  9. 20145240《信息安全系统设计基础》第十二周学习总结

    20145240<信息安全系统设计基础>第十二周学习总结 前三周博客链接 第九周学习总结 第十周学习总结 第十一周学习总结 视频学习内容总结 指针数组与数组指针 数组指针(也称行指针) 定 ...

最新文章

  1. php代码中怎么插入地图,php插入地图
  2. 【GitHub】github相关问题和解决办法
  3. 控制面版中文件服务器属性,《服务器配置与管理》第3章基本配置.pptx
  4. 云服务能力评估“国标”出炉,腾讯云TStack首批通过私有云“一级能力”认证
  5. 手环是如何测试人体健康数据?
  6. kettle java 变量传递_kettle的jdk1.7环境变量配置
  7. spring 面向接口编程_Spring面向方面的编程
  8. C#设计模式(2)——简单工厂模式
  9. 高斯核函数python代码_单类SVM:SVDD
  10. iOS开发之oc(五)--成员变量(实例变量)
  11. python清除实例化类_在Python中,如何尝试(和排除)类的实例化?
  12. how to make jelly effect on belly in maya
  13. 金融直播三大常用场景一文解析
  14. 深圳地方坐标系转WGS84坐标系
  15. linux 添加声卡驱动,Linux操作系统下声卡驱动的详细加载方法
  16. 47、打印二叉树的右视图 和 左视图
  17. 《复杂网络》复杂网络的结构及特点
  18. 漫画绘制技法大放送(上)
  19. mysql怎么命令查看表的数据_查看MySQL数据库表的命令介绍
  20. Python 之 格式化输出

热门文章

  1. Python网络编程基础【底层网络】
  2. java c 传递字符串数组_JNI传递字符串数组J-StringArray
  3. c 语言输出字符用什么作用是什么,C语言中输出字符串用什么符号
  4. 现浇板用弹性计算方法_自建房砖混结构现浇楼板配筋的要求和计算方法
  5. java代码post接口请求 用 hutool工具类
  6. jQuery Validate focusCleanup: true
  7. 优粮生活炒菜机器人_闫寒 - 外卖O2O「优粮生活」合伙人 | 到「在行」来约见我...
  8. linux系统访问sftp,Linux上设置用户通过SFTP访问目录的权限的方法
  9. mysql 安装在路由器_MySQL如何安装?安装MySQL数据库的三种方法
  10. centos 安装mysql-proxy_详解在Centos 5.2下安装最新Mysql Proxy LUA教程