gpt4 book ai didi

ansible - 循环调试 msg 一个 json 数组

转载 作者:行者123 更新时间:2023-12-04 07:56:06 25 4
gpt4 key购买 nike

原来的剧本是这样的:

- debug:
msg:
- "{{ intvlan.results[0].cde }}"
- "{{ intvlan.results[1].cde }}"
- "{{ intvlan.results[2].cde }}"
- "{{ intvlan.results[3].cde }}"
我想把它改成一个循环。
所以,我改变了代码如下:
vars:
package:
- { iterations: '1'}
- { iterations: '2'}
- { iterations: '3'}
- { iterations: '4'}

tasks:
- debug:
msg:
- "{{ intvlan.results[{{ item.iterations }}].cde }}"
- "{{ intvlan.results[{{ item.iterations }}].cde }}"
- "{{ intvlan.results[{{ item.iterations }}].cde }}"
- "{{ intvlan.results[{{ item.iterations }}].cde }}"
loop: "{{ package }}"
我收到了如下消息:

The error was: 'list object' has no attribute '{{item.iterations}}


问题是什么?

最佳答案

在 Ansible 中,moustaches don't stack .

您遇到的其他错误包括:

  • 您的 package.*.iterations变量是 string当您的 intvlan.results变量是一个列表,因此,它期望 int相当:
    iterations: 1
    不是
    iterations: '1'
  • 您的 package.*.iterations都在 1..4 范围内当列表是零索引时,所以 0..3相当。

  • 有了这一切:
    - debug:
    msg: "{{ intvlan.results[item.iterations].cde }}"
    loop: "{{ package }}"
    vars:
    package:
    - iterations: 0
    - iterations: 1
    - iterations: 2
    - iterations: 3

    尽管如此,在我看来,这似乎是一种过于复杂的方法。
    简单的方法是:
    - debug:
    msg: "{{ item.cde }}"
    loop: "{{ intvlan.results }}"

    关于ansible - 循环调试 msg 一个 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66694553/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com