果冻想
认真玩技术的地方

Ansible Playbook中的tags

Ansible是一个系列文章,我会尽量以通俗易懂、诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些。
Ansible系列博文直达链接:Ansible入门系列

前言

在编程的时候,我们习惯的会定义很多函数,这些函数只有在我们需要的时候,我们去调用它,它才会执行,那如何让playbook可以有这种类似的功能,实现我们随意调用某一个task的功能呢?

在playbook中,有一个叫做tags的东西,这个东西就可以实现上面我们想要的那种功能,只执行我们想执行的那部分内容。

本文中涉及的试验环境信息如下:

服务器信息如下:
192.168.5.2 # 管理主机
192.168.5.3 # 被管理远程主机
192.168.5.4 # 被管理远程主机

inventory文件内容如下:
[web]
192.168.5.3
192.168.5.4

tags基本用法

下面这是一个简单的playbook:

---

- hosts: web
  gather_facts: False
  tasks:
    - name: action1
      debug: msg="I am action1"
      tags:
        - action1

    - name: action2
      debug: msg="I am action2"
      tags:
        - action2

当我们执行时:

  • 当不加任何tags参数,那么会执行所有标签对应的任务;
  • 可以使用tags指定需要执行的指定任务:ansible-playbook tagsTest1.yaml --tags "action1"
  • 可以使用skip-tags指定需要跳过执行的任务:ansible-playbook tagsTest1.yaml --skip-tags "action1"

特殊的tags

标签的名字是我们自己定义的,但是总有一些特殊的名称已经被系统占用了,如果我们用这些特殊的标签名就会是不同的结果。

  • always
    我们可以在yaml中指定always标签,这样的话,在执行playbook的时候,有没有指定指定这个tag,带有always的task都会被执行。

  • tagged
    我们可以使用--tags tagged来执行所有标记了标签的task,不管标记的标签名字是什么。比如这样执行:

    ansible-playbook tagsTest1.yaml --tags tagged
    
  • untagged
    我们可以使用--tags untagged来执行所有没有标记标签的task,不管标记的标签名字是什么。比如这样执行:

    ansible-playbook tagsTest1.yaml --tags untagged
    
  • all
    我们可以使用--tags all来执行所有的任务。比如这样执行:

    ansible-playbook tagsTest1.yaml --tags all
    

总结

tags功能还是蛮常用的,至少我还经常用的到,因为小巧实用,就经常被我“宠幸”,你也应该留意一下这个功能,以后不一定可以用的着。最后,如果觉的还不错,可以点击下方的“打赏”哦。

夜晚的蚊子,是真的可以吃人!

果冻想,认真玩技术的地方。

2020年5月22日,于内蒙古呼和浩特。

赞(0) 打赏
未经允许不得转载:果冻想 » Ansible Playbook中的tags
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

玩技术,我们是认真的

联系我们关于果冻

感谢支持果冻想

支付宝扫一扫打赏

微信扫一扫打赏