如何在Ansible的worker节点访问main组的group_vars变量?
访问Ansible静态组的group_vars变量
直接引用组变量
默认情况下,Ansible会把所有group_vars加载到全局变量空间,所有主机都能直接访问。你在worker节点的Jinja模板里可以直接写:
特殊值:{{ special_value }} 描述:{{ description }}
通过组内主机间接获取
如果需要明确关联到main组,可先选取组内任意主机,再通过hostvars访问该主机上的组变量(组变量会同步到组内所有主机的变量空间):
{% set main_host = groups['main'][0] %} 特殊值:{{ hostvars[main_host].special_value }} 描述:{{ hostvars[main_host].description }}
显式加载组变量(可选)
如果组变量未自动生效,可在Ansible任务中用lookup显式加载,再传递给模板:
- name: 加载main组变量 set_fact: main_group_vars: "{{ lookup('vars', 'group_vars_main') }}" delegate_to: localhost - name: 渲染模板 template: src: my_template.j2 dest: /path/to/output
模板中即可通过{{ main_group_vars.special_value }}访问变量。
提示:优先用直接引用的方式,只有变量名冲突或需明确来源时,再考虑后两种方法。
内容的提问来源于stack exchange,提问作者Xaver
相关产品推荐
相关产品推荐

