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

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

     ……

相关文章:

  • Vue elementui表格
  • 模板类与继承
  • 故障:笔记本电脑更新系统后开机黑屏只剩鼠标
  • C语言基础讲解一
  • 刷代码随想录有感(110):动态规划——完全背包问题
  • Linux远程访问及控制
  • SkyWalking 极简入门
  • 小程序中用font-spider压缩字体后,字体没效果(解决办法)
  • 异地如何共享视频文件?
  • 指定GPU跑模型
  • 易优cms远程调试
  • CDN缓存命中率较低可能的原因
  • 无人机校企合作
  • Python学习笔记15:进阶篇(四)文件的读写。
  • vue 中实现用户上传文件夹的功能
  • DOM的那些事
  • Python进阶细节
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 学习ES6 变量的解构赋值
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 大数据全解:定义、价值及挑战
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • ${factoryList }后面有空格不影响
  • $L^p$ 调和函数恒为零
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C语言)逆序输出字符串
  • (Git) gitignore基础使用
  • (含笔试题)深度解析数据在内存中的存储
  • (数据结构)顺序表的定义
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)详解PHP处理密码的几种方式
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net 7和core版 SignalR
  • .NET Core中如何集成RabbitMQ
  • .NET WPF 抖动动画
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .net开发引用程序集提示没有强名称的解决办法
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /etc/fstab和/etc/mtab的区别
  • ;号自动换行
  • @基于大模型的旅游路线推荐方案
  • [.net]官方水晶报表的使用以演示下载
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [383] 赎金信 js
  • [acm算法学习] 后缀数组SA
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法