【问题标题】:Ansible: create/concatenate list from individual items plus list from a variableAnsible:从单个项目加上来自变量的列表创建/连接列表
【发布时间】:2021-10-16 19:25:38
【问题描述】:

假设我有这个:

list1:
 - "item1"
 - "item2"

现在我想使用第一个列表来构建另一个列表

list2:
 - "item3"
 - "item4"
 + "{{ list1 }}"

这不行,行得通的是:

list2: "{{ ['item3', 'item4'] + list2 }}"

但我发现很难阅读并且很难使用 item5 等新项目进行扩展。

有没有一种方法可以用类似于第一个版本的东西创建list2

***** 更新 *****

我要创建这个列表的具体情况是在host_var文件中,比如说在host_var/my_server.yml

【问题讨论】:

  • 您的问题没有指定您尝试在哪个文件(或 ansible/jinja2 上下文)中实现该目标,因为它很重要。请特别注意如何提问指南的MCVE 部分

标签: ansible yaml


【解决方案1】:

你可以使用另一个变量

---
- hosts: localhost
  gather_facts: false

  vars:
    list1:
      - "item1"
      - "item2"

    list2:
      - "item3"
      - "item4"

    list4: "{{ list1 | default([]) + list2 | default([]) + list3 | default([]) }}"

  tasks:
    - name: debug
      debug:
        msg: "{{ list4 }}"

还有输出:

TASK [debug] ****************************************************
ok: [localhost] => {
    "msg": [
        "item1",
        "item2",
        "item3",
        "item4"
    ]
}

【讨论】:

  • 你是对的,它在可扩展性方面更好。但我希望我可以将所有内容都放在list2 的定义中。
猜你喜欢
  • 2021-03-31
  • 1970-01-01
  • 2019-09-28
  • 2015-07-14
  • 2021-04-16
  • 1970-01-01
  • 2020-06-06
  • 2021-09-08
  • 2022-08-16
相关资源
最近更新 更多