自动化运维之Puppet服务部署

2024-01-08 16:48

本文主要是介绍自动化运维之Puppet服务部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介 绍

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

工作原理

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

具体工作步骤

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

工作过程中的注意事项

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

拓扑图

自动化运维之Puppet服务部署

系统环境

主机名操作系统IP地址软件包
NTP-ServerCentos 7.3 x86_64192.168.96.27ntp-4.2.6p5-28.el7.centos.x86_64
puppetmasterCentos 7.3 x86_64192.168.96.28Puppet-master-3.6.2.noarch、ntpdate-4.2.6p5-28.el7.centos.x86_64
puppetclient1Centos 7.3 x86_64192.168.96.29puppet-3.6.2-3.el7.noarch、ntpdate-4.2.6p5-28.el7.centos.x86_64
puppetclient2Centos 7.3 x86_64192.168.96.30puppet-3.6.2-3.el7.noarch、ntpdate-4.2.6p5-28.el7.centos.x86_64

开始部署

一、NTP-Server服务器

1.关闭防火墙及Selinux
setenforce 0
systemctl stop firewalld
2.修改主机名

vim /etc/hostname

NTP-Server
3.修改hosts文件(极小规模适用,当部署上百台以上服务器时,需要搭建dns服务器来实现服务间通过主机名进行通信)

vim /etc/hosts

192.168.96.28   puppetmaster
192.168.96.29   puppetclient1
192.168.96.30   puppetclient2
4.安装ntp服务
由于puppet需要使用ssl证书,依赖于时间同步,所以这里需要搭建NTP服务器,以保证数据的有效性

yum -y install ntp

5.编辑ntp配置文件

vim /etc/ntp.conf

server 127.127.1.0                  //24行后新增记录
fudge 127.127.1.0 stratum 8
6.启动ntpd服务
systemctl enable ntpd
systemctl start ntpd
7.查看ntp时间同步状态

ntpstat

自动化运维之Puppet服务部署

二、puppetmaster服务器

1.关闭防火墙及Selinux
setenforce 0
systemctl stop firewalld
2.修改主机名

vim /etc/hostname

puppetmaster
3.修改hosts文件

vim /etc/hosts

192.168.96.28   puppetmaster
192.168.96.29   puppetclient1
192.168.96.30   puppetclient2
4.安装ntpdate服务

yum -y install ntpdate

5.同ntp服务器进行同步时间

ntpdate 192.168.96.27

自动化运维之Puppet服务部署

6.安装puppet控制端

yum -y install puppet-server

7.启动服务
systemctl enable puppetmaster.service
systemctl start puppetmaster.service

三、puppetclient1、puppetclient2服务器(配置一致)

1.关闭防火墙及Selinux
setenforce 0
systemctl stop firewalld
2.分别修改主机名

vim /etc/hostname

puppetclient1

vim /etc/hostname

puppetclient2
3.分别修改hosts文件

vim /etc/hosts

192.168.96.28   puppetmaster
192.168.96.29   puppetclient1
192.168.96.30   puppetclient2
4.安装ntpdate服务

yum -y install ntpdate

5.同ntp服务器进行同步时间

ntpdate 192.168.96.27

6.安装puppet控制端

yum -y install puppet

7.编辑puppet配置文件

vim /etc/puppet/puppet.conf

[main]server = puppetmaster......

自动化运维之Puppet服务部署

8.客户端进行注册

puppet agent --server=puppetmaster --no-daemonize --verbose

Info: Creating a new SSL key for puppetclient1.localdomain
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for puppetclient1.localdomain
Info: Certificate Request fingerprint (SHA256): 74:CA:CB:8A:2B:B6:BB:04:39:BF:4A:D3:0A:C0:2D:E4:8D:84:31:B2:D4:F6:26:26:71:5C:66:17:DE:6C:FD:A0
Info: Caching certificate for ca

等待一会出现以上信息后,可以ctrl+c中断退出,需通过puppetmaster服务器查看到申请信息

回到puppetmaster服务器

1.查看申请注册的客户端

[root@puppetmaster ~]# puppet cert --list

  "puppetclient1.localdomain" (SHA256) 74:CA:CB:8A:2B:B6:BB:04:39:BF:4A:D3:0A:C0:2D:E4:8D:84:31:B2:D4:F6:26:26:71:5C:66:17:DE:6C:FD:A0"puppetclient2.localdomain" (SHA256) 07:5E:40:56:7E:19:23:1A:D5:58:E3:D1:CD:B9:0C:5A:E3:7C:EB:60:5A:5E:A6:26:3D:FB:12:B3:99:05:F4:DD
2.对未注册的客户端进行注册

[root@puppetmaster ~]# puppet cert sign --all

Notice: Signed certificate request for puppetclient1.localdomain
Notice: Removing file Puppet::SSL::CertificateRequest puppetclient1.localdomain at '/var/lib/puppet/ssl/ca/requests/puppetclient1.localdomain.pem'
Notice: Signed certificate request for puppetclient2.localdomain
Notice: Removing file Puppet::SSL::CertificateRequest puppetclient2.localdomain at '/var/lib/puppet/ssl/ca/requests/puppetclient2.localdomain.pem'
3.通过目录查看已经注册的客户端

ll /var/lib/puppet/ssl/ca/signed/

-rw-r--r--. 1 puppet puppet 1980 8月   3 21:32 puppetclient1.localdomain.pem
-rw-r--r--. 1 puppet puppet 1980 8月   3 21:32 puppetclient2.localdomain.pem
-rw-r--r--. 1 puppet puppet 2065 8月   3 21:15 puppetmaster.localdomain.pem

至此已经完成了证书的请求与签名,以后便可以使用puppetserver进行统一部署等操作了。

这篇关于自动化运维之Puppet服务部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/584146

相关文章

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的