gpt4 book ai didi

list - 当一个列表可能为空时,在 Ansible 中组合两个列表

转载 作者:行者123 更新时间:2023-12-02 16:34:48 26 4
gpt4 key购买 nike

实际上,我在将 Ansible 中的两个列表合并为一个新列表时遇到了一个问题,以防一个列表可能为空或不为空。

编辑:

默认定义了一个列表

standardvolumes: '/usr/share/zoneinfo:/usr/share/zoneinfo:ro'

另一个列表可以在主机组的 group_vars.yml 中定义。

volumes:
- '/usr/data:/data'
- '/usr/data2:/data2'
- '/usr/data3:/data3'

在任务中我列出了列表:

  - name: Combine volume lists
set_fact:
volumestostart: '{{ standardvolumes|default([]) + volumes|default([]) }}'

在游戏中我得到这个错误:

TASK [do-docker-deployment : Combine volume lists] *****************************
fatal: [shs_de_postd_server1]: FAILED! => {"msg": "Unexpected templating type error occurred on ({{ standardvolumes|default([]) + volumes|default([]) }}): coercing to Unicode: need string or buffer, list found"}

所以我尝试重新定义我的默认列表:

standardvolumes: 
- '/usr/share/zoneinfo:/usr/share/zoneinfo:ro'

但随后我收到 docker 格式错误:

failed: [shs_de_postd_server1] (item={u'key': u'qit', u'value': {u'cgrouptype': u'blech', u'nexususer': u'cbs-qit-user', u'notstartable': u'no', u'nexuspassword': u'48vhw63u', u'nexusport': u'8191', u'nexuspath': u'ftg/postd-server', u'graylogip': u'tcp://10.20.30.40:12201'}}) => {"ansible_loop_var": "item", "changed": false, "item": {"key": "qit", "value": {"cgrouptype": "blech", "graylogip": "tcp://10.20.30.40:12201", "nexuspassword": "48vhw63u", "nexuspath": "ftg/postd-server", "nexusport": "8191", "nexususer": "cbs-qit-user", "notstartable": "no"}}, "msg": "Found invalid volumes mode: ro']"}

列表是容器的 docker 卷,我将从我的角色开始。

有什么好主意吗?

感谢和问候,大卫

最佳答案

试试这个

  volumes: "{{ volumes|default([]) + standardvolumes|default([]) }}"

例如

    - set_fact:
list_A: "{{ list_A|default([]) + list_B|default([]) }}"
- debug:
var: list_A

给予

  list_A: []

关于list - 当一个列表可能为空时,在 Ansible 中组合两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62830634/

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