当前位置: 首页 > news >正文

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

自动化运维工具-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.jsqmd.com/news/167676/

相关文章:

  • 论文降AI别瞎改,这五佳工具效率高
  • 2025 MBA必备!9大AI论文平台深度测评与推荐
  • 【课程设计/毕业设计】基于SpringBoot的汽车配件仓储管理配件档案 - 出入库管理 - 库存监控系统设计与实现【附源码、数据库、万字文档】
  • CH592F开发入门2
  • 儿童近视度数增长过快?眼调节训练灯破解“度数逐年递增”困扰!
  • 五佳降AI工具合集,速降到合格线内
  • 如何根据年龄选择适合的近视防控方法?科学分龄,精准防控!
  • VS Code调试Node.js核心 打断点 → F5 → 单步执行 + 看变量 - jerry
  • 详细解析 SYN泛洪
  • Java毕设项目:基于SpringBoot的汽车配件仓储管理系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • 项目风险预警:智能分析系统
  • 性价比高的循环水处理口碑好的公司
  • 军用车辆检测数据集介绍-2274张图片 军事侦察监控 卫星图像分析 边境安全防护 军事装备管理 战场态势感知 安全威胁评估
  • 理解机器学习里的NFL定理
  • 五佳降AI工具分享,论文党必收藏
  • 进程,动态库,COM机制关系概述
  • Zed编辑器安装与使用Agent Servers(腾讯CodeBuddy、阿里百炼Qwen Code、DeepSeek Cli)
  • RAG学习笔记 检索优化
  • 【毕业设计】基于SpringBoot的汽车配件仓储管理系统设计与实现(源码+文档+远程调试,全bao定制等)
  • 降AI率不靠硬改,前五工具更省事
  • 使用illustrator的套索工具提取元素
  • Kingbase-KEMCC配置集群监控纳管ES以及外部备份使用对象存储
  • Java毕设选题推荐:基于SpringBoot+Vue的汽车配件仓储管理系统管理系统设计基于SpringBoot的汽车配件仓储管理系统设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 【基于LLaMA-Factory通义千问】大模型微调全流程技术解析
  • UDP-N-叠氮乙酰葡萄糖胺二钠盐:糖蛋白化学生物学研究的关键工具
  • AI+SQL生成ER图
  • 从Java全栈开发到云原生实践:一次真实面试的深度记录
  • P5607 [Ynoi2013] 无力回天 NOI2017 题解
  • P5607 [Ynoi2013] 无力回天 NOI2017 题解
  • 【计算机毕业设计案例】基于SpringBoot的学校图书管理系统设计与实现图书管理、借阅记录、审核借阅、图书续借、审核续借、确认归还(程序+文档+讲解+定制)