ansible tag标签

playbook tag 标签

一个playbook 中执行部分或某类任务,或者不执行某类时,可以给任务集打tag 标签。
执行某类任务用-t 参数,不执行某类任务用--skip-tags 参数;

1、查看playbook 中的所有tag:


ansible-playbook --list-tags test_tag.yml

2、预留tag 标签:always,tagged,untagged,all,never;

  all:默认值,表示所有任务会被执行;
  always: tags的值指定为always时,那么这个任务就总是会被执行,除非你使用–skip-tags选项明确指定不执行对应的任务;
  never: 与always 相反;
  tagged、untagged、all这三个特殊标签并非像always一样,always作为标签值存在,而这三个特殊标签则是在调用标签时使用;
  如:

  ansible-playbook --tags tagged testtag.yml

    上述命令表示只执行有标签的任务,没有任何标签的任务不会被执行。
  ansible-playbook --skip-tags tagged testtag.yml
    上述命令表示跳过包含标签的任务,即使对应的任务包含always标签,也会被跳过。
  ansible-playbook --tags untagged testtag.yml
    上述命令表示只执行没有标签的任务,但是如果某些任务包含always标签,那么这些任务也会被执行。
  ansible-playbook --skip-tags untagged testtag.yml
    上述命令表示跳过没有标签的任务。
特殊标签all表示所有任务会被执行,不用指定,默认情况下就是使用这个标签。

注意:
  1、在执行playbook 的-t 参数可以写为:--tags,与--skip-tags相同,给定的值可以是单个,可以是多个,多个的时候用逗号分开,如:-t=tag1,tag2 ;
当给定的值为all 时,执行所有task,无论task 是否有标签;

测试使用playbook yml 文件内容:

    ---
    - hosts: all
      name: "play book tag1"
      tasks:
        - name: "单个tag"
          debug:
            msg: "all tag: tag1"
          tags: tag1
        - name: "单个tag2"
          tags:
            - tag2
          debug:
            msg: "all tag: tag2"
        - name: "不存在tag"
          debug:
            msg: "all tag:"
        - name: "多tag,tag1 tag2"
          tags: tag1,tag2
          debug:
            msg: "all tag:tag1,tag2"
        - name: "tag: always 与tag1"
          tags: ['always','tag1']
          debug:
            msg: "all tag: tag1,always"

 

posted @ 2023-03-28 17:49  橘子飞飞  阅读(100)  评论(0编辑  收藏  举报