Ansible使用Extra Variable从Host Variable动态取值失败求助
Ansible动态获取组变量失败的解决方案
问题核心原因
你遇到的报错是因为在Jinja2表达式中错误嵌套了模板语法:groups['{{ deployment }}']。在已经被{{ }}包裹的表达式内部,不需要再用{{ }}来引用变量,直接使用变量名deployment即可。
修改后的Playbook
将Playbook中动态取值的行修正为以下写法:
--- - hosts: cluster_1 tasks: - name: Set remote hosts for reindex debug: # 硬编码写法(正常工作) msg: "hello from {{ ansible_hostname }} ['cluster_2']:['node1_ip'] {{ hostvars[groups['cluster_2'][0]].node1_ip }}" # 修正后的动态变量写法 msg: "hello from {{ ansible_hostname }} ['{{ deployment }}']:['node1_ip'] {{ hostvars[groups[deployment][0]].node1_ip }}"
额外验证步骤
如果不确定变量是否正确传递,可以先添加一个debug任务确认deployment变量的值:
- name: Check deployment variable value debug: var: deployment
执行原命令后,就能正常通过deployment变量动态获取目标组的主机变量了。
内容的提问来源于stack exchange,提问作者pedrosk
相关产品推荐
相关产品推荐

