ansible进阶小技巧--tags
用ansible写playbook的朋友可能会发现,当配置工作很多时,如果在中间过程出错了,修改后想重新执行,前面的一大堆步骤让人感觉很烦躁。虽然提供了“retry”文件,但是却只是根据host来判断重新执行,仍然不够方便;又或者,中间的某些步骤特别耗时,比如下载一个很大的数据包,每次执行特别浪费时间,想要特别的跳过。怎么办?我猜你就是把不需要的部分给注释掉了。有没有更好的办法呢?
当然,现在流行的ansible有提供一种方法解决这个问题。
ansible的playbool中有一个关键字,叫做tags。tags是什么?就是打标签。tags可以和一个play(就是很多个task)或者一个task进行捆绑。然后,ansible-playbook提供了“--skip-tags”和“--tags” 来指明是跳过特定的tags还是执行特定的tags。
下面请看例子。
- <pre class="plain" name="code"># example 1 test1.yml
- - hosts: test-agent
- tasks:
- - command: echo test1
- tags: 可以写在一行 tags: test1
- - test1
- - command: echo test2
- tags:
- - test2
- - command: echo test3
- tags:
- - test3
当执行 ansible-playbook test1.yml --tags="test1,test3" ,则只会执行 test1和test3的echo命令。
当执行 ansible-playbook test1.yml --skip-tags="test2" ,同样只会执行 test1和test3的echo命令。
同理可以适用于play,请看例子
- # example 2 test2.yml
- - hosts: test-agent1
- tags:
- - play1
- tasks:
- - command: echo This is
- - command: echo agent1
- - hosts: test-agent2
- tags:
- - play2
- tasks:
- - command: echo This is
- - command: echo agent2
- - hosts: test-agent3
- tags:
- - play3
- tasks:
- - command: echo This is
- - command: echo agent3
当执行 ansible-playbook test2.yml --tags="play1,play3" ,则只会执行 play1和play3的tasks。
当执行 ansible-playbook test2.yml --skip-tags="play2" ,同样只会执行 test1和test3的tasks。
同理还有include和role
- - include: foo.yml tags=web,foo
- roles:
- - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }
你肯定注意到了,这个的一个include和role,同时打了多个tags。是的,这是允许的,而且不同的tags名称是等效的。多个tags对play和task同样适用。--skip-tags="web"和--skip-tags="foo",效果是一样的。如果是--skip-tag="web,foo"呢?效果还是一样的。呵呵开玩笑的,我没有试过,欢迎你试一下。
既然一个job可以有多个tags,那么多个job是否可以有同一个tags呢?答案是肯定的。而且,没有开玩笑。不行你试试。下面举例
- <pre class="plain" name="code"># example 3 test3.yml
- - command: echo task111
- tags:
- - task1
- - command: echo task112
- tags:
- - task1
- - command: echo task333
- tags:
- - task3
- - command: echo task222
- tags:
- - task2
当执行 ansible-playbook test2.yml --skip-tags="play1" ,则只会执行 task3和task2的tasks,task1中的2个task都被skip了。
当执行 ansible-playbook test2.yml --tags="task2,task3" ,仍然只会执行 task3和task2的tasks,并且请注意,是按照playbooks中代码的顺序执行,而不是--tags中参数的顺序执行。
ansible是根据输入的tags的参数,与playbook中进行比较,按照playbook的执行顺序,跳过或执行特定的tags。对于没有打tags的部分,没有影响,正常顺序执行。
ansible进阶小技巧--tags的更多相关文章
- MVC进阶讲解+小技巧-乱七八糟
开发步骤 1.建立项目 2.建立文件夹 3.建立Controllers 4.生成页面 5.编写Html+Js 6.编写异步请求的Action的方法,返回部分页(用于分页) 7.Js中显示部分页 8.增 ...
- 必看!macOS进阶不得不知的实用小技巧
不知道大家对使用苹果电脑的体验如何?您充分利用您的mac了吗?其实macOS上存在着许多快捷方式和技巧可以帮助简化我们的工作流程,提高效率,但是在日常生活中经常被人们忽略或者遗忘.以下是macdown ...
- .Net开发小技巧
.NET项目开发中的小技巧 1.不要频繁的创建对象...这个损失是巨大的...new太多了,后果比较严重. 2.打开数据库后要及时的关闭连接,如果你不能做到一个open后跟一个close,那也没关系, ...
- MAC使用小技巧之用好mac电脑?的10个必知的小技巧!
很多朋友是不是都有这样的困惑,刚接手Mac电脑,无论是笔记本亦或是台式机,很是不方便,因为windows系统那种习惯已经先入为主了,今天就给大家普及一些小技巧. 当你看到这篇文章,不管你有没有mac电 ...
- Pycharm: 代码跳转如何回退 (小技巧)
背景 玩Python已经有段时间了, 一般都是通过vim和Pycharm来开发, 真心觉得这两个是神器. Vim神器暂且不说, 今天来分享Pycharm的一个小技巧. 用Pycharm的童鞋都知道, ...
- Golang的防坑小技巧
Golang的防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 作为一名小白,在之前没有接触到编程的小伙伴,难免会踩到一些坑,比如说刚刚入门的时候你需要安装环境,学习Gol ...
- Python爬虫简单入门及小技巧
刚刚申请博客,内心激动万分.于是为了扩充一下分类,随便一个随笔,也为了怕忘记新学的东西由于博主十分怠惰,所以本文并不包含安装python(以及各种模块)和python语法. 目标 前几天上B站时看到一 ...
- javascript小技巧-js小技巧收集(转)
本文转载自:http://blog.csdn.net/ocean20/article/details/2498699 每一项都是js中的小技巧,但十分的实用! 1.document.write(&qu ...
- PHP开发者该知道的5个Composer小技巧
Composer 是新一代的PHP依赖管理工具.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方便. 1. 仅更新单个库 只想更新某个特定的库,不想更新它的所有依赖,很简单 co ...
随机推荐
- 可靠的推送IM消息
一. 报文类型: 1.请求报文(request,后简称为为R): 2.应答报文(acknowledge,后简称为A): 3.通知报文(notify,后简称为N). R:客户端主动发送给服务器 ...
- Eclipse中不让.svn文件夹一同编译到class中
开发过程中一直在用SVN做版本控制,使用Eclipse编译文件后,classes文件中总是有.svn的文件夹,在做提交时有时会报错,这些文件没有什么用,而且影响build的速度. 更恼火的是, 如果一 ...
- WHEN STATICFILEHANDLER IS NOT STATICFILEHANDLER
I could also have called this "wildcard .NET mapping in IIS Express from web.config." I'm ...
- 2017头条笔试题:二维点集中找出右上角没有点的点并按x坐标从小到大打印坐标
PS:这篇是之前本来就想发的但是一直没时间写,加上今天做了京东的题,结果代码名就命名为jingdong了……懒得改代码名重新跑一遍结果了=.= 暴力法去做就是遍历每个点,判断它是不是“最大点”.判断过 ...
- jsoncpp构造json字符串和json数组
jsoncpp构造json字符串和json数组 参考文章:Jsoncpp的简单使用 下载json文件夹放在c++项目的include目录下,在CMakeLists中include进去,然后就可以在代码 ...
- 6.后台验证码-session作用域
首先要有生成验证码图片和验证码文字的逻辑 package cn.bingou.util; import java.awt.Color; import java.awt.Font; import jav ...
- Excel 公式CORREL算出相关系数
当对 N 个主体中的每一个变量进行观测时,CORREL 工作表函数可计算两个测量变量之间的相关系数.(缺少任何主体的观测值将导致该主体在分析中被忽略.)当 N 个主体中的每一个均具备两个以上的测量变量 ...
- 【Gearman学习笔记】分布式处理入门
1.首先,确保你已经安装了gearmand环境并且语言绑定(language binding)已经生效. 2.涉及到的各个部分: ServerThe server, gearmand, will co ...
- Centos 6.5将光盘作为yum源的设置方法
Centos 6.5将光盘作为yum源的设置方法 在使用Centos 的时候,用yum来安装软件包是再方便不过了,但是如果在无法连接互联网的情况下,yum就不好用了. 下面介绍一种方式,就是将Cent ...
- 高通QMI协议
QMI(Qualcomm MSM Interface,官方名称应该是Qualcomm Message Interface)是高通用来替代OneRPC/DM的协议,用来与modem通信. QMI协议定义 ...