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

......

相关推荐
tokepson4 小时前
Mysql下载部署方法备份(Windows/Linux)
linux·服务器·windows·mysql
C_心欲无痕5 小时前
Dockerfile:构建 Docker 镜像
运维·docker·容器
zz_nj6 小时前
工作的环境
linux·运维·服务器
极客先躯6 小时前
如何自动提取Git指定时间段的修改文件?Win/Linux双平台解决方案
linux·git·elasticsearch
C_心欲无痕6 小时前
nginx - 实现域名跳转的几种方式
运维·前端·nginx
suijishengchengde7 小时前
****LINUX时间同步配置*****
linux·运维
幻云20107 小时前
AI自动化编排:从入门到精通(基于Dify构建AI智能系统)
运维·人工智能·自动化
qiuqyue7 小时前
基于虹软Linux Pro SDK的多路RTSP流并发接入、解码与帧级处理实践
linux·运维·网络
切糕师学AI7 小时前
Linux 操作系统简介
linux
南烟斋..8 小时前
GDB调试核心指南
linux·服务器