ansible-playbook的tag标签

ansible预置了5个特殊tag,分别为always、never(2.5版本中新加入的)、tagged、untagged、all

当我们把任务的tags的值指定为always时,那么这个任务就总是被执行,除非使用--skip-tags选项明确指定不执行对应的任务

---
- name: Add administrator user
  user:
    name: {{admin_user}}
    shell: /bin/bash
    state: present
- name: Config administrator password for administrator user
  user:
    name: {{admin_user}}
    password: {{admin_user_passwd}}
- name: Delete administrator user
  user:
    name: {{admin_user}}
    state: absent
  tag: delete_admin_user
- name: Modify root passwd
  user:
    name: root
    password: {{root_passwd}}
  tag: modify_root_pwd,always

当执行ansible-playbook --tags delete_admin_user test.yaml后,不但执行了delete_admin_user的标签任务,还执行了拥有always标签的任务。

如果不想执行标签中包含always的任务,使用--skip-tags always选项,就会跳过所有包含always标签的任务。

对于never标签,其作用与always正好相反。

对于tagged、untagged、all三个特殊标签,并非像always和never一样作为标签值存在,而是在调用标签时使用

ansible-playbook --tags tagged test.yaml

上述命令表示只执行有标签的任务,没有任何标签的任务不会执行。

ansible-playbook --skip-tags tagged test.yaml

上述命令表示跳过包含标签的任务,即使拥有always标签,也会跳过。

ansible-playbook --tags untagged test.yaml 

上述命令表示只执行没有标签的任务,但拥有always标签的任务,仍然会被执行。

ansible-playbook --skip-tags untagged test.yaml

上述命令表示跳过没有标签的任务。

在调用标签之前,如果要概览playbook中都有哪些标签,可以使用--list-tags选项。

参考文献:http://www.zsythink.net/archives/2641/

猜你喜欢

转载自www.cnblogs.com/caibao666/p/12598660.html