8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何让 Ansible 解释变量内的变量?

Austin Wolff 1月前

16 0

每当我尝试让 Ansible 解释嵌套变量(即另一个变量内的变量)时,我都无法得到我期望的结果。给定变量:key:barfoo:bar:bazfoo_bar:bazI...

每当我尝试让 Ansible 解释嵌套变量(即另一个变量内的变量)时,我都无法得到我期望的结果。

鉴于变量:

key: bar
foo:
  bar: baz
foo_bar: baz

字典的 bar foo 或键 foo_bar (当从值构造时) key

  • - ansible.builtin.debug:    msg: "{{ foo[{{ key }}] }}"

    p4

    p5

  • - ansible.builtin.debug:      msg: "{{ foo_{{ key }} }}"

    p6

    p7

  • - ansible.builtin.debug:    msg: "{{ foo['{{ key }}'] }}"

    p8

    p9

我期望获得 foo.bar 或的 foo_bar ,所以 baz .
实现这一目标的正确方法是什么?

帖子版权声明 1、本帖标题:如何让 Ansible 解释变量内的变量?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Austin Wolff在本站《dictionary》版块原创发布, 转载请注明出处!
最新回复 (0)
  • Ansible 常见问题解答 中建议的那样 胡子不会堆叠 .

    另一条规则是“胡子不能叠在一起”。我们经常看到这样的情况:

    {{ somevar_{{other_var}} }}
    

    上述操作并不像您预期​​的那样工作,如果您需要使用动态变量,请根据需要使用以下命令:

    {{ hostvars[inventory_hostname]['somevar_' ~ other_var] }}
    

    对于“非主机变量”,您可以使用 变量查找 插件:

    {{ lookup('vars', 'somevar_' ~ other_var) }}
    

    Source: https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#when-should-i-use-also-how-to-interpolate-variables-or-dynamic-variable-names


    因此,有两种情况适用:

    1. p6

      - ansible.builtin.debug:    msg: "{{ foo[key] }}"  vars:    key: bar    foo:      bar: baz
    2. p7

      - ansible.builtin.debug:    msg: "{{ foo['foo_' ~ key] }}"  vars:    key: bar    foo:      foo_bar: baz

      p8

      - ansible.builtin.debug:    msg: "{{ lookup('vars', 'foo_' ~ key) }}"  vars:    key: bar    foo_bar: baz

    附注:

    • p10

      p11

      p12

      p13

      p14

    • p15

      p16

      p17

返回
作者最近主题: