Ansible - 在循环中附加字符串 var 本身

Jac*_*cky 4 ansible

我在循环中附加字符串 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 }}
Run Code Online (Sandbox Code Playgroud)

我预计答案应该是 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 }}"

Run Code Online (Sandbox Code Playgroud)

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

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

非常感谢!

Jir*_*i B 5

- 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
Run Code Online (Sandbox Code Playgroud)