查看“RHCE8.0讲义:实施处理程序”的源代码
←
RHCE8.0讲义:实施处理程序
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==ANSIBLE处理程序== ===背景=== Ansible模块设计为具有幂等性。这表示,在正确编写的playbook中,playbook及其任务可以运行 多次而不会改变受管主机,除非需要进行更改使受管主机进入所需的状态。 但有时候,在任务确实更改系统时,可能需要运行进一步的任务。例如,更改服务配置文件时可能 要求重新加载该服务以便使更改的配置生效。 ===什么是处理程序=== 处理程序 是响应由其他任务触发的通知的任务 仅当任务在受管主机上更改了某些内容时,任务才通知其处理程序。 每个处理程序具有全局唯一的名称,在playbook中任务块的末尾触发。 ===何时执行处理程序=== *如果没有任务通过名称通知处理程序,处理程序就不会运行。 *如果一个或多个任务通知处理程序,处理程序 就会在play中的所有其他任务完成后运行一次。因为处理程序就是任务,所以管理员可以在处理程 序中使用他们将用于任何其他任务的模块。通常而言,处理程序被用于重新引导主机和重新启动服务。 *处理程序可视为非活动任务,只有在使用notify语句显式调用时才会被触发。 例如:在下列代码片段 中,只有配置文件更新并且通知了该任务时,restart apache处理程序才会重新启动Apache服 务器: <nowiki>tasks: - name: copy demo.example.conf configuration template(1) template: src: /var/lib/templates/demo.example.conf,template dest: /etc/httpd/conf.d/demo.example.conf notify:(2) - restart apache(3) handlers:(4) - name: restart apache。(5) service:(6) name: httpd state: restarted</nowiki> (1)通知处理程序的任务。 (2)notify语句指出该任务需要触发一个处理程序。 (3)要运行的处理程序的名称。 (4)handlers关键字表示处理程序任务列表的幵头。 (5)被任务调用的处理程序的名称。 (6)用于该处理程序的模块。 在上例中,restart apache处理程序只有在template任务通知已发生更改时才会触发。 一个 任务可以在其notify部分中调用多个处理程序。 Ansible将notify语句视为数组,并且迭代处理 程序名称: <nowiki>tasks: - name: copy demo.example.conf configuration template template: src: /var/lib/templates/demo.example.conf,template dest: /etc/httpd/conf.d/demo.example.conf notify: - restart mysql - restart apache handlers: - name: restart mysql service: name: mariadb state: restarted - name: restart apache service: name: httpd state: restarted</nowiki> ===描述使用处理程序的好处=== 如Ansible文档中所述,使用处理程序时需要牢记几个重要事项: *处理程序始终按照play的handlers部分指定的顺序运行。它们不按在任务中由notify语句列 出的顺序运行,或按任务通知它们的顺序运行。 *处理程序通常在相关play中的所有其他任务完成后运行。playbook的tasks部分中某一任务调 用的处理程序,将等到tasks下的所有任务都已处理后才会运行。(这有一些小的例外。) *处理程序名称存在于各play命名空间中。如果两个处理程序被错误地给予相同的名称,则仅会运 行一个。 *即使有多个任务通知处理程序,该处理程序依然仅运行一次。如果没有任务通知处理程序,它就 不会运行。 *如果包含notify语句的任务没有报告changed结果(例如,软件包已安装并且任务报告 ok),则处理程序不会获得通知。处理程序将被跳过,直到有其他任务通知它。只有相关任务报 告了 changed状态,Ansible才会通知处理程序。 ====重要==== 处理程序用于在任务对受管壑机进行更改时执行额外操作。它们不应用作正常任务的 替代。 ==参考文献== Lji Playbook 简介 — Ansible 文档 https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.himl
返回至
RHCE8.0讲义:实施处理程序
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息