如何在引用的哈希中访问嵌套变量。

时间:2017-05-25 17:27:43

标签: ansible

我正在写一本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'] }}  "

它可以工作并获取该特定主机的值。

我想要实现的是将值返回到我正在执行的主机上。

1 个答案:

答案 0 :(得分:1)

永远不要在Jinja2表达式中嵌套。您可以在其中使用变量而无需任何包装:

- name: Testing varibale access.
  debug:
    msg: " Source IP: {{ ansible_host }} corresponding Port IP and Port {{ SourceIPs[ansible_host] }} "