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/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步