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

Linux—— ansible循环

1.如果有大量的变量要定义,如果多个变量本身类型相同或类似

再比如,同一个剧本,给主机同时安装多个软件包

按照已有的用法,每个软件包都对应不同变量,还会涉及到改剧本

2.现在可以用清单,以及playbook里的hosts指定主机、主机组

但是,能不能再细分?以及进一步的判断?

解决方法

1.循环

比如上面,要同时指定多个service的name

让name调用一个特别的“变量”,叫做item

这个item,指向,同一个task内,和service同级别的loop

在loop里,写具体的成员

进一步简化,loop里的成员,也可以是其他变量

比如在额外的变量文件里写

在loop里调用mail_services

于是,剧本,依旧变成一个通用的东西,不必指定更详细的值

在不同环境和不同项目下,只需要对应编辑、使用不同的变量文件

上面,是管理员,自己定义的变量、各种数据,放到loop里用

根据之前的学习,客户机本身已有的信息(facts)

                以及剧本执行的返回信息

                都可以收集起来,重新放进变量,二次使用

那这些信息,能不能放loop里使用?

大的步骤

1.把信息拿到

  debug

2.把拿到的信息,变成变量

  register

比如上面

写了一个任务(task)

在这个任务里,用了一个item,里面的循环由紧跟着的loop定义

这个任务的输出内容,被接下来的register拿到

注册成一个物件(变量),起一个名字叫echo_results

接下来,第二个任务里

用debug把刚才echo_results变量里的内容,输出到屏幕

限制条件

脚本里可以写匹配、限制条件,SQL语句也可以写条件

ansible剧本也可以写条件

解决最上面说的,第二个问题……

问题的来源

每个task,可以指定主机或主机组

如果task不指定,按照剧本整体的主机、主机组

如果,最终要匹配的主机或主机组,在运行前,并不确定?

剧本本身,并没有再指定其他可用的条件

最后,要让剧本的动作,更明确做在每组、每个不同的主机

于是

在每个task里,单独指定当前任务的限制条件

加一个when模块

判断方式、条件、计算

1.数学符号

==,>=,<=……

2.“类似语句”

比如,变量是否被声明,xxx is defined

3.布尔值

yes/no,0/1……类似这种

4.指定的内容(变量的值)是否包含在条件列表里

比如上面

客户系统的事实里,有一个ansible_distribution值

代表的是系统的族系

管理员自己指定了一个兼容列表,叫supported_distros

指定了,兼容RedHat和Fedora

剧本在执行的时候,查看客户机的系统族系这个属性(在facts里)

如果族系里的值,在兼容列表里,那就符合条件

然后就会执行这个task

于是

脑洞大开,是不是就可以干这么一种事

用系统里不同的段的facts的值,做判断一句……

继续来研究

既然可以搞定,每一个每一种条件

是否有办法,同时匹配多个、多种条件?

也是符合咱基本认知:

  与

  或

再继续

与、或,能不能同时使用/套着使用?

具体,看书的例子……

http://www.lryc.cn/news/378130.html

相关文章:

  • RabbitMQ 开发指南
  • ElasticSearch学习笔记(二)文档操作、RestHighLevelClient的使用
  • python离线安装第三方库、及其依赖库(单个安装,非批量移植)
  • 昨天发的 npm 包,却因为 registry 同步问题无法安装使用
  • Redis 数据恢复及持久化策略分析
  • vscode 快捷键侧边栏
  • FreeRTOS:1、任务通知vTaskNotifyGiveFromISR保证实时性
  • 监督学习:从数据中学习预测模型的艺术与科学
  • 深入理解Java虚拟机(JVM)中的垃圾回收器
  • 视频集市新增支持多格式流媒体拉流预览
  • 定时器-前端使用定时器3s轮询状态接口,2min为接口超时
  • python实践笔记(二): 类和对象
  • 指定GPU跑模型
  • Windows桌面运维----第五天
  • bash和dash的区别(及示例)
  • Java基础入门day65
  • 解密制度的规定和解密工作的具体流程
  • 实际中常用的网络相关命令
  • 机器学习补充
  • 机器学习——RNN、LSTM
  • Java项目学习(员工管理)
  • 视觉SLAM14精讲——相机与图像3.3
  • 【路径规划】基于粒子群结合遗传算法实现机器人栅格地图路径规划
  • 内容安全复习 9 - 身份认证系统攻击与防御
  • Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建
  • 大数据开发语言Scala入门 ,如何入门?
  • 【人机交互 复习】第1章 人机交互概述
  • HCIP-HarmonyOS Device Developer 课程大纲
  • 蓝桥杯 经典算法题 查找两个总和为特定值的索引
  • Java | Leetcode Java题解之第169题多数元素