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

......

相关推荐
jackletter9 分钟前
linux:安装 ubuntu 26.04.1
linux·ubuntu·ubuntu26.04.1
打工仔折腾 AI18 分钟前
飞牛OS上用Docker Compose部署ExerciseDiary运动记录并配置远程访问
运维·人工智能·后端·python·docker·容器·ai agent 实战
2401_8697695918 分钟前
make 进度条
linux
天远数科23 分钟前
零信任架构实战:基于天远运营商三要素简版V即时版查询构建自动化买手实名核验网关
运维·人工智能·架构·自动化
天衍四九-1 小时前
Docker Compose企业实战系列(八·终章):多环境隔离实战,开发/测试/生产一键切换
运维·docker·容器
IT大白鼠1 小时前
搜索系列 · 第 04 篇——部署实操:内网集群落地
运维·elasticsearch·nosql
Elastic 中国社区官方博客2 小时前
使用 Jev 作为 search reranker:基准测试与实现方法
大数据·运维·elasticsearch·全文检索
YYRAN_ZZU2 小时前
如何编一个gcc的交叉工具链
linux·c++
shjita2 小时前
centos中安装docker
linux·docker·centos
红红谈说2 小时前
浏览器自动化环境老是起不来?依赖治理与启动自检的一次复盘
运维·自动化·浏览器自动化·进程残留·环境依赖·启动自检·版本比较