如何在Ansible Playbook中打印传入的标签值?
如何在Ansible Playbook中打印传入的标签值
你可以通过Ansible内置变量获取并打印传入的标签,之前的代码思路可行,但需要明确变量差异和执行细节。
正确实现示例
使用ansible_run_tags可直接获取用户命令行传入的标签,ansible_play_tags则包含当前Play中生效的所有标签(含任务自身的always标签)。以下是完整Playbook:
- name: 演示打印传入标签 hosts: localhost tasks: - name: 打印用户指定的标签 debug: var: ansible_run_tags tags: always - name: 打印当前Play生效的所有标签 debug: var: ansible_play_tags tags: always
执行方式
运行Playbook时传入目标标签,例如:
ansible-playbook your_playbook.yml --tags START
预期输出
执行后会得到类似结果:
TASK [打印用户指定的标签] ********************************************************* ok: [localhost] => { "ansible_run_tags": [ "START" ] } TASK [打印当前Play生效的所有标签] ************************************************* ok: [localhost] => { "ansible_play_tags": [ "START", "always" ] }
关键注意点
- 任务必须添加
tags: always,确保无论指定什么标签,该任务都会执行并输出标签信息。 - 若Playbook包含多个Play,
ansible_play_tags仅返回当前Play的标签集合,而ansible_run_tags始终是用户传入的完整标签列表。
内容的提问来源于stack exchange,提问作者Vamsi
相关产品推荐
相关产品推荐

