Write by lyc at 2019-10-27
参考博文:
tags用法

1.Ansible playbook tags标签

  • tags可以帮助我们对tasks打标签
  • 在执行playbook时,可以借助tags标签,指定执行哪些任务或指定不执行哪些任务。
  • tags和moudul同级

2.tags 用法

tags 3种定义方法

1
2
3
4
5
6
7
8
9
10
# example1:
tags: CentOS6,CentOS7

# example2:
tags:
- CentOS6
- CentOS7

# example3:
tags: ['CentOS6','CentOS7']

ansible-playbook 执行tags

  • --list-tags 查看ansible-playbook下有哪些tags标签
  • --tags=tag1,tag2 只执行ansible-playbook下的指定tag
  • --skip-tags=tag1,tag2 不执行ansible-playbook下的指定tag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# tasks定义tags
---
- shell: >
touch /root/tags_CentOS7.log
tags: CentOS7

- shell: >
touch /root/tags_Ubuntu16.log
tags: Ubuntu16


# play-book执行tags
## --list-tags 查看
ansible-playbook /data/ansible/roles/docker/docker.yml -vv -e "HOST=192.168.99.207" --list-tags

## 只执行tags=CentOS7标签的tasks
ansible-playbook /data/ansible/roles/docker/docker.yml -vv -e "HOST=10.19.x.x" --tags=CentOS7

## 只执行tags=Ubuntu标签的tasks
ansible-playbook /data/ansible/roles/docker/docker_ubuntu.yml -vv -e "HOST=10.19.x.x" --tags=Ubuntu16 -b

内置特殊 tags

  • always 当tasks配上always标签时,表示这个任务总是会被执行,除非--skip-tags=always会跳过所有always标签
  • never 与alway相反
  • tagged 只执行有标签的任务,没有任务标签的任务不会被执行
  • untagged 只执行没有标签的任务,但是如果某些任务包含always标签,也会被执行
  • all 所有任务都会被执行,不用指定,默认情况就是使用这个标签