阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Puppet的搭建和应用从入门到精通

201次阅读
没有评论

共计 4305 个字符,预计需要花费 11 分钟才能阅读完成。

Puppet 的部署与应用

1、 案例概述

作为一名系统管理员,维护服务器正常运行是最基本的职责,在管理几台到几十台服务器时,大部分管理员喜欢自己写小工具来维护,但随着服务器的数量曾多,任务量也逐渐增多,这时就需要简洁的、强大的框架来完成系统管理的任务,为了实现这一目的,我们引入了一些工具,这些工具是可编程的,系统管理员只需要为这个工具写上几行代码,它便会自动的完成所有的工作,这批工具就是运维自动化 puppet,它可以针对多台服务器进行统一操作,如部署统一的软件、进行统一上线维护等,而且能快速完成上线部署,减少人力及人力误操作风险。

2、 Puppet 的工作原理

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

1puppet 具体的工作原理

Puppet 的搭建和应用从入门到精通

 

     

1)      客户端 puppet 调用 fast 探测出主机的一些变量,如主机名、内存大小、IP 地址等。Puppet 把这些信息使用 SSL 连接发送给服务器端

2)      服务器端的 puppetmaster 通过 fast 工具分析检测客户端的主机名,然后找到项目的主配置文件 manifest 里面对应的 node 配置,并对该部分内容进行解析,fast 发送过来的信息可以作为变量处理,node 牵扯到的代码才被解析,没牵扯到的不解析,解析分为语法检查,如果语法没错,继续解析,解析结果生成一个结果‘伪代码’,然后把‘伪代码’发给客户端

3)      客户端收到‘伪代码’并且执行,客户端把执行结果发给服务器

4)      服务器端把客户端的执行结果写入日志

2puppet 工作过程中的注意事项

1)      为了保证安全,Client 和 Master 之间是基于 SSL 和证书的,只有经 Master 证书认证的 Client 可以与 Master 通信

2)      Puppet 会让系统保持在人们所期望的某种状态并一直维持下去,如检测某个文件并保证其一直存在,保证 SSH 服务始终开启,如果文件被删除了或者 ssh 服务关闭了,puppet 下次执行时(默认 30 分钟)会重新创建该文件或者启动 SSH 服务

3、 项目环境

 Puppet 的搭建和应用从入门到精通

 

主机

操作系统

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 文件来实现

Puppet 的搭建和应用从入门到精通

              修改 HOSTNAME=master.zjz.cn

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通   

              添加一下几行:

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

2)      时间同步服务器

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

一、搭建 NTP Server

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

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

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

 Puppet 的搭建和应用从入门到精通

二、Puppetmaster 作为 NTP 客户端配置

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

三、安装 ruby

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

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

Puppet 的搭建和应用从入门到精通

挂载系统盘

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

开始安装

Puppet 的搭建和应用从入门到精通

      安装完成后,查看版本

Puppet 的搭建和应用从入门到精通

四、Puppet、facter 安装

Puppet 的搭建和应用从入门到精通

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

安装 facter

a)      解压源码包

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

b)      编译安装源码包

Puppet 的搭建和应用从入门到精通

安装 puppet:

(一)  解压源码包

先下载源码包

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

(二)  编译安装

Puppet 的搭建和应用从入门到精通

(三)  复制配置文件

Puppet 的搭建和应用从入门到精通

(四)  修改文件属性

Puppet 的搭建和应用从入门到精通

(五)  创建 puppet 主目录

Puppet 的搭建和应用从入门到精通

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

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

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

Master 端配置

Puppet 的搭建和应用从入门到精通

(一)  修改配置文件

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

Puppet 的搭建和应用从入门到精通

(二)  启动 puppet 主程序

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

2、        搭建 puppetclient

首先配置 puppetclient1,步骤如下:

1)      规划服务器主机名

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

添加一下几行

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

2)      服务器时间同步

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

3)      安装 ruby

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

 Puppet 的搭建和应用从入门到精通

安装同 master 安装步骤

安装完成后检查版本

Puppet 的搭建和应用从入门到精通

4)      Puppet、facter 安装

Puppet 的搭建和应用从入门到精通

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

安装 facter:

一、解压源码包

Puppet 的搭建和应用从入门到精通

 Puppet 的搭建和应用从入门到精通

二、编译安装源码包

Puppet 的搭建和应用从入门到精通

安装 puppet:

一、解压源码包

Puppet 的搭建和应用从入门到精通

二、编译安装源码包

Puppet 的搭建和应用从入门到精通

三、复制配置文件

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

四、修改文件属性

Puppet 的搭建和应用从入门到精通

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

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

Puppet 的搭建和应用从入门到精通

Puppetclient1 和 puppetclient2 一样,如下操作

修改 client 配置文件

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

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

申请和注册

Client 端:

分别在 puppetclient1 和 puppetclient2 上进行注册

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

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

Master 端

查看申请注册的客户端:

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

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

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)      创建需要的必要的目录

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

输入一下信息:

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

输入一下信息:

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

输入一下信息:

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

输入一下信息:

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

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

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

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通 

输入一下信息:

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

输入一下信息:

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

10)  重新启动 puppet

Puppet 的搭建和应用从入门到精通

2.      客户端主动拉取

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

Client 端:

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

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

3.      服务器推送同步

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

Client 端:

192.168.31.79(puppetclient2)端修改:

1)      修改配置文件:

Puppet 的搭建和应用从入门到精通

最后一行添加如下:

Puppet 的搭建和应用从入门到精通

修改 auth.conf

Puppet 的搭建和应用从入门到精通

最后一行添加如下:

Puppet 的搭建和应用从入门到精通

2)      启动 puppet 客户端

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

确认启动 ssh 服务:

Puppet 的搭建和应用从入门到精通

Master 端:

3)      开始往客户端推送

Puppet 的搭建和应用从入门到精通

4)      校验结果:

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

Puppet 的搭建和应用从入门到精通

Puppet 的搭建和应用从入门到精通

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

Puppet 的搭建和应用从入门到精通

5、 注意说明

如果分不清在那一台主机上做的操作,我们可以根据主机名来进行判断,其中 puppetclient2 上一开始安装的操作因为和 puppetclient1 上类似就是修改主机名不一样,所以安装步骤省略掉了,不会影响整体的操作,本文中也介绍了一写原理的问题,希望对大家有帮助。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4305字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中