自动化运维---playbook(应用tag标签)

自动化运维—playbook(应用tag标签)


当一个剧本中含有多个task任务时,如果我们不想全部执行而是想执行执行某些任务,就需要给每个任务添加标签

playbook1

vim tag-test1.yml
---
- hosts: testB
  remote_user: root
  tasks:
  - name: task1
    file:
      path=/testdir/file1
      state=directory
    tags: t1
  - name: task2
    file:
      path=/testdir/file2
      state=directory
    tags: t2
  - name: task3
    file:
      path=/testdir/file3
      state=directory
    tags: t3

在这里插入图片描述
只执行标签为t3的任务:

ansible-playbook --tags=t3 tag-test1.yml 

查看到执行了task3:
在这里插入图片描述
创建了file3:
在这里插入图片描述
执行除了标签为t3的任务:

ansible-playbook --skip-tags=t3 tag-test1.yml 

查看到执行了task1和task2:
在这里插入图片描述
创建了file1和file2:
在这里插入图片描述

playbook2 添加标签的3种语法

三种语法添加多个标签的示例如下:

语法1:
tags:
  - t1
  - t2
语法2:
tags: ['t1','t2']
语法3:
tags: t1,t2
vim tag-test2.yml 
---
- hosts: testB
  remote_user: root
  tasks:
  - name: task1
    file:
      path=/testdir/file1
      state=directory
    tags:
      - t1
  - name: task2
    file:
      path=/testdir/file2
      state=directory
    tags: ['t2']
  - name: task3
    file:
      path=/testdir/file3
      state=directory
    tags: t3

在这里插入图片描述

ansible-playbook --skip-tags=t3 tag-test1.yml

没有语法错误,可以执行
在这里插入图片描述

playbook3 共同标签

vim tag-test3.yml 
---
- hosts: testB
  remote_user: root
  tasks:
  - name: install httpd package
    tags: http,package
    yum:
      name=httpd
      state=latest
  - name: start httpd
    tags: http,service
    service:
      name=httpd
      state=started

ansible-playbook tag-test3.yml 

在这里插入图片描述
以上剧本可以写成:

---
- hosts: testB
  remote_user: root
  tags: http
  tasks:
  - name: install httpd package
    tags: ['package']
    yum:
      name=httpd
      state=latest
  - name: start httpd
    tags: 
      - service
    service:
      name=httpd
      state=started

在这里插入图片描述
查看剧本中的标签:

ansible-playbook --list-tags tag-test3.yml 

在这里插入图片描述

playbook4 特殊标签:

always:不管是否指定都会被执行,一直执行

---
- hosts: testB
  remote_user: root
  tasks:
  - name: task1
    file:
      path=/testdir/file1
      state=directory
    tags:
      - t1
  - name: task2
    file:
      path=/testdir/file2
      state=directory
    tags: ['t2']
  - name: task3
    file:
      path=/testdir/file3
      state=directory
    tags: t3,always

在这里插入图片描述
指定执行t1标签,但t3也被执行了:

ansible-playbook --tags t1 tag-test2.yml 

在这里插入图片描述
如果要不执行带有always标签的动作:(如果有多个always,都会跳过)

ansible-playbook --tags t1 --skip-tags always tag-test2.yml 

never:一直不执行,除非指定执行标签为never的任务

---
- hosts: testB
  remote_user: root
  tasks:
  - name: task1
    file:
      path=/testdir/file1
      state=directory
    tags:
      - t1
  - name: task2
    file:
      path=/testdir/file2
      state=directory
    tags: ['t2']
  - name: task3
    file:
      path=/testdir/file3
      state=directory
    tags: t3,never

在这里插入图片描述
执行这个剧本时,标签为never的任务task3没有执行:

ansible-playbook tag-test2.yml 

在这里插入图片描述
剩余的三个特殊标签分别为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 untaggedtesttag.yml
上述命令表示跳过没有标签的任务

特殊标签alI表示所有任务会被执行,不用指定,状认情况下就是使用这个标签

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值