第十三章 Ansibleplaybook任务控制

一、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
原文地址:https://www.cnblogs.com/jhno1/p/15723271.html