zoukankan      html  css  js  c++  java
  • playbook handlers 触发器

    1.什么是触发器

    handler用来执行某些条件下的任务,比如当配置文件发生变化的时候,通过notify触发handler去重启服务。
    在saltstack中也有类似的触发器,写法相对Ansible简单,只需要watch,配置文件即可

    2.配置触发器

    [root@m01 ~]# cat handler.yml 
    - hosts: web_group
      tasks:
        - name: Install Http Server
          yum:
            name: httpd
            state: present
    
        - name: config httpd server
          copy:
            src: ./httpd.conf
            dest: /etc/httpd/conf
          notify: Restart Httpd Server
    
        - name: start httpd server
          service:
            name:httpd
            state: started
            enabled: yes
    
      handlers:
        - name: Restart Httpd Server
          systemd:
            name: httpd
            state: restarted

    3.注意事项

    1.无论多少个task通知了相同的handlers,handlers仅会在所有tasks结束后运行一次。
    
    2.Handlers只有在其所在的任务被执行时,才会被运行;如果一个任务中定义了notify调用Handlers,但是由于条件判断等原因,该任务未被执行,那么Handlers同样不会被执行。
    
    3.Handlers只会在每一个play的末尾运行一次;如果想在一个playbook中间运行Handlers,则需要使用meta模块来实现。例如: -meta: flush_handlers。
    
    4.如果一个play在运行到调用Handlers的语句之前失败了,那么这个Handlers将不会被执行。我们可以使用meta模块的--force-handlers选项来强制执行Handlers,即使Handlers所在的play中途运行失败也能执行。
    
    5.不能使用handlers替代tasks
  • 相关阅读:
    C/C++内存对齐
    Fibonacci
    Count 1 in Binary
    Hash Function
    Fast Power
    Update Bits
    Unique Binary Search Trees
    Java知识体系(持续更新)
    如何发现牛股
    OpenResty究竟解决了什么痛点
  • 原文地址:https://www.cnblogs.com/chenlifan/p/13777426.html
Copyright © 2011-2022 走看看