在Ansible中作为数组/对象键变量

时间:2015-06-22 16:29:49

标签: arrays variables yaml ansible

我正在编写一个剧本,创建一个名为我指定的网络。稍后在剧本中我需要访问由此网络任务分配的IP,所以我从hostvars获取它。例如,如果我打电话给网络' my_website'我将在hostvars中定位的值是

server: "{{hostvars.localhost.rax_nfs.results[0].success[0].rax_addresses.my_website[0].addr}}"

这很好,但是我想根据var文件传入的变量的内容来命名网络,使其可以在多个设置中重用,然后仍然可以恢复该IP,所以

network_label: "{{ my_website }}"
server: "{{hostvars.localhost.rax_nfs.results[0].success[0].rax_addresses.network_label[0].addr}}"

显然这不起作用,因为它只是分配一个字符串。如何使用network_label作为另一个变量中的键?就像在php中那样

$ array [$ variable],或$ object-> $ variable

这可能吗?

1 个答案:

答案 0 :(得分:0)

不确定剧本是什么样的,但根据所收集的事实访问IP并不适用于您的上下文?示例:{{ansible_eth0.ipv4.address}}

或者,在创建网络的任务中,您可以将其注册为变量,以便以后使用该变量名进行访问。 您还可以在变量中访问数组的元素:{{var_name [0]}}