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. В противном случае рекомендуется установить модуль Pythondocker. Обратите внимание, что оба модуля не следует устанавливать одновременно. Также обратите внимание, что при одновременной установке обоих модулей и удалении одного из них другой может перестать работать, и потребуется его повторная установка. - 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