Как смонтировать отдельные файлы с помощью ansible?

У меня есть каталог на моем удаленном хосте, который я хочу смонтировать в док-контейнер. Проблема с этим каталогом заключается в том, что его файлы и он сам нуждаются в определенном владельце и группе. Во-первых, я попробовал:

    ...some code...

        - name: setup jitsi-meet volumes
          file:
            path: "{{ item }}"
            state: directory
            owner: 999   # jvb / jicofo in videobrige / jicofo container
            group: 1000  # jitsi in videobrige / jicofo container
            mode: 0755
          with_items:
            - "{{ CONFIG }}/jicofo"
            - "{{ CONFIG }}/jvb"

    ...some code...

        # Video bridge
        - name: run jitsi-meet jvb image
          docker_container:
            name: jitsi-jvb
            ........
            volumes:
              "{{ CONFIG }}/jvb:/config"
            ........

    ...some code...

Ansible рекурсивно создает тома с требуемым владельцем и группой. Итак, {{ CONFIG }}/jvb и его содержимое имеют 999:1000 (jvb:jitsi). Однако по какой-то причине во время монтирования только /config имеет требуемого владельца и группу (999:1000 или jvb:jitsi), в то время как содержимое /config по-прежнему имеет root:root. Затем я попытался смонтировать файл за файлом (см. ниже), но ansible не позволил мне это сделать. Кто-нибудь знает, как это исправить?

# Video bridge
- name: run jitsi-meet jvb image
  docker_container:
    name: jitsi-jvb
    ..........
    volumes:
      "{{ CONFIG }}/jvb:/config"
      "{{ CONFIG }}/jvb/logging.properties:/config/logging.properties"
      "{{ CONFIG }}/jvb/sip-communicator.properties:/config/sip-communicator.properties"

Ошибка была:

ERROR! Syntax Error while loading YAML.
did not find expected key

The error appears to have been in '/FAKEPATH/docker-container-jitsi.yml': line 56, column 7, but may be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

      "{{ CONFIG }}/jvb:/config"
      "{{ CONFIG }}/jvb/logging.properties:/config/logging.properties"
      ^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

person Lavair    schedule 20.09.2019    source источник
comment
это результирующая проблема github.com/jitsi/docker-jitsi-meet/issues /5 .. но мне нужно подключиться к удаленной машине по ssh как root. Запуск контейнера от имени обычного пользователя невозможен ^^'   -  person Lavair    schedule 20.09.2019


Ответы (1)


Это кажется мне простой проблемой синтаксиса. Тире для вашего VolumeList отсутствуют:

...
volumes:
 - "{{ CONFIG }}/jvb:/config"
 - "{{ CONFIG }}/jvb/logging.properties:/config/logging.properties"
 - "{{ CONFIG }}/jvb/sip-communicator.properties:/config/sip-communicator.properties"
...
person Patrick Pötz    schedule 20.09.2019
comment
Для дальнейшей справки: этот ответ решил мой вопрос, но не саму проблему. Чтобы правильно установить владельца и группы этих специальных изображений, принадлежащих этим контейнерам, необходим другой подход. Либо запустите образ от имени обычного пользователя, либо, если это невозможно, измените разрешения вручную, перезапустите контейнеры, извлеките файлы (logging.properties и sip-communicator.properties) на локальный компьютер и включите задачу копирования в файл . yaml с необходимыми значениями владельца/группы. Если вы запустите образы сейчас, они не создадут эти файлы, потому что они уже есть. - person Lavair; 20.09.2019