首页 > 解决方案 > Ansible - 在循环中附加一个字符串 var 本身

问题描述

我在循环中附加一个字符串 var 本身时遇到问题。

喜欢

var: 
  a: ""

var:
  package:
     - {{ iterations: 0 , newvar : b }}
     - {{ iterations: 1 , newvar : c }}
     - {{ iterations: 2 , newvar : d }}
     - {{ iterations: 3 , newvar : e }}
- set_fact:
    a: a + {{newvar}} 
  loop: {{ package }}

我预计答案应该是 a = bcde

但我在 set_fact 中也有代码 if-else。(它使代码更复杂)代码如下:


 var:
   portq: ""

 var:
   package: 
     - {{ iterations: 0 }}
     - {{ iterations: 1 }}
     - {{ iterations: 2 }}
     - {{ iterations: 3 }}


- set_fact:

      portq: "{% if q_port_result.results[item.iterations].cde != 'unknown' %}{{ portq + q_port_result.results[item.iterations].cde}}{% else %}{% endif %}"

      loop: "{{ package }}"

我的问题是如何添加带有新变量的“portq”。

总是提示错误“The error was: 'portq' is undefined\n\n”

非常感谢!

标签: ansible

解决方案


- name: test
  hosts: localhost
  become: false
  vars:
    package:
      - iterations: 0
        newvar: b
      - iterations: 1
        newvar: c
      - iterations: 2
        newvar: d
      - iterations: 3
        newvar: e
  tasks:
    - set_fact:
        a: "{{ a | default('') + item.newvar }}"
      loop: "{{ package }}"
    - debug: var=a

推荐阅读