[Ansible系列]ansible tag介绍

news2024/11/15 23:48:20

简介

         在大型项目当中,通常一个playbook会有非常多的task。而我们每次执行这个playbook时,都会将 所有task运行一遍。而事实上,在实际使用过程中,我们可能只是想要执行其中的一部分任务而已, 并不想把整个playbook完整跑一遍。这个时候就需要用到tags。(在playbook的调试过程中使用的非常频繁)

        通过tags,我们可以给playbook中的某一些任务打上“标签”,而在执行playbook的时候,我们可 以通过选定标签的方式指定只执行哪一些任务或者不执行哪一些任务。

task      tag 

         给task打上tag(标签),这章的内容不多,我们从一个示例开始:

示例1: 安装httpd,同时定义三个tags:install_httpd 、 conf_httpd 以及 start_httpd

- hosts: 192.168.194.129
  gather_facts: no

  tasks:
    - name: install http
      yum:
        name: httpd
        state: present
      tags: install_httpd

    - name: configuration httpd 
      template:
        src: /root/ansible_test/ansible_2/httpd.conf.j2
        dest: /etc/httpd/conf/httpd.conf
        owner: apache
        group: apache
        backup: yes
      notify:
        - restart httpd
      tags: config_httpd

    - name: start httpd
      service:
        name: httpd
        state: started
        enabled: yes
      tags: start_httpd

  handlers:
    - name: restart httpd
      service:
        name: httpd
        state: restarted

执行结果:

[root@clinet ansible_2]# ansible-playbook yum_file/tag/tag_test.yml 

PLAY [192.168.194.129] **********************************************************************************************************************************************************************************

TASK [install http] *************************************************************************************************************************************************************************************
[WARNING]: Platform linux on host 192.168.194.129 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
ok: [192.168.194.129]

TASK [configuration httpd] ******************************************************************************************************************************************************************************
changed: [192.168.194.129]

TASK [start httpd] **************************************************************************************************************************************************************************************
changed: [192.168.194.129]

RUNNING HANDLER [restart httpd] *************************************************************************************************************************************************************************
changed: [192.168.194.129]

PLAY RECAP **********************************************************************************************************************************************************************************************
192.168.194.129            : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@clinet ansible_2]# 
[root@clinet ansible_2]# 

1.  执行指定tag的task 

  运行一个tag:

[root@clinet ansible_2]# ansible-playbook --tags="start_httpd" yum_file/tag/tag_test.yml 

PLAY [192.168.194.129] **********************************************************************************************************************************************************************************

TASK [start httpd] **************************************************************************************************************************************************************************************
[WARNING]: Platform linux on host 192.168.194.129 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
ok: [192.168.194.129]

PLAY RECAP **********************************************************************************************************************************************************************************************
192.168.194.129            : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@clinet ansible_2]#

运行多个tag:

[root@clinet ansible_2]# ansible-playbook --tags="install_httpd,start_httpd" yum_file/tag/tag_test.yml 

PLAY [192.168.194.129] **********************************************************************************************************************************************************************************

TASK [install http] *************************************************************************************************************************************************************************************
[WARNING]: Platform linux on host 192.168.194.129 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
ok: [192.168.194.129]

TASK [start httpd] **************************************************************************************************************************************************************************************
ok: [192.168.194.129]

PLAY RECAP **********************************************************************************************************************************************************************************************
192.168.194.129            : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@clinet ansible_2]#

2.  排除指定tag的task

         排除指定了tag的task,即除了指定tag的task不执行,其他task都执行

[root@clinet ansible_2]# ansible-playbook --skip-tags="install_httpd" yum_file/tag/tag_test.yml 

PLAY [192.168.194.129] **********************************************************************************************************************************************************************************

TASK [configuration httpd] ******************************************************************************************************************************************************************************
[WARNING]: Platform linux on host 192.168.194.129 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
ok: [192.168.194.129]

TASK [start httpd] **************************************************************************************************************************************************************************************
ok: [192.168.194.129]

PLAY RECAP **********************************************************************************************************************************************************************************************
192.168.194.129            : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@clinet ansible_2]# 

3.   查看playbook中的所有tag

        通过 ‐‐list‐tags 参数列出指定的playbook中所有的tag 

[root@clinet ansible_2]# ansible-playbook --list-tags yum_file/tag/tag_test.yml 

playbook: yum_file/tag/tag_test.yml

  play #1 (192.168.194.129): 192.168.194.129    TAGS: []
      TASK TAGS: [config_httpd, install_httpd, start_httpd]
[root@clinet ansible_2]# 
[root@clinet ansible_2]# 

 4.  打tag的方式

4.1   一个task一个tag

  tasks:
    - name: install http
      yum:
        name: httpd
        state: present
      tags: install_httpd

 4.2  一个task多个tag

方式一:

  tasks:
    - name: install http
      yum:
        name: httpd
        state: present
      tags:

        - install_httpd1

        - install_httpd2

方式二:

      tags: ['install_httpd1', 'install_httpd2']


方式三:

tags: install_httpd1,install_httpd2

4.3  给一个playbook打tag

         当为一个play指定一组标签后,该play下的所有task都会自动继承该标签,各task也可以自定义自己 的标签。

‐ name: configure webservers
  hosts: all
  remote_user: ansible
  tags:
    ‐ httpd

  tasks:
    ...

ansible内置tag

 1.  always

         一旦某个task被打上了always的tag,则无论是playbook的完整执行,还是指定tag执 行,不管你指定的tag是啥,该任务总是会被执行。除非明确指定"--skip-tags=always"选项, 才不会执行该task。

示例1: 配置always标签,执行playbook,指定非always标签执行,查看always标签是否执行

- hosts: 192.168.194.129
  gather_facts: no

  tasks:
    - name: install http
      yum:
        name: httpd
        state: present
      tags: always

    - name: configuration httpd 
      template:
        src: /root/ansible_test/ansible_2/httpd.conf.j2
        dest: /etc/httpd/conf/httpd.conf
        owner: apache
        group: apache
        backup: yes
      notify:
        - restart httpd
      tags: config_httpd

    - name: start httpd
      service:
        name: httpd
        state: started
        enabled: yes
      tags: start_httpd

  handlers:
    - name: restart httpd
      service:
        name: httpd
        state: restarted

 示例2: 需要通过--skip-tags=always来取消always标签的始终执行

 2.  never

        该标签与always正好相反,总是不会执行,除非明确指定"--tags=never"选项。 

 3.  tagged

 # 所有打了tag的任务都会被执行,包含never tag的除外,没有标签的不会被执行
 

ansible‐playbook ‐‐tags tagged    yum_file/tag/tag_test.yml


# 所有打了tag的任务都不会被执行,包括always tag也不会被执行


ansible‐playbook ‐‐skip‐tags tagged    yum_file/tag/tag_test.yml

4.   untagged

 # 所有未打tag的任务都会被执行,打了always tag的也会被执行

ansibl‐playbook ‐‐tags untagged  yum_file/tag/tag_test.yml

# 所有未打tag的任务都不会被执行

ansibl‐playbook ‐‐skip‐tags untagged   yum_file/tag/tag_test.yml

5.   all

 表示所有任务都会被执行,在默认情况下,不指定任何标签,则使用的就是该标签


 总结

   task的标签功能目前用的最多就是在playbook的调试中,当执行playbook出现某个task有问题的时候,我们就会给该task打标签,用于后续修改测试,这也有效的避免了多次从头执行playbook的时间浪费。大家还有其他什么用法,欢迎指导!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190331.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【单链表】数据结构单链表的实现

前言:在之前的学习中我们已经了解了顺序表的相关知识内容,但是顺序表我们通过思考可以想到如下问题: 中间/头部的插入删除,时间复杂度为O(N)增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。增容…

性能技术分享|Jmeter+InfluxDB+Grafana搭建性能平台

一、引言最近在公司做性能技术分享时,发现同事对环境搭建能力,还是有些欠缺。或许,这也是大部分性能测试工程师所欠缺的技能。因为绝大部分的性能测试工程师,要么是使用测试开发架构师搭建的性能平台,要么自己使用Jmet…

【Unity3D】激光灯、碰撞特效

1 需求描述 本文将模拟激光灯(或碰撞)特效,详细需求如下: 从鼠标位置发射屏幕射线,检测是否与物体发生碰撞当与物体发生碰撞时,在物体表面覆盖一层激光灯(或碰撞)特效本文代码见→激…

振弦采集模块VMTool 配置工具的传感器数据读取

振弦采集模块VMTool 配置工具的传感器数据读取 连接传感器 将振弦传感器两根线圈引线分别连接到 VM 模块模块的 SEN和 SEN-两个管脚。 通常不分正负极,任意连接即可。 连接模块电源 使用 5V~12V 直流电源连接到 VM 模块的 VIN 和 GND,电源正极连接到 VIN…

【数据结构基础】树 - 平衡二叉树(AVL)

平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。 最小二叉平…

数学建模与数据分析 || 1. 数学建模简介

数学建模简介 文章目录数学建模简介1. 数学建模比赛的理解2. 一般数据分析的流程3. 机器学习与统计数据分析4. 各种编程软件仅仅是工具,对问题的观察视角和解决问题的策略才是关键2.1 数学建模的特点2.2 以 python(jupyter notebook工作界面)…

JSR303校验(表单参数校验)

1、maven坐标<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>3.0.1</version> </dependency>2、校验规则3、定义好校验规则还需要开启校验&#…

用户区网络缓冲区

用户区网络缓冲区 为什么要有用户层缓冲区 TCP内核协议栈&#xff0c;每个连接都有一个接收缓冲区和一个发送缓冲区&#xff0c;为啥用户层也要有&#xff1a; 为啥要有接收缓冲区 生产者速度大于消费者速度&#xff1a;客户端发送地太快&#xff0c;服务器处理不过来&#…

SpringWebflux 执行流程和核心 API

SpringWebflux 基于 Reactor&#xff0c;默认使用容器是 Netty&#xff0c;Netty 是高性能的 NIO 框架&#xff0c;异步非阻 塞的框架 Netty_百度百科 (baidu.com)BIO、NIO、AIO_y_凉介的博客-CSDN博客_bin nio &#xff08;1&#xff09;Netty BIO 每一个请求过来会占用一个…

【系列05】类与对象 面向对象 封装继承多态 类 内部类

面向对象&#x1f601; 文章为本人随课程记录笔记形成 跟随老师"秦疆&#xff08;遇见狂神说)" 非常欢迎大家在文章下面留言评论互相交流,也欢迎大家有问题可以联系本人或者本人公众号 &#x1f609;学思则安 参考课程https://www.kuangstudy.com/course?cid1 有问…

Vue3通透教程【一】Vue3现状—必然趋势?

文章目录&#x1f31f; 专栏介绍&#x1f31f; Vue默认版本&#x1f31f; 拥抱Vue3的UI&#x1f31f; Vue3显著优势&#x1f31f; 专栏介绍 凉哥作为 Vue 的忠诚粉丝输出过大量的 Vue 文章&#xff0c;应粉丝要求开始更新 Vue3 的相关技术文章&#xff0c;Vue 框架目前的地位大…

现在什么款式运动无线耳机好、最适合运动的无线蓝牙耳机推荐

随着经济越来越好&#xff0c;人们的生活质量提高&#xff0c;我们对健康也是更加重视了。越来越多人开始“动起来”。健康运动&#xff0c;自然少不了专业的运动耳机。一副适合的运动耳机对我们锻炼身体有着事半功倍的作用&#xff0c;那么有哪些品牌值得推荐呢&#xff1f;小…

论文笔记(1):Large Language Models are few(1)-shot Table Reasoners

文章目录AbstractIntroductionRelated worksMethodExperimentdatasetbaselinesresultsmain resultsanalysisLimitationAbstract 已有研究表明&#xff0c;大型语言模型(LLM)在文本的少样本推理中表现excellent&#xff0c;本文证明LLM在表结构的f复杂少样本推理中表现也很comp…

【数据结构基础】树 - 二叉搜索树(BST)

本文主要介绍 二叉树中最基本的二叉查找树&#xff08;Binary Search Tree&#xff09;&#xff0c;&#xff08;又&#xff1a;二叉搜索树&#xff0c;二叉排序树&#xff09;它或者是一棵空树&#xff0c;或者是具有下列性质的二叉树&#xff1a; 若它的左子树不空&#xff0…

入门力扣自学笔记233 C++ (题目编号:2319)

2319. 判断矩阵是否是一个 X 矩阵 题目&#xff1a; 如果一个正方形矩阵满足下述 全部 条件&#xff0c;则称之为一个 X 矩阵 &#xff1a; 矩阵对角线上的所有元素都 不是 0 矩阵中所有其他元素都是 0 给你一个大小为 n x n 的二维整数数组 grid &#xff0c;表示一个正方形…

GitHub2022年十大热门编程语言榜单(上)

全球知名代码托管平台 GitHub发布的2022年GitHub Octoverse年度报告公布了全球最流行的十大编程语言&#xff0c;其中JavaScript蝉联第一&#xff0c;Python位列次席。 编程是技术革新的核心&#xff0c;对于所有的编程开发人员来说&#xff0c;对世界范围内编程语言发展和趋势…

搭WIFI拓扑有感

搭拓扑有感 人类革命&#xff0c;一场N*N的MIMO 关键技术&#xff1a;男女搭配 结婚生子 男女搭配&#xff1a;以搭档为单位调度&#xff0c;节省整体开资&#xff0c;克服短时间的寂寞 CP沟通&#xff1a;在说话间加一个保护间隔&#xff0c;不给对方太大的压力 结婚生子 …

Live800:影响在线客服系统稳定性的因素,有哪些?

稳定性的在线客服系统对企业来说是至关重要的&#xff0c;可以说是企业选择在线客服系统时首要考量的一个因素。一个不稳定的在线客服系统&#xff0c;即使价格再便宜&#xff0c;恐怕也无法满足企业搭建在线客服系统的初衷。想象一下当客户正在咨询问题时&#xff0c;客服系统…

十三、表数据的增、删、改操作

文章目录一、插入数据1.1 使用 INSERT…VALUES 语句插入数据1.2 使用 INSERT…SET 语句插入数据1.3 使用 INSERT...SELECT 语句插入查询结果二、修改(更新)数据三、删除数据3.1 通过 DELETE 语句删除数据3.2 通过 TRUNCATE TABLE 语句删除数据3.3 DELETE 语句和 TRUNCATE TABLE…

爬虫实例(二)—— 爬取高清4K图片

大家好&#xff0c;我是 Enovo飞鱼&#xff0c;今天继续分享一个爬虫案例&#xff0c;爬取高清4K图片&#xff0c;加油&#x1f4aa;。 目录 前言 增加异常处理 增加代码灵活性 基本环境配置 爬取目标网站 分析网站页面 具体代码实现 图片下载示例 感谢支持&#x1f6…