我正在写一本Ansible Playbook,并试图在引用的哈希中访问嵌套变量。
这是我的vars文件:
SourceIPs:
192.168.33.20:
DestIP: 192.168.33.30
Port: 22
192.168.33.30:
DestIP: 192.168.33.20
Port: 22
这是我的任务文件:
- name: Testing varibale access.
debug:
msg: " Source IP: {{ ansible_host }} corresponding Port IP and Port {{ SourceIPs[' {{ansible_host}} '] }} "
执行此操作时失败说dict_object没有名为{{ansible_host}}的变量。很明显它没有将它转换为当前主机的IP地址。
但是,如果我修改任务文件以包含静态主机ip,如下所示:
- name: Testing varibale access.
debug:
msg: " Source IP: {{ ansible_host }} corresponding Port IP and Port {{ SourceIPs['192.168.33.30'] }} "
它可以工作并获取该特定主机的值。
我想要实现的是将值返回到我正在执行的主机上。
答案 0 :(得分:1)
永远不要在Jinja2表达式中嵌套。您可以在其中使用变量而无需任何包装:
- name: Testing varibale access.
debug:
msg: " Source IP: {{ ansible_host }} corresponding Port IP and Port {{ SourceIPs[ansible_host] }} "