Spec-Zone.ru › Ansible 2.9

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

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

Краткое описание

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

Псевдонимы: docker_service

Требования

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

  • 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 хосте.
По умолчанию используется последняя версия API, поддерживаемая Docker SDK для Python и демоном docker.
Если значение не указано в задаче, используется значение переменной окружения DOCKER_API_VERSION. Если переменная окружения не задана, используется значение по умолчанию.

псевдонимы: docker_api_version
build
логический тип
    Варианты:
  • нет ←
  • да
Используется с параметром state present для всегда построения образов перед запуском приложения.
То же самое, что и выполнение docker-compose build с опцией pull.
Образы будут перестроены только в случае изменения 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.
остановлен
boolean
    Варианты:
  • нет ←
  • да
Используется с параметром state present для остановки всех контейнеров, определённых в файле Compose.
Если параметр services определён, остановятся только перечисленные там контейнеры.
timeout
целое число
По умолчанию:
10
Время ожидания (в секундах) для завершения работы контейнера при подключении или когда контейнеры уже запущены.
tls
boolean
    Варианты:
  • нет ←
  • да
Защитите соединение с API, используя TLS без проверки подлинности сервера Docker host. Обратите внимание, что если параметр validate_certs также установлен в значение yes, он будет иметь приоритет.
Если значение не указано в задаче, будет использовано значение переменной среды DOCKER_TLS. Если переменная среды не задана, будет использовано значение по умолчанию.
tls_hostname
строка
По умолчанию:
"localhost"
При проверке подлинности сервера Docker Host укажите ожидаемое имя сервера.
Если значение не указано в задаче, будет использовано значение переменной среды DOCKER_TLS_HOSTNAME. Если переменная среды не задана, будет использовано значение по умолчанию.
validate_certs
boolean
    Варианты:
  • нет ←
  • да
Защитите соединение с API, используя TLS и проверяя подлинность сервера Docker host.
Если значение не указано в задаче, будет использовано значение переменной среды 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] с помощью pip.
  • Обратите внимание, что Docker SDK для Python позволяет указывать путь к конфигурации Docker только для очень немногих функций. В целом, он будет использовать $HOME/.docker/config.json если переменная среды DOCKER_CONFIG не указана, и использовать $DOCKER_CONFIG/config.json в противном случае.

Примеры

# 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
      docker_compose:
        project_src: flask
        state: absent

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

    - debug:
        var: output

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

    - debug:
        var: output

    - assert:
        that: "not output.changed "

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

    - debug:
        var: output

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

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

    - debug:
        var: output

    - 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:
    - docker_compose:
        project_src: flask
        scale:
          web: 2
      register: output

    - debug:
        var: output

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

    - 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

    - debug:
        var: output

    - 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:
    - docker_compose:
        project_src: flask
        state: absent

    - 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

    - debug:
        var: output

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

Значения возврата

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

Ключ Возвращаемое значение Описание
actions
complex
при проверке или отладке 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
успех
Словарь, сопоставляющий имя сервиса с словарем контейнеров.
Обратите внимание, что факты являются частью зарегистрированных переменных с Ansible 2.8. По соображениям совместимости факты также доступны напрямую. Имя сервиса — это переменная, с помощью которой можно получить доступ к словарю контейнеров. Обратите внимание, что возвращаемые факты будут удалены в Ansible 2.12.

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

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

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

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

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

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

globalIPv6
string
успех
Адрес IPv6, назначенный контейнеру.

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

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

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

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

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

state
dictionary
успех
Информация о текущем состоянии контейнера.

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

status
string
успех
Описание состояния запуска.



Статус

  • Гарантируется, что у данного модуля не будет обратной совместимости. [preview]
  • Данный модуль поддерживается сообществом Ansible. [community]

Авторы

  • 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.9/modules/docker_compose_module.html

Spec-Zone.ru

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