Linux中级の自动化运维工具Ansible变量

news/2026/1/16 23:40:49/文章来源:https://www.cnblogs.com/suancaibaozii/p/19403211

自动化运维工具-Ansible变量

变量概述

变量提供了便捷的方式来管理Ansible playbook的每一个项目中的
动态值,比如 nginx-1.6.3 这个软件包的版本,在其他地方或许会
反复使用,那么如果将此值设置为变量,然后在其他的playbook中
调用,会方便许多。如此一来还方便维护,减少维护的成本。定义变量的方式:
1.通过命令行进行变量定义
2.在play文件中进行变量定义
3.通过Inventory主机信息文件中进行变量定义变量的优先级
如果在定义变量时,变量冲突了在上述的三个地方分别设置了:
1.命令行中: age = 11
2.play文件中: age = 12
3.Inventory中: age = 13
那么,最终age的结果一定为11变量的读取优先级为: 命令行 > playbook文件 > Inventory文件

变量定义

1.1 playbook中vars定义变量

【1.编写ansible脚本】
image
【2.语法检测】
image
【3.运行ansible脚本在web01服务器安装lrzsz和wget】
image
【4.在web01查看运行结果】
image
【5.修改ansbile脚本删除web01服务器安装的lrzsz和wget】
image
【6.再次检测语法并运行】
image
【7.在web01服务器查看结果】
image

1.2 playbook中vars定义变量

【1.编写ansible脚本在web01安装lrzsz和wget】
image
【2.运行脚本】
image
【3.web01查看结果】
image

1.3 playbook中vars定义变量(path路径使用vars时不需要加"")

【1.定义在web01创建文件woshi_dageda.txt】
image
【2.运行ansible脚本】
image
【3.在web01查看是否创建woshi_dageda.txt文件】
image

2.使用vars_files定义变量

【1.编写ansible脚本vars_files变量删除wget、lrzsz、tree】
image
【2.运行ansible脚本】
image
【3.在web01查看结果】
image
【4.修改脚本为安装tree wget lrzsz,再次运行并查看结果】
image
image
【5.web01查看结果】
image

3.使用Ansible内置变量

【1.使用ansible web01 -m setup 命令查看关于web01的Ansible内置变量】
image
【2.使用grep -C 10 过滤出关于ipv4的IP地址10.0.0.7前后世行内容】
【3.编写Ansible脚本时引用内置变量,创建以 主机名_IP地址 格式的文件【通用其他主机】】
image
【4.检测语法并运行】
image
【5.在web01查看结果】
image

4.在Inventory中定义变量(不推荐)

【1.查看Inventory】
image
【2.在Inventory中定义变量】
image
【3.编写Ansible脚本并检测语法】
image
【4.运行脚本】
image
【5.在web01查看结果】
image

5.(官方推荐定义变量)

之前的几种变量定义都不是很好用,比较好用的是在Ansible项目目录下创建两个变量目录:
1.host_vars
2.group_vars
切记,目录名字一定要一致,不能做任何修改。

【1.创建变量目录】
image
【2.使用组变量,在group_vars创建和组同名的文件名】
image
【3.引用group_vars中的web组的变量】
image
【4.检测YAML语法并运行】
image
【5.查看结果】
image
【6.如果想要让所有的组都能够使用其中的变量,则在group_vars中创建名为all的文件】
image
【7.使用all中的变量编写ansible脚本】
image
【8.检测语法并运行】
image
【9.查看结果】
image

6.命令行定义变量(临时)

【1.编写ansible脚本】
image
【2.运行的时候定义】
image
【3.在web01查看结果】
image

7.变量定义优先级测试

【1.在playbook中定义变量t1为1.txt】
image
【2.Inventory主机清单中定义变量t1为2.txt】
image
【3.组group_vars定义t1为3.txt】
image
【4.主机host_vars定义t1为4.txt】
image
【5.命令行定义t1为5.txt运行】
image
【6.运行结果(1)】5.txt ----> 命令行定义
image
【7.不进行命令行定义再次运行】1.txt ----> playbook定义
image
image
【8.删除playbook定义再次运行】4.txt ----> host_vars定义
image
image
【9.删除host_vars定义再次运行】3.txt ----> group_vars定义
image
【10.删除group_vars定义再次运行】2.txt ----> 主机清单定义
image
【总结】命令行定义 > playbook定义 > hosts_vars定义 > group_vars定义 > 主机清单定义

变量注册

为什么要学变量注册?
当 ansible 的模块在运行之后,其实都会返回一些 result 结
果,就像是执行脚本,我们有的时候需要脚本给我们一些 return 
返回值,我们才知道,上一步是否可以执行成功,但是...默认情
况下,ansible 和 result 并不会显示出来,所以我们可以把这
些返回值'存储到变量中',这样我们就能通过调用对应的变量名,
从而获取到这些 result,这种将模块的返回值,写入到变量中的方
法被成为变量注册。以下给出案例:

【1.编写ansible脚本,在web01上执行ls -l命令,在本地返回结果】
image
【2.语法检测】
image
【3.运行ansible脚本】
image
【4.使用Ansible内置变量,使得结果只显示列表】
image
【5.再次运行查看结果】:只显示web01的列表结果
image

层级定义变量

【1.层级定义变量文件】
image
【2.在ansible脚本中调用安装lrzsz和wget】
image
【3.检测语法并运行】
image
【4.在web01查看安装结果】
image
【5.官方推荐写法】
image
【6.检测语法并运行】
image
【7.web01查看结果】
image

facts缓存

Ansible facts是在被管理主机上通过Ansible自动采集发现的变
量。facts包含每台特定的主机信息。比如:被控端的主机名、IP
地址、系统版本、CPU数量、内存状态、磁盘状态等等。facts使用场景
1.通过 facts 缓存检查CPU,来生成对应的nginx配置文件
2.通过 facts 缓存检查主机名,生成不同的zabbix配置文件
3.通过 facts 缓存检索物理机的内存大小来生成不同的mysql配置文件综上所述的Ansible facts类似于 saltstack 中的 grains 对于做自动化的小伙伴是非常有用的。# 调用Ansible中的setup模块可以查看相应主机的facts缓存

【1.使用facts缓存获取webs组内所有服务器的hostname和ipv4的IP地址】
image
【2.检测语法并运行得到结果】
image
【3.添加关闭facts信息采集】
image
【4.再次语法检测并运行】:msg无法采集信息
image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1098138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 MBA必备!9大AI论文平台深度测评与推荐

2025 MBA必备!9大AI论文平台深度测评与推荐 2025年MBA论文写作工具测评:选对平台,效率翻倍 随着人工智能技术的不断进步,AI论文平台在学术领域的应用愈发广泛。对于MBA学生而言,撰写高质量论文不仅是学业要求&#xff…

查重没问题却卡AI?前五降AI工具更稳

又到毕业季,毕业论文除了查重外,真的别忘记查ai率。 今天就告诉大家高重复率以及高ai率应该如何快速降低!实测全网产品,无广!! 如果这篇整理能帮你少走点弯路,那就值了。 1、嘎嘎降AI 官网&…

儿童近视度数增长过快?眼调节训练灯破解“度数逐年递增”困扰!

在儿童青少年近视防控领域,“每天户外活动2小时”“减少连续近距离用眼时间”等建议虽具备理论科学性,但在学业压力日益加重的背景下,实际落地难度极大。从日常作息来看,儿童每日需完成作业、参与各类辅导课程,日均户外…

CH592F开发入门2

CH592F开发入门2沁恒微 CH592F 开发板入门 2:MRS2 编译器常规使用注意:本文基于 MRS2 开发环境编写,其操作界面与旧版 MRS 存在差异,请留意区分。一、工程基础操作 1. 打开工程 (双击工程目录下的 WVPROJ 格式文件…

【课程设计/毕业设计】基于SpringBoot的汽车配件仓储管理配件档案 - 出入库管理 - 库存监控系统设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

五佳降AI工具合集,速降到合格线内

又到毕业季,毕业论文除了查重外,真的别忘记查ai率。 今天就告诉大家高重复率以及高ai率应该如何快速降低!实测全网产品,无广!! 如果这篇整理能帮你少走点弯路,那就值了。 1、嘎嘎降AI 官网&…

VS Code调试Node.js核心 打断点 → F5 → 单步执行 + 看变量 - jerry

下面我用最常见、最实用的方式,带你一步步在 VS Code 调试 Node.js 代码(适合前端 / Node 开发日常用)。一、最简单方式(推荐新手):直接调试当前 JS 文件 1️⃣ 准备一个 Node 文件 // index.js function add(a,…

如何根据年龄选择适合的近视防控方法?科学分龄,精准防控!

近视防控的核心逻辑在于“适配性”——不同年龄段人群的眼部生理结构、用眼场景存在显著差异,防控方案需精准匹配其特点,才能实现高效干预。忽视年龄差异的通用防控手段,往往难以达到理想效果。接下来,我们将按年龄段拆解核心防控…

详细解析 SYN泛洪

SYN 泛洪及相关知识解析当面试官问这个问题的时候,不要被 “SYN 泛洪” 这个名词给震慑到,其实面试官就是想知道计算机网络中关于 DDoS 攻击和 TCP 建立连接三次握手的相关知识的考核。不要担心,接下来将详细介绍一下 SYN 泛洪及其相关知识。…

项目风险预警:智能分析系统

项目风险预警:智能分析系统 关键词:项目风险预警、智能分析系统、风险评估、机器学习、数据分析 摘要:本文围绕项目风险预警智能分析系统展开,旨在为项目管理提供全面、高效且精准的风险预警解决方案。首先介绍了系统开发的背景、目的、预期读者和文档结构等内容,阐述了相…

Java毕设项目:基于SpringBoot的汽车配件仓储管理系统设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

性价比高的循环水处理口碑好的公司

性价比高的循环水处理:口碑好的公司之选在工业生产和日常生活中,循环水处理至关重要,它不仅关系到设备的正常运行和使用寿命,还与环境保护和资源节约息息相关。选择一家性价比高且口碑好的循环水处理公司,是众多企业和…

军用车辆检测数据集介绍-2274张图片 军事侦察监控 卫星图像分析 边境安全防护 军事装备管理 战场态势感知 安全威胁评估

📦点击查看-已发布目标检测数据集合集(持续更新) 数据集名称图像数量应用方向博客链接🔌 电网巡检检测数据集1600 张电力设备目标检测点击查看🔥 火焰 / 烟雾 / 人检测数据集10000张安防监控,多目标检测点…

09. 图像的阈值处理

一、什么是阈值处理阈值处理是指剔除图像内的像素值高于一定值或者低于一定值的像素点。按照上述阈值处理方式,可以将一幅灰度图像处理为一幅二至图像,很好地将前景和背景区分开。我们可以在终端中使用 pip 安装 Ope…

福育未来人口监测与预测系统 个人项目汇报 102302138林楚涵

福育未来人口监测与预测系统 作者:林楚涵 所属团队:来财小组 角色:后端开发负责人 完成时间:2025年12月 一、项目概况 项目名称:福育未来 小组名称:来财 项目背景:全球正经历深刻的人口结构转型,核心特征为生育…

论文AI率从高到低,这五佳工具更快

又到毕业季,毕业论文除了查重外,真的别忘记查ai率。 今天就告诉大家高重复率以及高ai率应该如何快速降低!实测全网产品,无广!! 如果这篇整理能帮你少走点弯路,那就值了。 1、嘎嘎降AI 官网&…

理解机器学习里的NFL定理

NFL定理Qwen3-max摘要:如果问题不确定,任何算法都没有优劣之分。换而言之,算法的优越性不是绝对的,而是相对于特定问题类而言的。没有“通用最优”算法,必须(对应现实问题)引入“归纳偏置”&…

五佳降AI工具分享,论文党必收藏

又到毕业季,毕业论文除了查重外,真的别忘记查ai率。 今天就告诉大家高重复率以及高ai率应该如何快速降低!实测全网产品,无广!! 如果这篇整理能帮你少走点弯路,那就值了。 1、嘎嘎降AI 官网&…

Zed编辑器安装与使用Agent Servers(腾讯CodeBuddy、阿里百炼Qwen Code、DeepSeek Cli)

Zed编辑器安装与使用Agent Servers 在win11操作系统 腾讯CodeBuddy # 选择你喜欢的包管理器执行以下命令 npm install -g tencent-ai/codebuddy-code# 安装完成后,运行以下命令验证是否安装成功 codebuddy --version#2.26.0阿里百炼Qwen Code # 选择你喜欢的包管理器…

进程,动态库,COM机制关系概述

在一个应用程序运行实例中,主程序,以及所调用的模块,库都是在同一个进程中吗?它们的核心工作机制和原理是什么? 在一个应用程序的运行实例中,主程序、它调用的所有模块(如DLL、SO)和…