2017-05-25 55 views
0

我正在编写一个Ansible Playbook,并试图访问引用哈希中的嵌套变量。如何访问引用哈希中的嵌套变量。

这里是我的var文件:

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

从不在Jinja2表达式中嵌套。你可以使用里面的变量没有任何包装:

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

唉谢谢,这解决了它。 – raah