1. 程式人生 > 其它 >第十三章 Ansible-playbook任務控制

第十三章 Ansible-playbook任務控制

一、playbook 任務標籤概述

如果你有一個大型的劇本,那麼只能執行它的特定部分而不是在劇本中執行所有內容可能會很有用。因此,Ansible支援“tags:”屬性。

執行playbook時,可以通過兩種方式根據 “tags” 過濾任務
1.在命令列上,使用或選項“--tags或 --skip-tags ”
2.在ansible配置設定中,使用和選項“TAGS_RUN 或 TAGS_SKIP”

二、playbook 任務標籤作用

預設情況下,Ansible在執行一個playbook時,會執行playbook中定義的所有任務,Ansible的標籤(tag)功能可以給單獨任務甚至整個playbook打上標籤,然後利用這些標籤來指定要執行playbook中的個別任務,或不執行指定的任務。

三、playbook 打任務標籤方式

1.對一個task下面的一個name打一個標籤
2.對一個task下面的一個name打多個標籤
3.對task下面的多個name打一個標籤

四、對一個task打一個標籤

.. ... ...
    - name: Config nginx Server
      copy:
        src: /root/conf/linux.wp.com.conf
        dest: /etc/nginx/conf.d/
      notify:
        - restart_web_nginx
        - get_nginx_status
      when: ansible_fqdn is match "web*"
      tags: config_web
... ... ...

五、對一個task下面的一個name打多個標籤

    - name: Config nginx Server
      copy:
        src: /root/conf/linux.wp.com.conf
        dest: /etc/nginx/conf.d/
      notify:
        - restart_web_nginx
        - get_nginx_status
      when: ansible_fqdn is match "web*"
      tags: 
        - config_web
        - config_nginx

六、對task下面的多個name打一個標籤

    - name: Config slb Server
      copy:
        src: /root/conf/proxy.conf
        dest: /etc/nginx/conf.d
      notify: restart_slb
      when: ansible_fqdn == "lb01"
      tags: config_nginx

    - name: Config nginx Server
      copy:
        src: /root/conf/linux.wp.com.conf
        dest: /etc/nginx/conf.d/
      notify:
        - restart_web_nginx
        - get_nginx_status
      when: ansible_fqdn is match "web*"
      tags: 
        - config_web
        - config_nginx

七、標籤的使用

#檢視所有的標籤(也可以檢視該劇本有多少 hosts )
[root@m01 ~]# ansible-playbook lnmp6.yml --list-tags

#執行標籤指定的動作
[root@m01 ~]# ansible-playbook lnmp2.yml -t config_web

#執行指定多個標籤的動作
[root@m01 ~]# ansible-playbook lnmp2.yml -t config_nginx,config_web

#跳過指定的標籤動作
[root@m01 ~]# ansible-playbook lnmp2.yml --skip-tags config_nginx