如何在Ansible Playbook或Roles中直接获取当前使用的group_name?
Ansible直接获取当前主机组的方法
完全可以不用额外设置中间变量,Ansible内置了几个变量能直接帮你判断当前主机所属的组,最常用的是group_names:
使用
group_names变量:这是每个主机都会自带的内置变量,值是该主机所属所有组的列表。你可以直接在when条件里判断目标组是否在这个列表里,比如:# Role中的任务示例 - name: 仅在conf_qa组执行的操作 debug: msg: "当前主机属于QA环境组" when: 'conf_qa' in group_names这样就省去了在
group_vars/conf_qa.yml里定义qa: true的步骤。针对Playbook层面的简化:如果你的Play已经指定了
hosts: conf_qa,那这个Play下的所有任务默认只会在该组主机上执行。但如果是同一个Role要在多个组复用,用上面的group_names判断就足够灵活。
另外还有个等效的内置变量ansible_group_names,用法和group_names完全一致。
内容的提问来源于stack exchange,提问作者shepster
相关产品推荐
相关产品推荐

