初步利用Ansible实现批量服务器自动化管理
1.Ansible介绍
Ansible是一款开源的自动化运维工具, 在2012年由Michael DeHaan创建, 现在由Red Hat维护。Ansible是基于Python开发的,采用YAML语言编写自动化脚本playbook, 可以在Linux、Unix等系统上运行, 通过SSH协议管理节点, 无需在被管理节点安装agent。Ansible以其简单、高效、无agent成为广泛使用的自动化工具, 可以应用于配置管理、应用部署、任务调度等。
Ansible能够自动管理远程系统和控制它们的期望状态, 一个基础Ansible环境主要包含三大组件:
-
控制节点 - 安装有Ansible的系统。我们可以在控制节点上运行Ansible命令,如
ansible或ansible-inventory。 -
管理节点 - Ansible控制的远程系统或主机。
-
清单 - 在逻辑上组织起来的受控节点列表。在控制节点上创建清单,用来描述Ansible管理的主机部署。
架构如下:

2.Ansible安装和配置
在我实验的环境中, 我分配了四台虚拟机,IP地址分别为:192.168.201.202 -205, 其中192.168.201.202是主控端, 需要在该机器上安装Ansible; 另外从203-205的三台机器为受控端, 接收从202发来的指令。这里我安装的Linux系统为ubuntu 22.04.3 LTS版本,直接输入以下命令安装:
# apt install ansible
安装完成后输入命令: ansible --version查看版本号,如图:

接下来需要配置管理hosts, 在目标目录新建一个名为hosts的清单文件:/etc/ansible/hosts, 注意:如果/etc/下没有ansible目录,需要手动新建一个。
编辑hosts文件,输入以下格式内容,如图:

在标签名称下的三个IP地址是我的另外三台虚拟机,它们将接收ansible的统一管理。保存退出。
在命令行输入命令:
# ansible all --list-hosts
该命令将验证清单中的主机, 返回信息如下:

在控制节点192.168.201.202中, 我们需要生成一个SSH的密钥对,输入以下命令:
# ssh-keygen -t rsa
中间提示一律按回车键即可, 结束后将在~/.ssh目录下生成id_rsa和id_rsa.pub两个密钥文件,我们要将公钥id_rsa.pub文件发送到三台虚拟机上(192.168.201.203-205), 分别输入以下命令:
# ssh-copy-id root@192.168.201.203
# ssh-copy-id root@192.168.201.204
# ssh-copy-id root@192.168.201.205
执行结果如下:

接下来我们输入以下命令进行免密码登录验证:

此时, 我们可以输入以下命令进行批量主机管理测试:
# ansible all -m ping
返回结果如下:

可以看到, 三台受管理的主机已经全部Ping通。
3.创建清单
通过清单文件, Ansible可以通过单个命令管理大量主机, 且可以通过减少需要指定的命令行选项数量来帮助我们更有效地使用Ansible,例如:清单通常包含SSH用户, 因此在运行Ansible命令时可以不需要包含-u参数来指定用户名。
在任意目录创建一个名为inventory.yaml的文件, 这里我把清单文件建在目录: /home/inventory.yaml, 内容如下:

下面输入命令进行验证:
# ansible-inventory -i inventory.yaml --list
注意一下 -i 参数后面的yaml文件路径, 我这里是cd到yaml文件的当前目录了, 所以直接跟的文件名, 在实际应用过程中需要根据情况进行全路径和相对路径的选择。
该命令执行返回结果如下:

接下来对清单中的受管节点执行Ping操作, 执行命令:
# ansible virtualmachines -m ping -i inventory.yaml
返回结果如下:

4.创建剧本(playbook)
剧本是Ansible用来部署和配置受管节点的自动化蓝图,使用YAML格式编写。
下面先解释一下剧本的基本元素:
-
Play - 按顺序排列的任务列表,与inventory中受管节点对应映射。
-
任务(task) - 定义Ansible要执行的一个或多个模块操作的列表。
-
模块:Ansible在受管节点上运行的代码单元或二进制文件。Ansible的模块按集合组织,每个模块有一个完全限定的集合名称(Fully Qualified Collection Name, FQCN)。
在上面的操作中,我们使用了ansible命令来ping清单中的主机。现在创建一个playbook,它不仅可以ping主机,还可以打印“Hello world”消息。
继续在/home目录下创建一个名为playbook.yaml的文件, 输入以下内容:

在该配置文件中, 我们定义了一个剧本的名称、定义了hosts名称和具体的任务(tasks), 其中任务项这里包含两个: Ping主机和打印消息。
接下来我们看看剧本效果如何, 输入以下命令:
# ansible-playbook -i inventory.yaml playbook.yaml
返回结果如下:

从结果来看,一切都OK, 成功执行了我们的剧本并对三个目标主机进行了Ping操作。
相关文章:
初步利用Ansible实现批量服务器自动化管理
1.Ansible介绍 Ansible是一款开源的自动化运维工具, 在2012年由Michael DeHaan创建, 现在由Red Hat维护。Ansible是基于Python开发的,采用YAML语言编写自动化脚本playbook, 可以在Linux、Unix等系统上运行, 通过SSH协议管理节点, 无需在被管理节点安装agent。Ansible以其简单、…...
网络安全和隐私保护技术
一、定义 网络安全和隐私保护技术是指在互联网和其他网络环境中,通过技术手段保护网络系统、网络数据和用户隐私免于受到恶意攻击、非法访问、窃取或滥用。网络安全和隐私保护技术是保护网络安全和用户隐私的重要手段,是保障互联网和其他网络环境正常运…...
保险行业采购管理痛点及解决方案(数智化采购系统)
随着社会发展,个人和企业有了更多的金融保险需求。对于金融保险公司而言,需要在采购合规的基础上,基于数智化能力,让经营变得更加高效和智能。 1、围绕重点领域,业务加速布局。 保险行业结合自身业务经营重点&#x…...
光学仿真 | 仿真推动以人类视觉感知为本的汽车显示设计
如果产品设计无法使终端用户产生共鸣,就不会存在卓越的工程设计。您可以设计一种结构坚固的方向盘,但如果它被放在错误的位置,就无法实现其用于转向的主要目的。 同样,在围绕人类视觉进行设计时,显示器其实无需具备尽…...
判断两个对象是否不相等operator.ne()
【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 判断两个对象是否不相等 operator.ne() 选择题 下列代码执行输出的结果是? import operator print("【执行】operator.ne(8,8)") print(operator.ne(8,8)) print("【执行】…...
2023年云计算发展趋势:生活的智能未来
目录 引言1 智能家居的崭新时代2 无人驾驶的崭新时代3 虚拟现实的扩展与改进4 人工智能的综合应用5 云计算的可持续性结语 引言 时光荏苒,科技的飞速发展已经成为当今社会的标志之一。在这个数字化时代,云计算已经成为推动技术革新和生活方式改变的关键…...
Spring Boot项目中通过 Jasypt 对属性文件中的账号密码进行加密
下面是在Spring Boot项目中对属性文件中的账号密码进行加密的完整步骤,以MySQL的用户名为root,密码为123321为例: 步骤1:引入Jasypt依赖 在项目的pom.xml文件中,添加Jasypt依赖: <dependency><…...
2.3 矩阵消元
一、消元矩阵 消元矩阵执行消元步骤用到的矩阵。从第 i i i 个方程减去 l i j l_{ij} lij 乘第 j j j 个方程(将 x j x_j xj 从第 i i i 行中消去)。我们需要很多个简单的矩阵 E i j E_{ij} Eij,每一个对应一个主对角线下方要消…...
Docker 从构建开始导出一个镜像
docker build docker build命令用于从Dockerfile创建一个镜像。它的基本格式如下: docker build [OPTIONS] PATH | URL | -这里的PATH是Dockerfile所在的路径,URL是一个Git仓库地址,-表示从标准输入读取Dockerfile。 docker build命令的一…...
案例研究|腾讯音乐娱乐集团与JumpServer共探安全运维审计解决方案
近年来,得益于人民消费水平的提升以及版权意识的加强,用户付费意愿和在线用户数量持续增长,中国在线音乐市场呈现出稳定增长的发展态势。随着腾讯音乐于2018年12月上市,进一步推动了中国在线音乐市场的发展。 腾讯音乐娱乐集团&a…...
如何卸载在linux下通过rpm安装的mysql
目录 1.先关闭MySQL服务并查看运行状态 2.使用 rpm 管道命令的方式查看已安装的mysql 3. 使用rpm -ev 命令移除安装 4. 删除MySQL数据库内容 1.先关闭MySQL服务并查看运行状态 如果之前安装过并已经启动,则需要卸载前请先关闭MySQL服务 systemctl stop mysqld…...
docker复制镜像文件
一、复制镜像 #1. 查找本机已有的镜像docker images |grep xxxx#2. 将镜像复制出来指向到xxxx.tar的文件中 docker save 343cca04e31d > xxxx.tareg: 二、加载镜像 直接将拷贝好的镜像包直接加载即可 docker load < myimage.tar...
自动驾驶学习笔记(六)——Apollo安装
#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《2023星火培训【感知专项营】》免费课程—>传送门 文章目录 前言 Apollo安装 硬件配置 安装Ubuntu…...
四阶龙格库塔与元胞自动机
龙格库塔法参考: 【精选】四阶龙格库塔算法及matlab代码_四阶龙格库塔法matlab_漫道长歌行的博客-CSDN博客 龙格库塔算法 Runge Kutta Method及其Matlab代码_龙格库塔法matlab_Lzh_023016的博客-CSDN博客 元胞自动机参考: 元胞自动机:森林…...
Mac安装opencvJava踩坑
SpringBoot导入opencv依赖 先将jar包添加到libraries中在resources目录下创建lib文件夹并复制jar包到这里添加如下依赖,并刷新maven <dependency><groupId>org.opencv</groupId><artifactId>opencv</artifactId><version>4.8.0…...
YOLOv8-Pose推理详解及部署实现
目录 前言一、YOLOv8-Pose推理(Python)1. YOLOv8-Pose预测2. YOLOv8-Pose预处理3. YOLOv8-Pose后处理4. YOLOv8-Pose推理 二、YOLOv8-Pose推理(C)1. ONNX导出2. YOLOv8-Pose预处理3. YOLOv8-Pose后处理4. YOLOv8-Pose推理 三、YOLOv8-Pose部署1. 源码下载2. 环境配置2.1 配置CM…...
django+drf+vue 简单系统搭建 (1) - django创建项目
本系列文章为了记录自己第一个系统生成过程,主要使用django,drf,vue。本人非专业人士,此文只为记录学习,若有部分描述不够准确的地方,烦请指正。 建立这个系统的原因是因为,在生活中,很多觉得可以一两行代码…...
各种NoSQL数据库
NoSQL数据库是一类非关系型数据库,它们在数据存储和检索方面与传统的关系型数据库不同。不同类型的NoSQL数据库适用于不同的使用场景,因为它们具有各自的特点。以下是一些主要类型的NoSQL数据库及其特性和使用场景: 键值存储数据库 代表性数据…...
基于8086家具门安全控制系统设计
**单片机设计介绍,基于8086家具门安全控制系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 # 8086家具门安全控制系统设计介绍 8086家具门安全控制系统是一种用于保护家具和保证室内安全的系统。该系统基于808…...
k8s:kubectl 详解
目录 1 kubectl 2 基本信息查看 2.1 查看 master 节点状态 2.2 查看命名空间 2.3 查看default命名空间的所有资源 2.4 创建命名空间app 2.5 删除命名空间app 2.6 在命名空间kube-public 创建副本控制器(deployment)来启动Pod(nginx-wl…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
