【Ansible自动化运维】一、初步了解,开启自动化运维之旅
在当今数字化时代,随着企业 IT 基础设施规模的不断扩大,传统的手工运维方式逐渐显得力不从心。自动化运维技术应运而生,其中 Ansible 凭借其简洁易用、功能强大的特点,成为众多运维工程师和开发人员的首选工具。本篇文章将从基础概念到简单的实际操作,让你快速上手自动化运维!
一、Ansible 是什么
Ansible 是一个基于 Python 开发的自动化运维工具,它的设计理念是简单、高效、无代理。与其他一些自动化工具不同,Ansible 不需要在被管理的目标主机上安装额外的代理软件,这大大降低了部署和维护的复杂性。通过 SSH 协议,Ansible 可以直接与目标主机进行通信,执行各种管理任务,如配置管理、软件部署、任务编排等。
Ansible 在自动化运维领域有着广泛的应用场景。例如,在一个拥有大量服务器的云计算环境中,使用 Ansible 可以快速实现所有服务器的统一配置,包括操作系统初始化、软件安装、安全设置等。对于开发团队来说,Ansible 可以帮助他们自动化应用的部署流程,确保开发、测试和生产环境的一致性。
二、安装与环境搭建
2.1 在 Linux 系统上安装 Ansible
大多数 Linux 发行版都可以通过包管理器轻松安装 Ansible。以 CentOS 为例,执行以下命令:
# 更新系统软件包
sudo yum update -y
# 安装Ansible
sudo yum install ansible -y
在 Ubuntu 系统上,安装命令如下:
# 更新系统软件包
sudo apt update
# 安装Ansible
sudo apt install ansible -y
2.2 在 Windows 系统上安装 Ansible(通过 WSL)
如果你的 Windows 系统安装了适用于 Linux 的 Windows 子系统(WSL),也可以在 WSL 环境中安装 Ansible。首先,打开 Windows 应用商店,搜索并安装你喜欢的 Linux 发行版,如 Ubuntu。安装完成后,打开 WSL 终端,按照上述 Linux 系统的安装步骤进行安装。
2.3 配置 Ansible 环境
Ansible 的主要配置文件是ansible.cfg,通常位于/etc/ansible/目录下。虽然 Ansible 在安装后有默认配置,但根据实际需求,我们可能需要对其进行一些修改。例如,修改inventory参数,指定主机清单文件的路径。主机清单文件用于定义 Ansible 要管理的目标主机。默认情况下,Ansible 使用/etc/ansible/hosts作为主机清单文件。
[defaults]
# 指定主机清单文件路径
inventory = /etc/ansible/hosts
2.4 主机清单配置
主机清单文件/etc/ansible/hosts用于列出 Ansible 要管理的所有目标主机。可以按组对主机进行分类,方便批量操作。例如,我们有一组 Web 服务器和一组数据库服务器,在hosts文件中可以这样配置(组名的合理编写更加有助于我们后期对节点的控制和修改):
[web_servers]
web1.example.com
web2.example.com[db_servers]
db1.example.com
db2.example.com
你还可以为每个主机指定连接参数,如 SSH 端口、用户名等。例如:
[web_servers]
web1.example.com ansible_port=22 ansible_user=ubuntu
web2.example.com ansible_port=22 ansible_user=ubuntu[db_servers]
db1.example.com ansible_port=22 ansible_user=centos
db2.example.com ansible_port=22 ansible_user=centos
三、Ansible 核心组件解析
3.1 连接插件
连接插件负责 Ansible 与目标主机之间的通信。默认情况下,Ansible 使用 SSH 连接插件,通过 SSH 协议与目标主机建立连接。这也是 Ansible 无需在目标主机安装代理的原因之一。除了 SSH,Ansible 还支持其他连接方式,如local(用于在本地主机执行任务)、docker(用于在 Docker 容器中执行任务)等。
3.2 主机清单
如前文所述,主机清单是 Ansible 管理目标主机的核心组件。通过主机清单,Ansible 可以知道要对哪些主机执行任务,并且可以按组对主机进行分类管理,大大提高了管理效率。
3.3 模块
模块是 Ansible 执行具体任务的工具。Ansible 内置了大量丰富的模块,涵盖了系统管理、软件安装、网络配置等各个方面。例如,ping模块用于检查目标主机的连通性,yum模块用于在 CentOS 等系统上安装软件包,apt模块用于在 Ubuntu 等系统上安装软件包。
我们可以通过命令行直接调用模块。例如,使用ping模块检查web1.example.com的连通性:
ansible web1.example.com -m ping
上述命令中,ansible是 Ansible 的命令行工具,web1.example.com是目标主机(也可以是IP地址),-m参数指定要使用的模块为ping。
3.4 Playbook
Playbook 是 Ansible 的核心组件之一,它是一个由 YAML 语言编写的文件,用于定义一系列的任务和执行这些任务的顺序。Playbook 可以理解为一个剧本,Ansible 按照剧本中的步骤依次在目标主机上执行任务。通过 Playbook,我们可以实现复杂的自动化流程,如应用的完整部署过程。
四、第一个 Ansible 任务
现在,我们来尝试执行第一个 Ansible 任务,使用ping模块检查目标主机的连通性。假设我们的主机清单文件/etc/ansible/hosts中已经配置了web1.example.com主机。
执行以下命令:
ansible web1.example.com -m ping
执行结果如下:
web1.example.com | SUCCESS => {"changed": false,"ping": "pong"
}
结果说明:
- web1.example.com:目标主机名。
- SUCCESS:表示任务执行成功。
- "changed": false:表示该任务没有对目标主机进行任何修改,只是检查连通性。
- "ping": "pong":这是ping模块返回的结果,证明目标主机可达。
接下来,我们使用shell模块在目标主机上执行一个简单的命令,如查看当前目录下的文件列表。命令如下:
ansible web1.example.com -m shell -a "ls -l"
上述命令中,-a参数用于传递模块的参数,这里传递给shell模块的参数是要在目标主机上执行的命令ls -l。
执行结果类似如下:
web1.example.com | CHANGED | rc=0 >>
total 0
-rw-r--r-- 1 ubuntu ubuntu 0 Apr 8 10:00 file1.txt
-rw-r--r-- 1 ubuntu ubuntu 0 Apr 8 10:01 file2.txt
结果说明:
- CHANGED:表示任务执行后目标主机的状态发生了改变(这里执行了一个命令,虽然只是查看文件列表,但也算状态改变)。
- rc=0:表示命令执行成功,返回码为 0。
- >>后面的内容是命令在目标主机上的执行结果,即当前目录下的文件列表。
通过以上简单的示例,你已经初步体验了 Ansible 的使用流程。从安装配置到执行简单任务,Ansible 展现出了其简洁易用的特点。随着对 Ansible 的深入学习,你将发现它在自动化运维领域的强大功能,能够帮助你轻松应对各种复杂的运维场景。
相关文章:
【Ansible自动化运维】一、初步了解,开启自动化运维之旅
在当今数字化时代,随着企业 IT 基础设施规模的不断扩大,传统的手工运维方式逐渐显得力不从心。自动化运维技术应运而生,其中 Ansible 凭借其简洁易用、功能强大的特点,成为众多运维工程师和开发人员的首选工具。本篇文章将从基础概…...
雪花算法、md5加密
雪花算法生成ID是一个64位长整型(但是也可以通过优化简短位数) 组成部分: 时间戳 机器ID 序列号 用途: 分布式系统唯一ID生成:解决数据库自增ID在分布式环境下的唯一性问题、避免UUID的无序性和性能问题 有序性…...
micro介绍
micro介绍 Micro 的首要特点是易于安装(它只是一个静态的二进制文件,没有任何依赖关系)和易于使用Micro 支持完整的插件系统。插件是用 Lua 编写的,插件管理器可自动为你下载和安装插件。使用简单的 json 格式配置选项࿰…...
电视盒子 刷armbian
参考 中兴电视盒子中兴B860AV3.2-M刷Armbian新手级教程-CSDN博客 1.刷安卓9 带root版本 a. 下载安卓线刷包 链接:https://pan.baidu.com/s/1hz87_ld2lJea0gYjeoHQ8A?pwdd7as 提取码:d7as b.拆机短接 3.安装usbburning工具 使用方法 ,…...
(七)lerobot开源项目so100新版本全流程操作(操作记录)
目录 《项目简介》 一、环境配置 1、创建虚拟环境 2、克隆项目并安装所需包 二、主从臂硬件准备 1、舵机配置 (1)分别查看主从臂的开发板端口号 (2)分别设置主从臂的舵机 2、组装主从臂 3、查看主从臂端口号和相机端…...
智慧景区能源管理解决方案,为旅游“升温”保驾护航
景区能源管理 当下痛点 1 高峰期用电负荷大 节假日和旅游旺季等高峰期用电需求增大,电力供应不足、电网负荷过大; 2 设备维护困难 景区内电力设备多且散,包括发电机组、变电站、配电设备等,维护和管理困难,特别是…...
LCR 056. 两数之和 IV - 输入二叉搜索树
文章目录 题意思路代码 题意 题目链接 思路 代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), …...
AI搜索+法律咨询:在「事实重构」与「程序正义」的博弈场
已经写了股票和医疗相关的内容,今天聊一下AI搜索和法律结合的应用场景。AI搜索不替用户做选择,却让我们握住了法律武器的说明书。 一、AI重构事实:技术理想与法律现实的碰撞 1、案例切入:AI能否还原车祸责任比…...
多模态大模型重塑自动驾驶:技术融合与实践路径全解析
目录 1、 引言:AI与自动驾驶的革命性融合 2、五大领先多模态模型解析 2.1 Qwen2.5-Omni:全模态集大成者 2.2. LLaVA:视觉语言理解专家 2.3. Qwen2-VL:长视频理解能手 2.4. X-InstructBLIP:跨模态理解框架 2.5. …...
海阳科技IPO:业务独立性、业绩稳定性、财务规范性存致命缺陷
三角形是最稳定的结构,它既是完美的相互制衡,又是有力的彼此支撑。 ——佚名 引 言 IPO审议指标、要求、规定众多,有无一个直接简单的公式?该公式可以直接将造假等“低劣”IPO项目排除在外? 在《奕泽财经》看来…...
PyTorch 与 Python 装饰器及迭代器的比较与应用
在深度学习和 Stable Diffusion(SD)训练过程中,PyTorch 不仅依赖于 Python 的基础特性,而且通过扩展和封装这些特性,提供了更高效、便捷的训练和推理方式。本文将从装饰器和迭代器两个方面详细解释 Python 中的原生实现…...
大数据(5)(基础概念)Spark从入门到实战:核心原理与大数据处理实战案例
目录 一、背景介绍1. 为什么需要Spark?2. Spark的诞生: 二、Spark核心原理1. 四大核心特性2. 核心架构3. 执行流程 三、Spark实战案例案例1:单词计数(WordCount)案例2:实时流处理&…...
Ubuntu小练习
文章目录 一、远程连接1、通过putty连接2、查看putty运行状态3、通过Puuty远程登录Ubuntu4、添加新用户查看是否添加成功 5、用新用户登录远程Ubuntu6、使用VNC远程登录树莓派 二、虚拟机上talk聊天三、Opencv1、简单安装版(适合新手安装)2、打开VScode特…...
运行Spark会出现恶问题
1. 依赖冲突问题:Spark依赖众多组件,如Scala、Hadoop等。不同版本的依赖之间可能存在兼容性问题,导致Spark无法正常运行。比如,特定版本的Spark可能要求与之匹配的Scala版本,若使用了不兼容的Scala版本,会在…...
uniapp大文件分包
1. 在pages.json中配置 "subPackages":[{"root":pagesUser,"pages":[{"path":mine/xxx,"style":xxx },{"path":mine/xxx,"style":xxx}]},{"root":pagesIndex,"pages":[{"p…...
Git 源码打包、迁移、恢复和备份
介绍 Git 项目打包方式,适用于源码交付、迁移、备份等场景。 一 Git 仓库的两种类型 在实际项目开发与交付中,常接触 的 两种 Git 仓库: 仓库类型是否包含源码适用场景普通仓库是本地开发、运行、构建裸仓库否代码托管、只读交付、备份 普…...
Linux 内核网络协议栈中的 struct packet_type:以 ip_packet_type 为例
在 Linux 内核的网络协议栈中,struct packet_type 是一个核心数据结构,用于注册特定协议类型的数据包处理逻辑。它定义了如何处理特定协议的数据包,并通过协议类型匹配机制实现协议分发。本文将通过分析 ip_packet_type 的定义和作用,深入探讨其在网络协议栈中的重要性。 …...
LeetCodeHot100-第三章:数学
面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 目录 🎈1、双指针:9. 回文数 🎈2、逻辑题 :66. 加一 🎈3、逻辑题:172. 阶乘后的零 🎈4、…...
JavaScript 错误处理:理解和应对异常
在编程中,错误是不可避免的,特别是在进行复杂的逻辑操作、与外部系统交互或处理用户输入时。错误处理是软件开发中非常重要的一部分,它可以帮助开发者提高应用的稳定性和可用性。本文将深入探讨JavaScript中的错误处理机制,如何利…...
LangGraph异步化sqlite checkpoint
安装 pip install langgraph-checkpoint-sqlite异步checkpiont初始化: from langgraph.checkpoint.sqlite.aio import AsyncSqliteSaver conn aiosqlite.connect(":memory:", check_same_threadFalse) memory AsyncSqliteSaver(conn)如果使用异步流式…...
StarRocks 助力首汽约车精细化运营
作者:任智红,首汽约车大数据负责人 更多交流,联系我们:https://wx.focussend.com/weComLink/mobileQrCodeLink/334%201%202/ffbe5 导读: 本文整理自首汽约车大数据负责人任智红在 StarRocks 年度峰会上的演讲…...
Versatile-OCR-Program:可以从复杂的教育材料(如试卷)中提取结构化数据的开源多模态OCR工具
Versatile-OCR-Program 此 OCR 系统专门设计用于以针对机器学习 (ML) 训练优化的格式从复杂的教育材料(如试卷)中提取结构化数据。它支持多语言文本、数学公式、表格、图表和图表,非常适合创建高质量的训练数据集。 主…...
时序数据库 TDengine Cloud 私有连接实战指南:4步实现数据安全传输与成本优化
小T导读:在物联网和工业互联网场景下,企业对高并发、低延迟的数据处理需求愈发迫切。本文将带你深入了解 TDengineCloud 如何通过全托管服务与私有连接,帮助企业实现更安全、更高效、更低成本的数据采集与传输,从架构解析到实际配…...
vue项目本地调试使用https
由于测试环境远程接口,是采用https协议,为了能正常携带cookie访问接口,需要把本地项目也采用https协议访问。前提是后端的cookie设置在二级域名下,且允许固定其他子域名跨域访问(需要在后端设置) 项目框架…...
【学习笔记】文件上传漏洞--二次渲染、.htaccess、变异免杀
目录 第十二关 远程包含地址转换 第十三关 突破上传删除 条件竞争 第十四关 二次渲染 第十五关 第十六关 第十七关 .htaccess 第十八关 后门免杀 第十九关 日志包含 第十二关 远程包含地址转换 延续第十一关,加一个文件头,上传成功,…...
探秘 MQTT 协议:物联网的 “隐形桥梁”
在当今数字化时代,物联网技术正以前所未有的速度改变着我们的生活。从智能家居到工业自动化,从远程医疗到智能交通,无数设备相互连接、交换信息,构建起一个庞大而复杂的智能世界。而在这背后,有一个关键的 “隐形桥梁”…...
[ctfshow web入门] web24
前置知识 isset:判断这个变量是否声明且不为NULL,否则返回False mt_srand:设置随机数种子,如果不手动设置,那么系统会自动进行一次随机种子的设置 mt_rand:生成一个随机数,这个随机数与种子有个…...
Unity 实现伤害跳字
核心组件: Dotween TextMeshPro 过程轨迹如下图: 代码如下: using System.Collections; using System.Collections.Generic; using DG.Tweening; using TMPro; using UnityEngine; using UnityEngine.Pool;public class …...
在SQLark 中快速生成测试数据
在软件开发与数据库管理过程中,高质量的测试数据是保障系统稳定性和性能优化的关键。然而,手动构造仿真数据不仅耗时耗力,还难以覆盖多样化的测试场景。现在,可以使用 SQLark 的数据生成功能,通过 8大类47子类的数据规…...
Postman接口测试详解
一、为何使用postman postman是一款简单高效的接口测试工具,能够很方便发送接口请求,易于保存接口请求脚本,postman提供接口响应数据比对功能,可以设置预期结果作断言,还能把测试用例放在一个集合中批量执行ÿ…...
[ctfshow web入门] web30
信息收集 题目将flag system php不区分大小写地过滤了 解题 前置知识 print_r:php中用于打印数组 scandir:php中用于获取指点目录下的所以文件目录名 getcwd:获取当前目录 目录获取 这里提供两种方法 print_r(scandir(getcwd())); pri…...
ElasticSearch迁移数据
一、查询索引 1、查询所有索引 curl --user elastic:123456 -XGET "http://localhost:19200/_cat/indices?v&sindex" 2、查询索引配置 以索引名称hello为例 curl --user elastic:123456 -XGET "http://localhost:19200/hello/_settings?pretty" 3…...
ES:账号、索引、ILM
目录 笔记1:账号权限查看、查看账号、创建账号等查看所有用户查看特定用户验证权限修改用户权限删除用户 笔记2:索引状态和内容的查看等查看所有索引查看特定索引内容查看索引映射查看索引设置查看索引统计信息查看ILM策略 笔记1:账号权限查看…...
Spring MVC 逻辑视图(JSP、Thymeleaf、FreeMarker)与非逻辑视图(JSON、Excel、PDF、XML)详解及示例
Spring MVC 逻辑视图与非逻辑视图详解及示例 一、逻辑视图与非逻辑视图的定义 类型定义逻辑视图通过视图解析器(ViewResolver)将逻辑名称(如 success)映射到具体视图实现。非逻辑视图直接返回具体视图对象(如 JsonVie…...
开发体育赛事直播系统:实现聊天交友的私聊功能技术实现全方案解析
基于“东莞梦幻网络科技”体育赛事直播系统,展示前后端技术(PHP ThinkPHP Vue.js Android Java iOS OC)实现的“用户与用户之间私聊”完整方案,包括功能描述、界面效果、技术实现、数据结构、接口设计及关键代码示例。 一、私…...
UTF-8和GBK编码的区别和详细解释
各位看官,大家早安午安晚安呀~~~ 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连,小编尽全力做到更好 欢迎您分享给更多人哦 今天我们来学习:一个小的知识点—UTF-8和GBK编码的解释 1.关于bite位和进制的关系 1 个比特(bit&am…...
java导入excel更新设备经纬度度数或者度分秒
文章目录 一、背景介绍二、页面效果三、代码0.pom.xml1.ImportDevice.vue2.ImportDeviceError.vue3.system.js4.DeviceManageControl5.DeviceManageUserControl6.Repeater7.FileUtils8.ResponseModel9.EnumLongitudeLatitude10.词条 四、注意点本人其他相关文章链接 一、背景介…...
使用python访问mindie部署的vl多模态模型
说明 今天使用mindie1.0部署了qwen2_7b_vl模型,测试过程出现一些问题,这里总结下。 问题1:transformers版本太低 报错信息: [ERROR] [model_deploy_config.cpp:159] Failed to get vocab size from tokenizer wrapper with ex…...
github发布个人中英文简历网站CaoYongshengcys.github.io
在GitHub上创建个人主页(也称为GitHub Pages)是一个展示个人项目、技能和经历的好方法。以下是详细步骤: 1. 创建GitHub账号 • 如果你还没有GitHub账号,先访问GitHub官网注册一个账号。 • 选择一个专业的用户名,因…...
动态规划算法深度解析:0-1背包问题(含完整流程)
简介: 0-1背包问题是经典的组合优化问题:给定一组物品(每个物品有重量和价值),在背包容量限制下选择物品装入背包,要求总价值最大化且每个物品不可重复选取。 动态规划核心思想 通过构建二维状态表dp[i]…...
QML面试笔记--UI设计篇04交互控件
1. QML中常用交互控件 1.1. Button1.2. Slider1.3. ProgressBar1.4. TextField1.5. TextArea1.6. ComboBox1.7. CheckBox1.8. RadioButton1.9. Menu1.10. Dialog 1. QML中常用交互控件 在万物互联的智能时代,QML凭借其声明式语法和跨平台能力,…...
【数学】线性代数(Python)
参考:https://aibydoing.com/notebooks/appendix01-01-linear-algebra-with-python 目录 矩阵的定义矩阵的运算矩阵的属性矩阵的分解矩阵的本质遗留问题 矩阵的定义 通过数组的维度来区分向量(1 维数组)、矩阵(2 维数组࿰…...
ragflow开启https访问:添加证书后,使用浏览器还是有警告,如何解决?
如果在 Windows 系统中安装了 PEM 证书(使用方法一通过证书管理器 MMC 导入),但浏览器仍然提示安全警告,可能有以下几个原因及解决方法: 1. 证书未正确安装到受信任的存储位置 问题:如果证书被导入到错误的存储位置(如“个人”而非“受信任的根证书颁发机构”),浏览器…...
vue.config.js配置代理(输出代理前后的地址)
devServer: {host: 0.0.0.0,port: port,open: true,before(app) {app.use((req, res, next) > {// console.log(原始地址:, req.originalUrl) // 原始地址,如 /api/some-api/xxxxxnext()})},proxy: {[process.env.VUE_APP_BASE_API]: {target: http://192.168.50…...
【八股文】http1.0和1.1的区别
http1.0默认使用短连接,每次请求都需要建立TCP连接(三次握手),响应完成后立即关闭连接,导致资源浪费和延迟增加。 支持通过Connection:Keep-alive 手动开启长连接,但需客户端和服务端显式协商 …...
【Prompt实战】邮件分类专家
本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权&am…...
K8S核心技术点
Pod,Service和Deployment的关系 Pod:Kubernetes 中最小的部署单元,用于运行容器化应用。 Service:提供服务发现和负载均衡,为 Pod 提供稳定的网络端点,ClusterIP,NodePort,LoadBala…...
Python手写“随机森林”解决鸢尾花数据集分类问题
Python使用“随机森林”解决鸢尾花数据集分类问题 任务描述解题1. 导入必要的库2. 数据采样函数 sample3. 设置随机种子和超参数4. 定义随机森林类 random_forest5. 加载数据集并划分训练集和测试集6. 创建并训练随机森林模型7. 进行预测并计算准确率 代码 任务描述 您的任务是…...
Python 字典和集合(泛映射类型)
本章内容的大纲如下: 常见的字典方法 如何处理查找不到的键 标准库中 dict 类型的变种set 和 frozenset 类型 散列表的工作原理 散列表带来的潜在影响(什么样的数据类型可作为键、不可预知的 顺序,等等) 泛映射类型 collections.…...
CrystalDiskInfo电脑硬盘监控工具 v9.6.0中文绿色便携版
前言 CrystalDiskInfo是一个不用花钱的硬盘小帮手软件,它可以帮你看看你的电脑硬盘工作得怎么样,健不健康。这个软件能显示硬盘的温度高不高、还有多少地方没用、传输东西快不快等等好多信息。用了它,你就能很容易地知道硬盘现在是什么情况&…...