Объедините два списка в Ansible, если один список может быть пустым - PullRequest
0 голосов
/ 10 июля 2020

на самом деле у меня проблема с объединением двух списков в Ansible в один новый, если один список может быть пустым или нет.

EDIT:

Один список определен в по умолчанию

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 томов для контейнера, который я начну со своей роли.

Есть хорошие идеи?

Спасибо и привет, Дэвид

1 Ответ

1 голос
/ 10 июля 2020

Попробуйте это

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

Например

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

давайте

  list_A: []
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...