Puppet 部署应用

本文介绍了使用Puppet进行系统管理的案例,包括Puppet的工作原理、安装与部署步骤、配置SSH服务端口的批量修改。通过理解Puppet的C/S架构和工作流程,管理员可以实现对多台服务器的统一管理和自动化运维。
摘要由CSDN通过智能技术生成

Puppet 部署应用

技能目标

  • 熟悉 Puppet 工作原理
  • 掌握 Puppet 部署应用配置方法

案例一分析

案例概述

作为一名系统管理员,维护服务器正常运行是最基本的职责。在管理几台到几十台服务器时,大部分管理员喜欢写自己的小工具来维护。但是随着服务器数量的增多, 任务量也逐渐增加,这时就需要简洁的、强大的框架来完成系统管理任务。

为实现这一目的, 引入一批工具。这批工具是“可编程”的,系统管理员只需要为这批工具写上几行“代码”,它便会自动完成所有的工作,Puppet 就是这批运维自动化工具中的其中一种。在一些大型互联网企业中, Puppet 运维自动化工具管理着几百甚至上千台服务器,它可以针对多台服务器进行统一操作,如部署统一软件、进行统 一上线维护等,而且能够快速完成上线部署,减少人力并降低人力误操作风险。

案例前置知识点

1. Puppet 工作原理

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

Puppet 管理工具的工作流程如下图所示。
在这里插入图片描述
(1)客户端 Puppet 调用 Facter 工具(Facter 是通过 SSL 加密收集及检测分析客户端配置信息的一个工具),Facter 探测出主机的一些变量,如主机名、内存大小、IP 地址等。Puppet 把这些信息通过 SSL 连接发送到服务器端。

(2)服务器端的 Puppet Master 通过 Facter 工具分析检测客户端的主机名,然后找到项目主配置文件 manifest 里面对应的 node 配置, 并对该部分内容进行解析。Facter 发送过来的信息可以作为变量处理,node 牵涉到的代码才解析,其他没牵涉的代码不解析。解析分为几个阶段,首先进行语法检查。如果语法没错,就继续解析。解析的结果生成一个中间的“伪代码”,然后把伪代码发给客户端。

(3)客户端接收到“伪代码”并且执行,客户端把执行结果发送给服务器。

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

2. Puppet 工作中的注意事项

Puppet 工作过程中,有以下两点值得注意。

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

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

案例环境

1. 本案例实验环境

主机名 IP地址 配置 主要软件
master 192.168.10.101 2C/2G Puppet-server
client1 192.168.10.102 2C/2G Puppet
client2 192.168.10.103 2C/2G Puppet

2. 案例需求

使用 Puppet 批量修改客户端 SSH 服务端口

3. 案例实现思路

(1) 环境准备工作;

(2) 安装 Puppet Master 和 Puppet Client;

(3) 配置测试节点;

(4) 客户端主动拉取和服务端主动推送。

案例一实施

Puppet 安装与部署

1. 修改服务器主机名

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

192.168.10.101主机操作
hostnamectl set-hostname master
su

192.168.10.102主机操作
hostnamectl set-hostname client1
su

192.168.10.103主机操作
hostnamectl set-hostname client2
su

2. 关闭防火墙内核安全机制,所有主机操作

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config

3. 安装启动时间同步服务器,所有主机操作

yum -y install chrony
systemctl start chronyd
systemctl enable chronyd
chronyc sources -v

4. 添加hosts解析,所有主机操作

cat >> /etc/hosts << EOF
192.168.10.101 master
192.168.10.102 client1 
192.168.10.103 client2 
EOF

Puppet 安装与部署

1. 安装 Puppet-server , master主机操作
从 官 网 https://yum.puppetlabs.com/el/7/products/x86_64/ 下 载 Puppet 源puppetlabs-release-7-12.noarch.rpm 软件包,上传到 master服务器上。

#解压源码包
rpm -ivh puppetlabs-release-7-12.noarch.rpm

#安装启动puppet-server
yum install -y puppet-server
systemctl start puppetmaster
systemctl enable puppetmaster

2. 安装Puppet,两台client主机操作

#上传puppetlabs源到client主机中,安装 puppetlabs 源
rpm -ivh puppetlabs-release-7-12.noarch.rpm

#安装puppet
yum install -y puppet

3. 修改两台客户端的配置文件

vim /etc/puppet/puppet.conf
#在文 件 中 的 [main] 标 题 下 添 加 “server = master”配置字段用于设置 Puppet-server 的域名
server = master     #master主机名,如果有DNS服务器的话可以写域名

4. 在两台客户端申请注册

#client1主机注册
puppet agent --server=master --no-daemonize --verbose

#client2主机注册
puppet agent --server=master --no-daemonize --verbose

#等待一会儿,然后可以按 Ctrl+C 结束

5. 在 master 端查看申请注册的客户端

puppet cert --list
"client1" 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lxiaoyouyouj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值