Начальные Docker контейнеров с объединенным списком для томов с ansible - PullRequest
1 голос
/ 10 июля 2020

У меня проблема с запуском контейнера docker с томами из объединенного списка с ansible.

Один список определен по умолчанию, поэтому каждому контейнеру необходимо следующее:

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

Другой список может быть определен в group_vars.yml для группы узлов сети, но это не обязательно. Вот пример, где он определен:

  volumes:
    - '/usr/data:/data'
    - '/usr/data2:/data2'
    - '/etc/pki/ca-trust/extracted/pem:/etc/pki/ca-trust/extracted/pem'

Теперь я объединяю «стандартные тома» и «тома», чтобы использовать один список для docker развертывания:

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

как тома "необязательно определять, я использую материал по умолчанию ([]).

Это моя docker задача развертывания:

  - name: Startup a new startable Container
    docker_container:
      name: '{{ service }}'
      image: '{{ pathtoimage }}:{{ release }}'
      published_ports: '{{ publishlines }}'
      volumes:
        - '{{ volumestostart }}'
      env:
        TZ: "{{ timezone }}"
      env_file: '/etc/sysconfig/{{ service }}.list'
      etc_hosts: '{{ hostsentries }}'

Теперь, когда я развертываю контейнер , где определены "стандартные объемы" и "объемы", все нормально. Но когда я развертываю контейнер, в котором «тома» не определено, я получаю такую ​​ошибку:

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": "Error creating container: 400 Client Error: Bad Request (\"create ['/usr/share/zoneinfo: \"['/usr/share/zoneinfo\" includes invalid characters for a local volume name, only \"[a-zA-Z0-9][a-zA-Z0-9_.-]\" are allowed. If you intended to pass a host directory, use absolute path\")"}

Где разница? Я не понял. Стандартная громкость в обеих частях одинакова.

1 Ответ

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

Обнаружил ошибку, все работает нормально:

  - name: Startup a new startable Container
    docker_container:
      name: '{{ service }}'
      image: '{{ pathtoimage }}:{{ release }}'
      published_ports: '{{ publishlines }}'
      volumes: '{{ volumestostart }}'
      env:
        TZ: "{{ timezone }}"
      env_file: '/etc/sysconfig/{{ service }}.list'
      etc_hosts: '{{ hostsentries }}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...