【问题标题】:Variable as array/object key in Ansible变量作为 Ansible 中的数组/对象键
【发布时间】:2015-09-08 05:07:21
【问题描述】:

我正在编写一个使用我指定的名称创建网络的剧本。稍后在剧本中,我需要访问此网络任务分配的 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

这可能吗?

【问题讨论】:

    标签: arrays variables yaml ansible


    【解决方案1】:

    不确定剧本是什么样的,但根据收集到的事实访问 IP 在您的上下文中不起作用吗?示例:{{ ansible_eth0.ipv4.address }}

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

    【讨论】:

    • 我将发布一个示例,说明我使用的内容和返回的内容。不过对我来说,这暗示了一个更大的限制——我不能使用变量来定位其他变量?
    猜你喜欢
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2021-01-07
    • 2011-12-11
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 2021-06-19
    相关资源
    最近更新 更多