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 @   橘子飞飞  阅读(111)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示