Spec-Zone.ru › Ansible 2.11

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

Примечание

Этот плагин входит в коллекцию community.docker (версия 1.2.2).

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

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

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

Описание

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

Требования

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

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
api_version
строка
По умолчанию:
"auto"
Версия Docker API, работающая на Docker хосте.
По умолчанию используется последняя версия 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
строка
    Варианты:
  • отсутствует
  • присутствует ←
Желаемое состояние проекта.
Указание 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
    Варианты:
  • no ←
  • yes
Защитить соединение с 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
список / элементы=строка
всегда
Дескриптивное имя действия, которое должно быть выполнено над контейнерами сервиса.

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

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

short_id
строка
всегда
Краткое имя контейнера

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

id
строка
всегда
Хэш изображения

name
строка
всегда
Имя изображения

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

id
строка
всегда
Хэш изображения

name
строка
всегда
Имя изображения

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

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

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

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

Пример:
postgres
labels
словарь
успешно
Метаданные, присвоенные контейнеру.

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

aliases
список / элементы=строка
успешно
Псевдонимы, назначенные контейнеру сетью.

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

globalIPv6PrefixLen
целое число
успешно
Длина префикса подсети IPv6.

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

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

Пример:
16
links
список / элементы=строка
успешно
Список имён контейнеров, к которым этот контейнер привязан.

macAddress
строка
успешно
MAC-адрес, назначенный виртуальной сетевой карте.

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

running
boolean
успешно
Запущен ли контейнер с активным процессом.

Пример:
True
status
строка
успешно
Описание состояния запуска.

Пример:
running


Авторы

  • Крис Хаускнект (@chouseknecht)

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

Spec-Zone.ru

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