Ansible學習03-handlers

這次介紹下handlers的用法

當我們要修改某些配置文件的時候,有的需要配置重載或者重新啓動服務,比如修改nginx的 listen 80;修改爲listen 8080;需要重載nginx。

  • hosts: docker
    remote_user: root
    vars:
    epic: true
    tasks:
    • name: 修改nginx.conf指定字段
      lineinfile:
      dest=/data/sh/nginx.conf
      regexp="listen 80"
      line="listen 8081;"
      backrefs=yes
      backup=yes
      tags: hanye3
      notify:
      restart nginx
      handlers:
      • name: restart nginx
        service: name = nginx state=reloaded enabled=yes
        上述表示爲僅僅修改 listen 80爲listen 8081,然後重載nginx
        多任務調用不通的handlers實現:

meta任務的參數值爲flush_handlers,"meta: flush_handlers"表示立即執行之前的task所對應handler,什麼意思呢?意思就是,在當前meta任務之前,一共有兩個任務,task1與task2,它們都有對應的handler,當執行完task1與task2以後,立即執行對應的handler,而不是像默認情況那樣在所有任務都執行完畢以後才能執行各個handler

     - hosts: docker
      remote_user: root
      vars:
        epic: true
      tasks:
        - name: gouuradd erp
          group: name=erp gid=1008
          notify: 
          useradd erp
    - meta: flush_handlers
    - name: 修改nginx.conf指定字段
      lineinfile:
    dest=/data/sh/nginx.conf
      regexp="listen 9080"
      line="listen 8081\;"
      backrefs=yes
    backup=yes
     tags: hanye3
    notify:
        restart nginx
handlers:
  - name: restart nginx
    service: name=nginx state=restarted
  - name: useradd erp
    user: name=erp uid=1008 group=erp  password="$6$O9KDopiuPgvkrb4z$ee7/lfljSe79zQLIvDROsFM23hAJRRvVc.JoBWPGW/erp shell=/bin/bash"

調用多個handlers

當我們想要一個task調用多個handler的時候,第一想到的應該是一個handler可以寫多個name來實現,但這是行不通的,一個handler只能定義一個handler name,如果想實現調用多個handler,只需要把多個分爲一組(listen)

  • name: groupadd erp2
    group: name=erp2 gid=3008
    notify:
    data dir
    • name: copy nginx.conf
      copy: src=/usr/local/nginx/conf/nginx.conf dest=/data/sh/nginx.conf
    • name: 修改nginx.conf指定字段
      lineinfile:
      dest=/data/sh/nginx.conf
      regexp="listen 9080"
      line="listen 8081\;"
      backrefs=yes
      backup=yes
      tags: hanye3
      notify:
      restart nginx
      handlers:
    • name: restart nginx
      service: name=nginx state=restarted
    • name: useradd erp
      user: name=erp uid=1008 group=erp password="$6$O9KDopiuPgvkrb4z$ee7/lfljSe79zQLIvDROsFM23hAJRRvVc.JoBWPGW3WbeHBQVG.IFcg1r8RppAIZ8naxckFGvOX2CIiwY6hEw0" home=/home/erp shell=/bin/bash""
    • name: soft dir
      listen: data dir
      file: path=/data/backup state=directory mode=644
    • name: home dir
      listen: data dir
      file: path=/data/homeerp state=directory mode=644
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章