一、Ansible配置处理程序

1、处理程序

1️⃣:处理程序是响应由其他任务触发的通知的任务

2️⃣:仅当任务在受管主机上更改了某些内容时,任务才通知其处理程序

3️⃣:每个处理程序具有全局唯一的名称,在playbook中任务块的末尾触发

4️⃣:如果没有任务通过名称通知处理程序,处理程序就不会运行

5️⃣:如果一个或多个任务通知处理程序,处理程序就会在play中的所有其他任务完成后运行一次

6️⃣:因为处理程序就是任务,所以可以在处理程序中使用他们将用于任何其他任务的模块;通常而言,处理程序被用于重新引导主机和重启服务

2、实施处理程序

1️⃣:处理程序可视为非活动任务,只有在使用notify语句显式调用时才会被触发

  • 演示实例:

     //查看playbook
    [root@localhost project]# cat playbook.yaml
    ---
    - hosts: all
    tasks:
    - name: install httpd
    yum:
    name: httpd
    state: present
    notify: //notify关键字指定需要触发的处理程序
    - start httpd //要运行处理程序的名称 handlers: //handlers关键字表示处理程序任务列表的开头(与tasks同级别)
    - name: start httpd //被触发的处理程序(任务)的名称;注意:必须与notify指定的处理程序的名称相同
    service:
    name: httpd
    state: started //执行play
    [root@localhost project]# ansible-playbook playbook.yaml PLAY [all] **************************************************************************************************************************************************************** TASK [Gathering Facts] ****************************************************************************************************************************************************
    ok: [client.example.com] TASK [install httpd] ******************************************************************************************************************************************************
    changed: [client.example.com] RUNNING HANDLER [start httpd] *********************************************************************************************************************************************
    changed: [client.example.com] PLAY RECAP ****************************************************************************************************************************************************************
    client.example.com : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

2️⃣:一个任务可以在其notify部分中调用多个处理程序。Ansiblenotify语句视为数组,并且迭代处理程序名称

  • 演示实例:

     //查看playbook
    [root@localhost project]# cat playbook.yaml
    ---
    - hosts: all
    tasks:
    - name: install httpd
    yum:
    name: httpd
    state: present
    notify:
    - start httpd
    - install mariadb-server handlers:
    - name: start httpd
    service:
    name: httpd
    state: started - name: install mariadb-server
    yum:
    name: mariadb-server
    state: installed //执行play
    [root@localhost project]# ansible-playbook playbook.yaml PLAY [all] **************************************************************************************************************************************************************** TASK [Gathering Facts] ****************************************************************************************************************************************************
    ok: [client.example.com] TASK [install httpd] ******************************************************************************************************************************************************
    changed: [client.example.com] RUNNING HANDLER [start httpd] *********************************************************************************************************************************************
    changed: [client.example.com] RUNNING HANDLER [install mariadb-server] **********************************************************************************************************************************
    changed: [client.example.com] PLAY RECAP ****************************************************************************************************************************************************************
    client.example.com : ok=4 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

二、处理程序的好处

1、处理程序重要事项

1️⃣:处理程序始终按照playhandlers部分指定的顺序运行,它们不按在任务中由notify语句列出的顺序运行,或按任务通知它们的顺序运行

2️⃣:处理程序通常在相关play中的所有其他任务完成后运行,playbooktasks部分中某一任务调用的处理程序,将等到tasks下的所有任务都已处理后才会运行

3️⃣:处理程序名称存在于各play命名空间中,如果两个处理程序被错误地给予相同的名称,则仅会运行一个

4️⃣:即使有多个任务通知处理程序,该处理程序依然仅运行一次,如果没有任务通知处理程序,它就不会运行

5️⃣:如果包含notify语句的任务没有报告changed结果(例如,软件包已安装并且任务报告ok),则处理程序不会获得通知,处理程序将被跳过,直到有其他任务通知它。只有相关任务报告了changed状态,Ansible才会通知处理程序

2、处理程序用于在任务对受管主机进行更改时执行额外操作,它们不应用作正常任务的替代

Ansible_实施处理程序的更多相关文章

  1. Ansible_编写循环和条件任务

    一.利用循环迭代任务 1️⃣:Ansible支持使用loop关键字对一组项目迭代任务,可以配置循环以利用列表中的各个项目.列表中各个文件的内容.生成的数字序列或更为复杂的结构来重复任务 1.简单循环 ...

  2. 英特尔 Android* 开发者指南上的对等应用

    简单介绍 当没有 Wi-Fi 訪问点或互联网訪问时,Android* 应用可能须要对等连接在两台或多台 Android* 设备之间建立连接. 比方,文件共享应用和多人游戏. 该功能可使用 NFC.蓝牙 ...

  3. asp.net Ajax Post 请求一般处理程序

    其实很早就开通博客园了,一直想写些有价值的东西,供自己以后查阅的同时,也可以帮助别人遇到此类问题时能有一个好的解决方法.但是由于各种原因, 就没有实施我的想法.今天突然很想写下一篇文章,不知道我的第一 ...

  4. Asp.net web服务处理程序(第六篇)

    四.Web服务处理程序 对于Web服务来说,标准的方式是使用SOAP协议,在SOAP中,请求和回应的数据通过XML格式进行描述.在Asp.net 4.0下,对于Web服务来说,还可以选择支持Ajax访 ...

  5. await和async在一般处理程序中的使用

    写在前面 有个小项目,前端使用的html页面,那服务端的业务处理就采用最简单的一般处理程序了,之前一直在用,觉得一直用一种方式,确实挺蛋疼的,之前也有了解过async和await的内容.就想着自己折腾 ...

  6. Asp.net处理程序(第六篇)

    四.Web服务处理程序 对于Web服务来说,标准的方式是使用SOAP协议,在SOAP中,请求和回应的数据通过XML格式进行描述.在Asp.net 4.0下,对于Web服务来说,还可以选择支持Ajax访 ...

  7. 谈谈dpdk应用层包处理程序的多进程和多线程模型选择时的若干考虑

    看到知乎上有个关于linux多进程.多线程的讨论:http://www.zhihu.com/question/19903801/answer/14842584 自己项目里也对这个问题有过很多探讨和测试 ...

  8. 强大的数据包处理程序scapy

    实验目的 利用scapy工具构造arp.icmp数据包,发送到目标主机,根据应答包推测出目标系统存活情况 实验原理 Scapy是Python写的一个功能强大的交互式数据包处理程序,可用来发送.嗅探.解 ...

  9. 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目

    最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...

随机推荐

  1. 实际使用Elasticdump工具对Elasticsearch集群进行数据备份和数据还原

    文/朱季谦 目录 一.Elasticdump工具介绍 二.Elasticdump工具安装 三.Elasticdump工具使用 最近在开发当中做了一些涉及到Elasticsearch映射结构及数据导出导 ...

  2. Recoil 中默认值的正确处理

    继续使用 Recoil 默认值及数据级联的使用 的地域可用区级联的例子. 地域变更后可用区随之联动,两个下拉框皆默认选中第一个可选项. 从 URL 获取默认值 考虑这种情况,当 URL 中带了 que ...

  3. 【算法学习笔记】组合数与 Lucas 定理

    卢卡斯定理是一个与组合数有关的数论定理,在算法竞赛中用于求组合数对某质数的模. 第一部分是博主的个人理解,第二部分为 Pecco 学长的介绍 第一部分 一般情况下,我们计算大组合数取模问题是用递推公式 ...

  4. 北航OO第一单元作业总结(Retake)

    前言:当我写这篇博客的时候,我的心情是复杂的,因为这实际上是我第二次写这篇博客--我今年重修的这门课.我对去年的成绩心有不甘--在激烈的竞争下,我虽然尽可能完成了所有作业(仅一次作业未通过弱测),但爆 ...

  5. 《RT-Thread Studio开发STM32》第一章~第一节《配置STM32H743XIH6点亮LED灯》

    安装RT-Thread Studio后添加相关芯片库文件,打开软件 打开SDK管理界面,安装相关的库文件,本次采用STM32H743XIH6芯片,野火开发板. 新建工程并设置相关的参数 先编译下下载到 ...

  6. kafka-简介-02

    1.kafka怎么实现高可用? 2.kafka伸缩性,分区的作用? 3.名词术语 消息:Record.Kafka 是消息引擎嘛,这里的消息就是指 Kafka 处理的主要对象. 主题:Topic.主题是 ...

  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(六)——一步一步教你如何撸Dapr之Actor服务

    我个人认为Actor应该是Dapr里比较重头的部分也是Dapr一直在讲的所谓"stateful applications"真正具体的一个实现(个人认为),上一章讲到有状态服务可能很 ...

  8. Molar mass UVA - 1586

    ​ An organic compound is any member of a large class of chemical compounds whose molecules contain c ...

  9. Day09_43_Set集合_HashSet_02(HashCode方法 与 equals方法 )

    HashSet - 向Hash表中添加元素的过程? 1. 先调用将要被存储的值key的HashCode方法得出Hash值,如果该Hash值在现有Hash表中不存在,那么直接加入元素. 2. 如果该Ha ...

  10. vue项目打包本地后通过nginx解决跨域

    前言 有时候我们打包好vue项目让后端人员部署项目时可能会有小插曲,为了不麻烦后端人员和避免尴尬,最好的办法就是在本地自己先测一下,而在本地运行打包后的项目会遇到接口跨域的问题.我平时经常用的方法就是 ...