首页 > 其他分享 >ansible-playbook-handlers和notify 触发器

ansible-playbook-handlers和notify 触发器

时间:2023-09-26 10:55:05浏览次数:36  
标签:httpd 00 usr 19 sbin ansible DFOREGROUND notify playbook

Handlers

Handlers是Ansible Playbook中的一种特殊任务,无法直接运行。它需要被其他任务通知后才会运行。它的主要作用是处理Playbook中各个任务之间的通知和协调。当某个任务完成后,如果满足特定条件,就会触发相应的Handler任务。

Notify

Notify是Ansible Playbook中的一个触发器,它用于通知Handlers任务。当某个任务完成后,如果满足特定条件,就会触发相应的Notify任务。Notify任务本身并不执行任何操作,它的作用是通知其他任务(如Handlers任务)执行相应的操作。

handlers和notify 触发器举例

ansible-playbook安装了httpd,当修改了 httpd 的配置文件后我们需要重启httpd服务才会使得配置文件生效;ansible-playbook可以通过触发器来实现一旦发现配置文件有修改就重启服务的操作.

ansible-playbook

[root@localhost handlersAndNotify]# cat handlersandnotify.yml 
---
 - hosts: localhostservers
   remote_user: root
   tasks:
     - name: install httpd package
       yum: name=httpd state=present
     - name: copy config file
       copy: src=/etc/httpd/httpd.conf dest=/etc/httpd/conf/ 
       notify: restart service
     - name: service start
       service: name=httpd state=started enabled=yes

   handlers:
     - name: restart service
       service: name=httpd state=restarted

把配置文件httpd.conf复制到上个目录,修改复制后的配置文件(可以在注释里进行修改,达到文件更新的作用)

[root@localhost handlersAndNotify]# ansible-playbook handlersandnotify.yml 

PLAY [localhostservers] ********************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************
ok: [127.0.0.1]

TASK [install httpd package] ********************************************************************************************************
ok: [127.0.0.1]

TASK [copy config file] ********************************************************************************************************
changed: [127.0.0.1]

TASK [service start] ********************************************************************************************************
ok: [127.0.0.1]

RUNNING HANDLER [restart service] ********************************************************************************************************
changed: [127.0.0.1]

PLAY RECAP ********************************************************************************************************
127.0.0.1                  : ok=5    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

首次执行的时候可能会报找不到文件,需要执行两次。查看服务进行,进程号改变,说明服务已被重启。

[root@localhost conf]# ps -ef|grep httpd
root      33049      1  0 19:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    33054  33049  0 19:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    33060  33049  0 19:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    33061  33049  0 19:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    33062  33049  0 19:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    33063  33049  0 19:18 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root      88351   2888  0 19:33 pts/0    00:00:00 grep --color=auto httpd
[root@localhost conf]# ps -ef|grep httpd
root      91772      1  0 19:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    91773  91772  0 19:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    91774  91772  0 19:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    91775  91772  0 19:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    91776  91772  0 19:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    91777  91772  0 19:34 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root      92402   2888  0 19:34 pts/0    00:00:00 grep --color=auto httpd

 

标签:httpd,00,usr,19,sbin,ansible,DFOREGROUND,notify,playbook
From: https://www.cnblogs.com/joyware/p/17729631.html

相关文章

  • 【FATE联邦学习】AnsibleFATE离线部署出现AnsibleUndefinedVariable: ‘ansible_ssh_h
    本人已经提issuehttps://github.com/FederatedAI/FATE/issues/5059.根据群友钟紫英的方法,修改project_path/enviroments/prod/hosts中的[fate]组:render后原文:#前面省略ansible_become_method=sudoansible_become_user=rootansible_become_pass=[deploy_check][fate]1......
  • AnsibleFATE部署过程
    前言基本上按照官方文档就行了,先做beforedeploy,再做threesideguide.md。以下是可能出现的问题这个AnsibleUndefinedVariable:‘ansible_ssh_host‘isundefined.是肯定会遇到的,参考我这篇安全性限制ansible提示warning:nowopenfilesis1024,andneedtoturnupt......
  • ansible教程:with_fileglob基本用法示例
    with_fileglob是Ansible的循环迭代器,用于在任务中对文件进行模式匹配并迭代处理。它可以用于从本地文件系统中选择匹配特定模式的文件,并将它们作为迭代项传递给任务。以下是with_fileglob的基本用法示例:-name:Processfiles<module_name>:src:"{{item}}"with_......
  • ansible教程:使用win_shell和win_copy从 HTTP 文件服务器下载文件并将其复制到目标位置
    with_fileglob参数无法直接指定HTTP文件服务器上的文件路径。它是用于在本地文件系统中进行文件的模式匹配,并将匹配的文件作为迭代项来执行任务。如果你需要从HTTP文件服务器上下载文件并将其复制到目标位置,你可以使用适当的工具或库来实现这个任务。下面是一个示例,使用curl......
  • Ansible教程:chocolatey插件介绍及安装(Windows软件包管理器)
    介绍chocolatey.chocolatey是一个AnsibleGalaxy集合,提供了用于管理Windows上Chocolatey软件包管理器的模块和插件。Chocolatey是一个类似于Linux上的包管理器的工具,它允许在Windows系统上轻松安装、升级和卸载软件包。chocolatey.chocolatey集合包含以下模块和插件:chocolatey.choc......
  • SMB: 使用 Ansible 自动化配置 samba 客户端服务端
    涉及到的文件[student@workstationfilestorage-automation]$tree..├──ansible.cfg├──inventory├──smb_client.yml├──smb_server.yml├──smb_vars.yml└──templates└──smb.conf.j2[student@workstationfilestorage-automation]$涉及到......
  • Ansible专栏文章之十六:成就感源于创造,自己动手写Ansible模块
    回到:Ansible系列文章各位读者,请您:由于Ansible使用Jinja2模板,它的模板语法{%raw%}{{}}{%endraw%}和{%raw%}{%%}{%endraw%}和博客系统的模板使用的符号一样,在渲染时会产生冲突,尽管我尽我努力地花了大量时间做了调整,但无法保证已经全部都调整。因此,如果各位阅读时发......
  • Ansible专栏文章之十五:Ansible管理Windows主机
    回到:Ansible系列文章各位读者,请您:由于Ansible使用Jinja2模板,它的模板语法{%raw%}{{}}{%endraw%}和{%raw%}{%%}{%endraw%}和博客系统的模板使用的符号一样,在渲染时会产生冲突,尽管我尽我努力地花了大量时间做了调整,但无法保证已经全部都调整。因此,如果各位阅读时发......
  • Ansible专栏文章之十二:更安全,使用Vault进行加密
    回到:Ansible系列文章各位读者,请您:由于Ansible使用Jinja2模板,它的模板语法{%raw%}{{}}{%endraw%}和{%raw%}{%%}{%endraw%}和博客系统的模板使用的符号一样,在渲染时会产生冲突,尽管我尽我努力地花了大量时间做了调整,但无法保证已经全部都调整。因此,如果各位阅读时发......
  • Ansible专栏文章之十四:Ansible管理docker和openstack
    回到:Ansible系列文章各位读者,请您:由于Ansible使用Jinja2模板,它的模板语法{%raw%}{{}}{%endraw%}和{%raw%}{%%}{%endraw%}和博客系统的模板使用的符号一样,在渲染时会产生冲突,尽管我尽我努力地花了大量时间做了调整,但无法保证已经全部都调整。因此,如果各位阅读时发......