当前位置: 首页 > 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.zskr.cn/news/183366.html

相关文章:

  • 2025 MBA必备!9大AI论文平台深度测评与推荐
  • CH592F开发入门2
  • VS Code调试Node.js核心 打断点 → F5 → 单步执行 + 看变量 - jerry
  • 详细解析 SYN泛洪
  • 如何根据年龄选择适合的近视防控方法?科学分龄,精准防控!
  • Java毕设项目:基于SpringBoot的汽车配件仓储管理系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • 性价比高的循环水处理口碑好的公司
  • 军用车辆检测数据集介绍-2274张图片 军事侦察监控 卫星图像分析 边境安全防护 军事装备管理 战场态势感知 安全威胁评估
  • 理解机器学习里的NFL定理
  • 进程,动态库,COM机制关系概述
  • 降AI率不靠硬改,前五工具更省事
  • 使用illustrator的套索工具提取元素
  • 【毕业设计】基于SpringBoot的汽车配件仓储管理系统设计与实现(源码+文档+远程调试,全bao定制等)
  • CSDN年度技术趋势预测
  • 去掉手写字上面的表格线
  • 读书笔记9-12.18
  • 计算机Java毕设实战-基于SpringBoot的学校图书管理系统设计与实现基于Vue和SpringBoot的图书管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 不用额外花时间!眼调节训练灯,破解儿童近视度数递增难题
  • LangGraph MultiAgent 智能书籍写作系统
  • 调节力的秘密!你知道吗?调节力在日常生活中非常重要
  • 官网-中华人民共和国个人所得税法
  • [Quicker] 蓝奏云API - 源码归档
  • 亚马逊卖家站外引流:猎豹移动与主流Meta广告代理商服务选型参考 - 智造出海
  • 2025辽宁最新汽车装饰品牌top5推荐!沈阳等地区高品质服务厂商权威榜单发布,赋能汽车后市场新生态 - 全局中转站
  • 安装包依赖混乱?Miniconda-Python3.10锁定版本一劳永逸
  • 读书笔记8-12.11
  • 计算机Java毕设实战-基于Spring Boot的四季鲜蔬果园电商平台设计与实现基于SpringBoot的“鲜蔬坊”蔬菜销售平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 【课程设计/毕业设计】基于springboot的水果蔬菜生鲜商城系统基于SpringBoot的“鲜蔬坊”蔬菜销售平台【附源码、数据库、万字文档】
  • 什么叫癌症里面的biomarker、分子病理学
  • 遥控器的秘密你知道吗?