Linux——ansible中handlers

理解

1.按照已有的剧本写法

如果要完成下面这些操作:

1)安装软件包:mysql,httpd,mysql-server,php

2)复制配置文件:web,db,php

3)后续追加配置文件:web额外的配置

如何编排剧本里的task

可能就是写成:

tasks:

  • name: 安装软件包

  • name: copy

  • name: 先启动mysql

  • name: 再启动httpd

  • name: 给nginx或httpd追加配置文件

  • name: 重启服务

......

2.如果task数量非常多

会有一些问题

1)不同类型的任务混在一起,都在tasks里

2)如果task之间顺序编排不合适,最后整个任务没法成功

3)如果剧本,后续往里面额外添加任务,也可能造成整个剧本改task顺序

新加的任务,可能需要额外的服务重启

3.1)后续的任务,可能不是改原剧本,有可能是写新剧本

3.要有一些处理办法,需要

1)让剧本内容,可以大致分类分块写

2)让需要按顺序完成的工作,单独编排

比如,按顺序重启一系列服务

3)额外添加的任务造成的后续操作,比如必须重启服务生效

变成触发动作,不影响tasks部分主体顺序

4.处理办法、技术

ansible剧本中的:处理程序

做法

1)在每个相关task末尾,加一段notify,指定一个要触发程序的名字

tasks的顺序,不影响handlers的顺序

2)在整个剧本最后,和tasks平级

添加handlers部分

3)在handlers里,按顺序写每一个要触发的程序

名称,和每个对应notify里的名称一样

5.于是......稍复杂一点的项目

1)会有多个剧本,剧本之间,有运行的顺序

2)每个剧本里,task之间,也有顺序

3)每个task都可能有notify,对应的handlers里每个程序,也有顺序

4)比如:

4.1)剧本顺序:playbooka.yml

playbookb.yml

4.2)在运行playbooka的时候

如果有多个play,会按顺序执行

4.2.1)先play1

tasks

1 有notify,指向hand1

2

3 有notify,执行hand2

handlers,整体在tasks之后执行

根据编写的顺序执行

先hand2

后hand1

4.2.2)再play2

tasks

handlers

......

4.3)再运行playbookb

......

相关推荐
北山有鸟2 分钟前
解析 Linux 内核驱动中的“换行美学”
linux·运维·服务器
Run_Teenage4 分钟前
Linux:信号保存与捕捉
运维·服务器
龙侠九重天5 分钟前
可视化自动化工具实现
运维·自动化·openclaw
水冗水孚5 分钟前
以Vultr供应商的VPS为例、十分钟自建一个自己的VPN(图文并茂)
运维·服务器
巨大八爪鱼8 分钟前
【方法】Tomcat网站添加用户名密码弹窗认证
运维·服务器·tomcat·jsp·mod_jk
unDl IONA10 分钟前
Linux安装RabbitMQ
linux·运维·rabbitmq
米高梅狮子11 分钟前
Ubuntu和Containerd
linux·运维·ubuntu
片酷15 分钟前
【IsaacLab报错】C++ 标准库版本过低
linux·运维·服务器
小宋00118 分钟前
Ubuntu 22.04 + ROS 2 Humble 下 SLAM 建图 + 导航(Nav2 + slam_toolbox) 的完整教程
linux·ubuntu·机器人
以太浮标23 分钟前
华为eNSP模拟器综合实验之- 华为设备 LLDP(Link Layer Discovery Protocol)解析
运维·服务器·网络·网络协议·华为·信息与通信·信号处理