Puppet

2023-10-27

1.Puppet简介

Puppet使用一种描述性语言来定义配置项,配置项中被称为“资源”,描述性语言可以声明用户的配置状态,比如声明一个软件包应该被安装或一个服务应该被启动等。
Puppet可以运行在一台服务器端,每个客户端通过SSL证书连接到服务端,得到本机器的配置列表,然后根据列表来完成配置工作,所以如果硬件性能比较高,维护管理上千上万台机器是非常轻松的,前提是客户端的配置、服务器路径、软件需要保持一致。
在企业级大规模的生产环境中,如果只有一台Puppet master,压力会非常大,因为Puppet是用Ruby语言编写的,Ruby是解析型语言,每个客户端来访问都要解析一次,当客户端访问服务器次数很多,会造成服务器端压力很大,所以需要扩展成一个服务器集群组。
Puppet master可以看作一个Web服务器,实际上也是由Ruby提供的Web服务器模块来做的。因此可以利用Web代理软件来配合Puppet master做集群设置,一般使用Nginx+Puppet master整合构建大型企业自动化运维管理工具,Puppet项目主要开发者是Luke Kanies,目前为Puppet labs CEO,Puppet遵循GPLv2版权协议。
Kanies从1997年开始参与UNIX的系统管理工作,Puppet的开发源于这些经验。因为对已有的配置工具不甚满意,从2001年到2005年间,Kanies开始在Reductive实验室从事工具的开发。很快Reductive实验室发布了他们新的旗舰产品。
Puppet是开源的基于Ruby的系统配置管理工具,Puppet工作流程为Puppet是一个C/S结构,所有的Puppet客户端与同一个服务器端的Puppet通信,每个Puppet客户端每半小时(可以设置)连接一次服务器端,下载最新的配置文件,并且严格按照配置文件来配置服务器,配置完成以后Puppet客户端可以反馈给服务器端一个消息,如果报错会给服务器端反馈一个消息。

二、Puppet工作原理

要熟练掌握Puppet在企业生产环境中的应用,需要深入理解Puppet服务端与客户端详细的工作流程及原理,如图所示为Puppet master与agent完整工作流程图。
在这里插入图片描述
Puppet工作原理详解如下:
·□ 客户端Puppetd调用本地facter,facter会探测出该主机的常用变量,例如主机名、内存大小、IP地址等。然后Puppetd把这些信息发送到Puppet服务端;
·□ Puppet服务端检测到客户端的主机名,然后会检测manifest中对应的node配置,并对这段内容进行解析,facter发送过来的信息可以作为变量进行处理;
·□ Puppet服务端匹配Puppet客户端相关联的代码才能进行解析,其他的代码不解析,解析分为几个过程,首先是语法检查,然后会生成一个中间的伪代码,之后再把伪代码发给Puppet客户端;
·□ Puppet客户端接收到伪代码之后就会执行,执行完后会将执行的结果发送给Puppet服务端;
·□ Puppet服务端再把客户端的执行结果写入日志

三、Puppet安装配置

Puppet工作为C/S模式,构建Puppet平台需安装Puppet server端和client端,安装之前准备好系统环境,说明如下:
·□ 操作系统版本:CentOS 6.10 x64;
·□ 服务端ip:192.168.0.140 hostname:192-168-0-140-dzqc.net
·□ 客户端ip:192.168.0.139 hostname:192-168-0-139-dzqc.net
(1)Puppet服务端安装。
Puppet服务器端需修改主机名称为192-168-0-140-dzqc.net,并且在hosts文件添加主机名和本机IP的对应关系,如果本地局域网有DNS服务器,可以无须修改hosts文件,修改主机名及配置hosts代码如下:
hostname ifconfig eth0|grep Bcast|awk '{print $2}'|sed 's/addr://g'|sed 's/\./-/g'-dzqc.net
在/etc/hosts 中添加以下内容
192.168.0.139 192-168-0-139-dzqc.net
192.168.0.140 192-168-0-140-dzqc.net

Puppet客户端除了需要安装Puppet外,还需要Ruby的支持,需要安装Ruby相关软件包,默认YUM安装Puppet,会自动下载并安装Ruby相关软件,代码如下,
安装服务器端
rpm -Uvh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-10.noarch.rpm
安装puppet服务器端
yum install puppet-server -y
启动puppet服务器端
/etc/init.d/puppetmaster start
关闭防火墙
service iptables stop
修改SELINUX
sed -i ‘/SELINUX/ s/enforcing/disabled/g’ /etc/selinux/config
setenforce 0
Puppet客户端安装
Puppet客户端也需要修改主机名称为192-168-0-139-dzqc.net,并且在hosts文件添加主机名和本机IP的对应关系,如果本地局域网有DNS服务器,可以无须修改hosts文件,修改主机名及配置hosts代码如下:
hostname ifconfig eth0|grep Bcast|awk '{print $2}'|sed 's/addr://g'|sed 's/\./-/g'-dzqc.net
在/etc/hosts 中添加以下内容
192.168.0.139 192-168-0-139-dzqc.net
192.168.0.140 192-168-0-140-dzqc.net

客户端安装
rpm -Uvh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-10.noarch.rpm
安装puppet客户端
yum install puppet -y
启动puppet客户端
/etc/init.d/puppet start
关闭防火墙
service iptables stop
修改SELINUX
sed -i ‘/SELINUX/ s/enforcing/disabled/g’ /etc/selinux/config
setenforce 0

Puppet客户端申请证书

Puppet客户端与Puppet服务端是通过SSL隧道通信的,客户端安装完成后,首次使用需向服务器端申请Puppet通信证书,Puppet客户端第一次连接服务器端会发起证书申请,在Puppet客户端执行命令如下,返回结果如图所示。
puppet agent --server 192-168-0-140-dzqc.net --test==
在这里插入图片描述

Puppet服务端颁发证书
Puppet客户端向服务器发起证书申请,服务器端必须审核证书,如果不审核,客户端与服务器端无法进行后续正常通信,Puppet服务端颁发证书命令代码详解如下,返回结果如下所示。在这里插入图片描述
puppet cert --list:查看申请证书的客户端主机名;
puppet cert -s 192-168-0-139-dzqc.net:颁发证书给客户端;
puppet cert -s:为特定的主机颁发证书;
puppet cert -s and-a:给所有的主机颁发证书;
puppet cert --list --all:查看已经颁发的所有证书。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Puppet 的相关文章

随机推荐

  • linux:linux基础命令(一)

    前言 为什么要学linux 为了运维 项目上线 所以要了解linux操作系统 什么是LNMP linux nginx mysql php小常识 一个用Linux Shell编写的可以为CentOS RadHat Debian Ubuntu
  • 进程和子进程

    进程和子进程 父子进程有独立的数据段 堆 栈 共享代码段 Linux中每个进程都有4G的虚拟地址空间 独立的3G用户空间和共享的1G内核空间 fork 创建的子进程也不例外 子进程资源的由来 1G内核空间既然是所有进程共享 因此fork 创
  • input type=“file”上传文件(一)

    使用input标签 type file 的时候就可以上传文件 为input标签添加change事件 调用函数
  • qt 添加动作 (QAction)

    Qt 5 mainwindow h ifndef MAINWINDOW H define MAINWINDOW H include
  • 3Dgame_homework7

    3D游戏 作业7 智能巡逻兵 要求 游戏设计要求 程序设计要求 提示 相关理论 实现过程与代码 智能巡逻兵 要求 游戏设计要求 创建一个地图和若干巡逻兵 使用动画 每个巡逻兵走一个 3 5 个边的凸多边型 其位置数据是相对地址 即每次确定下
  • 静态库调用动态库或者静态库(Cmake例子)

    1 静态库无论调用动态库还是静态库都只需要include库的头文件 2 要在调用该静态库的地方添加库引用 并设置路径 结论 其实静态库调用动态库或者静态库 只是在用到库方法的地方把该方法添加到LIB当中 真正使用的地方才会把这些库LINK起
  • flutter_blue优化(FlutterBlue.instance.scan搜索重复、搜索结果处理、更新之前保存缓存数据、保存连接成功的设备)

    1 搜索列表优化 FlutterBlue instance scan搜索重复 搜索结果处理 更新之前保存缓存数据 2 保存连接过的设备 3 十进制转十六进制 4 写入十六进制数据 json scan dart 实体类 主要是使用flutte
  • Spring Boot是什么?它的优点是什么?

    Spring Boot是什么 它的优点是什么 Spring Boot是一个基于Spring框架的快速开发框架 它旨在简化Spring应用程序的开发过程和部署流程 Spring Boot提供了自动化配置和约定大于配置的方式 使开发人员可以专注
  • JavaWeb--- Filter(过滤器)学习

    Filter 过滤器 处理中文乱码 登录验证 1 xml依赖
  • 教你用Python做图像处理

    质量 速度 廉价 选择其中两个 提到图像处理第一个想到的库就是PIL 全称Python Imaging Library Python 图像处理类库 它提供了大量的图像操作 比如图像缩放 裁剪 贴图 模糊等等 很多时候它需要配合numpy库一
  • 无盘服务器怎么看使用情况,无盘服务器回写盘查看

    无盘服务器回写盘查看 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 由于某些机型的服务器没有配备SDI卡 或者其他服务器
  • 代码随想录一刷-Day09

    LeetCode27 移除元素 public int removeElement int nums int val if nums length 0 return 0 双指针 int slow 0 fast 0 while fast lt
  • Dynamic 356 OP 9.0版本 同服务器环境还原DB导入组织报错

    环境 Dynamic 365 9 0 6 9 PRD和UAT组织在同一套服务器环境中 操作 1 备份PRD数据库 还原到UAT数据库 2 在CRM部署管理器中导入UAT组织数据库 提示错误如下 12 31 12 Verbose Databa
  • 代码简洁3 —— 注释

    前段时间在组织代码review时 提到代码可读性问题时 很多人的第一反应竟然是多添加注释 而我始终觉得注释只能是锦上添花 而不能雪中送炭 再多的注释也改变不了代码逻辑组织混乱的现实 反而过多的注释会加重代码阅读的时间 什么也比不上放置良好的
  • 大端模式(big-endian)与小端模式(little-endian)

    参考自 大端模式与小端模式 大端模式是指数据的低位保存在内存的高地址中 而数据的高位保存在内存的低地址中 小端模式是指数据的低位保存在内存的低地址中 而数据的高位保存在内存的高地址中 大小端模式的由来 在计算机系统中 我们是以字节为单位的
  • 【Caffe】官方例程之R-CNN物体检测

    R CNN is a state of the art detector that classifies region proposals by a finetuned Caffe model For the full details of
  • kvm cpu的亲和性绑定配置

    1 CPU的绑定配置 进程的处理器亲和性 process affinity 指将进程绑定到特定的一个或多个cpu上去执行 而不允许将进程调度到其他cpu上 物理cpu 表示真实的cpu个数 逻辑cpu 表示所有拥有一个完整真实cpu功能的单
  • nodejs npm 安装报错 无法安装 behind a proxy

    npm ERR Error connect ECONNREFUSED npm ERR at errnoException net js 878 11 npm ERR at Object afterConnect as oncomplete
  • Where-are-they-looking-PyTorch 代码Error: Bool value of Tensor with more than one value is ambiguous

    在Where are they looking PyTorch中的utils py中有一个判断 if temp lt best best temp 报出 Error Bool value of Tensor with more than o
  • Puppet

    1 Puppet简介 Puppet使用一种描述性语言来定义配置项 配置项中被称为 资源 描述性语言可以声明用户的配置状态 比如声明一个软件包应该被安装或一个服务应该被启动等 Puppet可以运行在一台服务器端 每个客户端通过SSL证书连接到