内容简介:作为一名系统管理员,维护服务器正常运行是最基本的职责,在管理几台到几十台服务器时,大部分管理员喜欢自己写小工具来维护,但随着服务器的数量曾多,任务量也逐渐增多,这时就需要简洁的、强大的框架来完成系统管理的任务,为了实现这一目的,我们引入了一些工具,这些工具是可编程的,系统管理员只需要为这个工具写上几行代码,它便会自动的完成所有的工作,这批工具就是运维自动化puppet,它可以针对多台服务器进行统一操作,如部署统一的软件、进行统一上线维护等,而且能快速完成上线部署,减少人力及人力误操作风险。Puppet的目
Puppet 的部署与应用
1、 案例概述
作为一名系统管理员,维护服务器正常运行是最基本的职责,在管理几台到几十台服务器时,大部分管理员喜欢自己写小 工具 来维护,但随着服务器的数量曾多,任务量也逐渐增多,这时就需要简洁的、强大的框架来完成系统管理的任务,为了实现这一目的,我们引入了一些工具,这些工具是可编程的,系统管理员只需要为这个工具写上几行代码,它便会自动的完成所有的工作,这批工具就是运维自动化puppet,它可以针对多台服务器进行统一操作,如部署统一的软件、进行统一上线维护等,而且能快速完成上线部署,减少人力及人力误操作风险。
2、 Puppet 的工作原理
Puppet的目录是让管理员只集中于要管理的目标,而忽略实现的细节。Puppet即可以运行在单机上,也可以以C/S结构使用。在大规模使用puppet的情况下,通常使用C/S结构,在这种结构中puppet客户端只运行puppeclient,puppet服务端只运行puppemaster。
1 、 puppet 具体的工作原理
1) 客户端puppet调用fast探测出主机的一些变量,如主机名、内存大小、IP地址等。Puppet把这些信息使用SSL连接发送给服务器端
2) 服务器端的puppetmaster通过fast工具分析检测客户端的主机名,然后找到项目的主配置文件manifest里面对应的node配置,并对该部分内容进行解析,fast发送过来的信息可以作为变量处理,node牵扯到的代码才被解析,没牵扯到的不解析,解析分为语法检查,如果语法没错,继续解析,解析结果生成一个结果‘伪代码’,然后把‘伪代码’发给客户端
3) 客户端收到‘伪代码’并且执行,客户端把执行结果发给服务器
4) 服务器端把客户端的执行结果写入日志
2 、 puppet 工作过程中的注意事项
1) 为了保证安全,Client和Master之间是基于SSL和证书的,只有经Master证书认证的Client可以与Master通信
2) Puppet会让系统保持在人们所期望的某种状态并一直维持下去,如检测某个文件并保证其一直存在,保证SSH服务始终开启,如果文件被删除了或者ssh服务关闭了,puppet下次执行时(默认30分钟)会重新创建该文件或者启动SSH服务
3、 项目环境
| 主机 |
操作系统 |
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 |
4、 项目实施
1、 搭建 puppetmaster
1) 规划服务器主机名
在小的规模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主程序
2、 搭建 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端
查看申请注册的客户端:
将未注册的客户端进行注册
可以通过目录查看已注册的客户端
此时客户端已经完成了证书的请求和签名
3、 配置实例
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
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服务是否重启,端口是否生效:
5、 注意说明
如果分不清在那一台主机上做的操作,我们可以根据主机名来进行判断,其中puppetclient2上一开始安装的操作因为和puppetclient1上类似就是修改主机名不一样,所以安装步骤省略掉了,不会影响整体的操作,本文中也介绍了一写原理的问题,希望对大家有帮助。
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-11/155527.htm
以上所述就是小编给大家介绍的《Puppet的搭建和应用从入门到精通》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 圣思园《精通Spring Boot/Cloud》与《精通Java并发》课程现已宣布
- Charles 从入门到精通
- MAT 入门到精通(一)
- Git 从入门到精通
- Webpack入门到精通(1)
- 爬虫入门到精通-网页的下载
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Trading and Exchanges
Larry Harris / Oxford University Press, USA / 2002-10-24 / USD 95.00
This book is about trading, the people who trade securities and contracts, the marketplaces where they trade, and the rules that govern it. Readers will learn about investors, brokers, dealers, arbit......一起来看看 《Trading and Exchanges》 这本书的介绍吧!