Spec-Zone.ru › Ansible 2.10

community.docker.docker_compose – Управление многоконтейнерными приложениями Docker с помощью Docker Compose.

Примечание

Этот плагин является частью коллекции community.docker (версия 1.1.0).

Для его установки используйте: ansible-galaxy collection install community.docker.

Для использования в playbook укажите: community.docker.docker_compose.

  • Обзор
  • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения

Обзор

  • Использует Docker Compose для запуска, остановки и масштабирования сервисов.
  • Работает с версиями compose 1 и 2.
  • Настройка может быть прочитана из файла docker-compose.yml или docker-compose.yaml или встроены с помощью опции definition.
  • Более подробная информация в примерах.
  • Поддерживает режим проверки.
  • Этот модуль назывался docker_service до Ansible 2.8. Использование не изменилось.

Требования

Ниже перечислены требования к хосту, на котором выполняется этот модуль.

  • API Docker >= 1.20
  • Docker SDK для Python: Обратите внимание, что модуль Python docker-py был заменен на docker (подробнее см. здесь). Для Python 2.6 необходимо использовать docker-py. В противном случае рекомендуется установить модуль Python docker. Обратите внимание, что оба модуля не должны устанавливаться одновременно. Также обратите внимание, что при установке и удалении одного из модулей, другой может перестать работать, и потребуется его переустановка.
  • Docker SDK для Python >= 1.8.0 (используйте docker-py для Python 2.6)
  • PyYAML >= 3.11
  • docker-compose >= 1.7.0

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
api_version
строка
По умолчанию:
"auto"
Версия Docker API, работающая на Docker Host.
По умолчанию используется последняя версия API, поддерживаемая Docker SDK для Python и демоном docker.
Если значение не указано в задаче, используется значение переменной среды DOCKER_API_VERSION. Если переменная среды не задана, используется значение по умолчанию.

Псевдонимы: docker_api_version
build
логическое
    Варианты:
  • нет ←
  • да
Используется с параметром state present для всегда построения образов перед запуском приложения.
Аналогично выполнению docker-compose build с опцией pull.
Образы будут перестроены только если Docker обнаружит изменения в Dockerfile или содержимом каталога сборки.
Используйте опцию nocache, чтобы проигнорировать кэш образов при построении.
Если существующий образ заменяется, сервисы, использующие этот образ, будут пересозданы, если не установлено recreate never.
ca_cert
путь
Используйте сертификат CA при проверке сервера, предоставив путь к файлу сертификата CA.
Если значение не указано в задаче, и переменная среды DOCKER_CERT_PATH задана, используется файл ca.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH.

Псевдонимы: tls_ca_cert, cacert_path
client_cert
путь
Путь к файлу TLS-сертификата клиента.
Если значение не указано в задаче, и переменная среды DOCKER_CERT_PATH задана, используется файл cert.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH.

Псевдонимы: tls_client_cert, cert_path
client_key
путь
Путь к файлу TLS-ключа клиента.
Если значение не указано в задаче, и переменная среды DOCKER_CERT_PATH задана, используется файл key.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH.

Псевдонимы: tls_client_key, key_path
debug
логическое
    Варианты:
  • нет ←
  • да
Режим отладки
definition
словарь
Файл Compose, описывающий один или несколько сервисов, сетей и томов.
Взаимоисключающее с project_src и files.
dependencies
логическое
    Варианты:
  • нет
  • да ←
Когда state является present, укажите, следует ли включать связанные сервисы.
docker_host
строка
По умолчанию:
"unix://var/run/docker.sock"
URL или путь к Unix-сокету, используемый для подключения к Docker API. Для подключения к удалённому хосту, укажите строку TCP-соединения. Например, tcp://192.0.2.23:2376. Если TLS используется для шифрования соединения, модуль автоматически заменит tcp в URL-адресе соединения на https.
Если значение не указано в задаче, используется значение переменной среды DOCKER_HOST. Если переменная среды не задана, используется значение по умолчанию.

Псевдонимы: docker_url
files
список / элементы=путь
Список имён файлов Compose, относящихся к project_src. Переопределяет docker-compose.yml или docker-compose.yaml.
Файлы загружаются и объединяются в указанном порядке.
hostname_check
логическое
    Варианты:
  • нет ←
  • да
Следует ли проверять имя хоста демона Docker по имени, предоставленному в сертификате клиента?
nocache
логическое
    Варианты:
  • нет ←
  • да
Используется с опцией build, чтобы проигнорировать кэш во время процесса построения образа.
project_name
строка
Укажите имя проекта. Если не указано, имя проекта берётся из базового имени project_src.
Требуется, когда указано definition.
project_src
путь
Путь к каталогу, содержащему файл docker-compose.yml или docker-compose.yaml.
Взаимоисключающее с definition.
Требуется, когда не указано definition.
pull
логическое
    Варианты:
  • нет ←
  • да
Используется с параметром state present для всегда скачивания образов перед запуском приложения.
Аналогично выполнению docker-compose pull.
Когда скачивается новый образ, сервисы, использующие этот образ, будут пересозданы, если recreate не never.
recreate
строка
    Варианты:
  • всегда
  • никогда
  • умный ←
По умолчанию контейнеры будут пересозданы, если их конфигурация отличается от определения сервиса.
Установка в never игнорирует различия в конфигурации и оставляет существующие контейнеры без изменений.
Установка в always принудительно пересоздаёт все существующие контейнеры.
remove_images
строка
    Варианты:
  • все
  • локальные
Используется с параметром state absent для удаления всех образов или только локальных образов.
remove_orphans
логическое
    Варианты:
  • нет ←
  • да
Удалить контейнеры для сервисов, не определённых в файле Compose.
remove_volumes
логическое
    Варианты:
  • нет ←
  • да
Используйте с параметром state absent для удаления томов данных.
restarted
логическое
    Варианты:
  • нет ←
  • да
Используйте с параметром state present для перезапуска всех контейнеров, определённых в файле Compose.
Если определено services, будут перезапущены только указанные там контейнеры.
scale
словарь
Когда state равно present, масштабировать сервисы. Укажите словарь пар "ключ-значение", где ключ - имя сервиса, а значение - целое число, количество контейнеров.
services
список / элементы=строка
Когда state равно present, запустить docker-compose up соответственно docker-compose stop (с stopped) или docker-compose restart (с restarted) для подмножества сервисов.
Если пусто, что является значением по умолчанию, операция будет выполнена для всех сервисов, определённых в файле Compose (или в строчном definition).
ssl_version
строка
Укажите допустимый номер версии SSL. Значение по умолчанию определяется модулем ssl.py.
Если значение не указано в задаче, используется значение переменной среды DOCKER_SSL_VERSION.
state
строка
    Варианты:
  • absent
  • present ←
Желаемое состояние проекта.
Указание present эквивалентно выполнению docker-compose up соответственно docker-compose stop (с stopped) или docker-compose restart (с restarted).
Указание absent эквивалентно выполнению docker-compose down.
stopped
логическое
    Варианты:
  • нет ←
  • да
Используйте с параметром state present для остановки всех контейнеров, определённых в файле Compose.
Если определено services, будут остановлены только указанные там контейнеры.
timeout
целое число
По умолчанию:
10
Время ожидания в секундах для завершения контейнера при подключении или при уже запущенных контейнерах.
tls
логическое
    Варианты:
  • нет ←
  • да
Обеспечить безопасность соединения с API, используя TLS без проверки подлинности сервера Docker Host. Обратите внимание, что если validate_certs также установлено в yes, оно будет иметь приоритет.
Если значение не указано в задаче, используется значение переменной среды DOCKER_TLS. Если переменная среды не задана, используется значение по умолчанию.
tls_hostname
строка
По умолчанию:
"localhost"
При проверке подлинности сервера Docker Host укажите ожидаемое имя сервера.
Если значение не указано в задаче, используется значение переменной среды DOCKER_TLS_HOSTNAME. Если переменная среды не задана, используется значение по умолчанию.
validate_certs
boolean
    Выбранные значения:
  • нет ←
  • да
Обеспечьте безопасность подключения к API с использованием TLS и проверьте подлинность сервера Docker хоста.
Если значение не указано в задаче, будет использовано значение переменной среды DOCKER_TLS_VERIFY. Если переменная среды не задана, будет использовано значение по умолчанию.

псевдонимы: tls_verify

Примечания

Примечание

  • Подключитесь к демону Docker, предоставив параметры с каждой задачей или определив переменные среды. Вы можете определить DOCKER_HOST, DOCKER_TLS_HOSTNAME, DOCKER_API_VERSION, DOCKER_CERT_PATH, DOCKER_SSL_VERSION, DOCKER_TLS, DOCKER_TLS_VERIFY и DOCKER_TIMEOUT. Если вы используете docker machine, запустите скрипт, поставляемый с продуктом, который настраивает среду. Он установит эти переменные за вас. Дополнительные сведения см. в https://docs.docker.com/machine/reference/env/.
  • При подключении к демону Docker с TLS, вам может потребоваться установить дополнительные пакеты Python. Для Docker SDK для Python версии 2.4 или более поздней это можно сделать, установив docker[tls] с помощью ansible.builtin.pip.
  • Обратите внимание, что Docker SDK для Python позволяет указать путь к конфигурации Docker только для очень немногих функций. В общем случае он будет использовать $HOME/.docker/config.json, если переменная среды DOCKER_CONFIG не указана, и $DOCKER_CONFIG/config.json в противном случае.
  • Этот модуль использует Docker SDK для Python для связи с демоном Docker.

Примеры

# Examples use the django example at https://docs.docker.com/compose/django. Follow it to create the
# flask directory

- name: Run using a project directory
  hosts: localhost
  gather_facts: no
  tasks:
    - name: Tear down existing services
      community.docker.docker_compose:
        project_src: flask
        state: absent

    - name: Create and start services
      community.docker.docker_compose:
        project_src: flask
      register: output

    - ansible.builtin.debug:
        var: output

    - name: Run `docker-compose up` again
      community.docker.docker_compose:
        project_src: flask
        build: no
      register: output

    - ansible.builtin.debug:
        var: output

    - ansible.builtin.assert:
        that: "not output.changed "

    - name: Stop all services
      community.docker.docker_compose:
        project_src: flask
        build: no
        stopped: yes
      register: output

    - ansible.builtin.debug:
        var: output

    - ansible.builtin.assert:
        that:
          - "not web.flask_web_1.state.running"
          - "not db.flask_db_1.state.running"

    - name: Restart services
      community.docker.docker_compose:
        project_src: flask
        build: no
        restarted: yes
      register: output

    - ansible.builtin.debug:
        var: output

    - ansible.builtin.assert:
        that:
          - "web.flask_web_1.state.running"
          - "db.flask_db_1.state.running"

- name: Scale the web service to 2
  hosts: localhost
  gather_facts: no
  tasks:
    - community.docker.docker_compose:
        project_src: flask
        scale:
          web: 2
      register: output

    - ansible.builtin.debug:
        var: output

- name: Run with inline v2 compose
  hosts: localhost
  gather_facts: no
  tasks:
    - community.docker.docker_compose:
        project_src: flask
        state: absent

    - community.docker.docker_compose:
        project_name: flask
        definition:
          version: '2'
          services:
            db:
              image: postgres
            web:
              build: "{{ playbook_dir }}/flask"
              command: "python manage.py runserver 0.0.0.0:8000"
              volumes:
                - "{{ playbook_dir }}/flask:/code"
              ports:
                - "8000:8000"
              depends_on:
                - db
      register: output

    - ansible.builtin.debug:
        var: output

    - ansible.builtin.assert:
        that:
          - "web.flask_web_1.state.running"
          - "db.flask_db_1.state.running"

- name: Run with inline v1 compose
  hosts: localhost
  gather_facts: no
  tasks:
    - community.docker.docker_compose:
        project_src: flask
        state: absent

    - community.docker.docker_compose:
        project_name: flask
        definition:
            db:
              image: postgres
            web:
              build: "{{ playbook_dir }}/flask"
              command: "python manage.py runserver 0.0.0.0:8000"
              volumes:
                - "{{ playbook_dir }}/flask:/code"
              ports:
                - "8000:8000"
              links:
                - db
      register: output

    - ansible.builtin.debug:
        var: output

    - ansible.builtin.assert:
        that:
          - "web.flask_web_1.state.running"
          - "db.flask_db_1.state.running"

Возвращаемые значения

Общие возвращаемые значения описаны в здесь, следующие поля уникальны для этого модуля:

Ключ Возвращаемое значение Описание
actions
complex
при работе в режиме проверки или если debug yes
Предоставляет действия, которые необходимо выполнить для каждого сервиса, как определено в compose.

service_name
complex
всегда
Имя сервиса.

action
list / elements=string
всегда
Описание действия, которое необходимо выполнить над контейнерами сервиса.

id
string
всегда
Полный идентификатор контейнера

name
string
всегда
Имя контейнера

short_id
string
всегда
Короткий идентификатор контейнера

built_image
complex
при создании образа
Предоставляет сведения об изображении при создании нового образа для сервиса.

id
string
всегда
Хэш образа

name
string
всегда
Имя образа

pulled_image
complex
при скачивании образа
Предоставляет сведения об изображении при скачивании нового образа для сервиса.

id
string
всегда
Хэш образа

name
string
всегда
Имя образа

services
complex
успех
Словарь, сопоставляющий имя сервиса со словарем контейнеров.

container_name
complex
успех
Имя контейнера. Формат project_service_#.

cmd
list / elements=string
успех
Одна или несколько команд, которые должны быть выполнены в контейнере.

Пример:
['postgres']
image
string
успех
Имя образа, из которого был создан контейнер.

Пример:
postgres
labels
dictionary
успех
Метаданные, назначенные контейнеру.

Пример:
{'...': None}
networks
list / elements=dictionary
успех
Содержит словарь для каждой сети, членом которой является контейнер.

aliases
list / elements=string
успех
Псевдонимы, назначенные контейнеру сетью.

Пример:
['db']
globalIPv6
string
успех
IPv6-адрес, назначенный контейнеру.

globalIPv6PrefixLen
integer
успех
Длина префикса IPv6-подсети.

IPAddress
string
успех
IP-адрес, назначенный контейнеру.

Пример:
172.17.0.2
IPPrefixLen
integer
успех
Количество битов, используемых подсетью.

Пример:
16
links
list / elements=string
успех
Список имен контейнеров, к которым связан этот контейнер.

macAddress
string
успех
MAC-адрес, назначенный виртуальному сетевому интерфейсу.

Пример:
02:42:ac:11:00:02
state
dictionary
успех
Информация о текущем состоянии контейнера.

running
boolean
успех
Запущен ли контейнер с работающим процессом.

Пример:
True
status
string
успех
Описание состояния выполнения.

Пример:
running


Авторы

  • Chris Houseknecht (@chouseknecht)

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/docker/docker_compose_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API