暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ansible系列第四篇(handlers用法)

运维开发圈 2018-12-21
742

ansible- handlers用法

  • 清单配置:

    cat /etc/ansible/hosts 
    [test]
    18.18.23.102 ansible_become_pass='123.cn'

  • 配置文件配置:

    cat /etc/ansible/ansible.cfg 
    [defaults]
    inventory = /etc/ansible/hosts

  • handlers介绍和用法

    handlers是另一种'任务列表',handlers中的任务会被tasks中的任务进行调用。当tasks中的任务真正执行后,handlers中被调用的任务才会执行。如果tasks中的任务并没有做出真正的操作,handlers中的任务即使被调用,也并不会被执行。handlers可以有多个任务,并被tasks中不同的任务notify.

    handlers和tasks是对齐的。通过notify关键字通知handlers中的任务。

    所有task执行完毕后,才会执行各个handler.

    如果在执行完某些task以后立即执行对应的handler,需要使用meta模块。

    meta任务是一种特殊任务,meta任务可影响ansible的内部运行方式。meta:flush_handlers表示立即执行之前的task所对应handler.

  cat meta.yaml 
  ---
  - hosts: test
    remote_user: yuan
    tasks:
    - name: task1
      file
        path: /php7/osspull
        state: touch
      notify: handler1
    - name: task2
      file
        path: /php7/ossupload
        state: touch
      notify: handler2

    - meta: flush_handlers

    - name: task3
      file
        path: /python/smtposs
        state: touch
      notify: handler3

    handlers:
    - name: handler1
      file
        path: /php7/video.txt
        state: touch
    - name: handler2
      file
        path: /php7/video2.txt
        state: touch
    - name: handler3
      file
        path: /python/smtpemail.txt
        state: touch

在每个task执行后立马执行对应handlers,可以在每个任务后都添加一个meta任务,并将其值设置为flush_handlers.

如果一次notify多个handler,需要借助关键字: listen.

可将listen理解为组名。 一次notify多个handler时,把多个handler分为"一组",使用相同组名即可。

  cat listen.yaml 
  ---
  - hosts: test
    remote_user: yuan
    tasks:
    - name: taskone
      file:
        path: /php7/wordpress.txt
        state: touch
      notify: handler group 1

    handlers:
    - name: handler1
      listen: handler group 1
      file:
        path: /php7/wp1
        state: touch
    - name: handler2
      listen: handler group 1
      file:
        path: /php7/wp2
        state: touch


文章转载自运维开发圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论