Модуль community.docker.docker_compose – Управление многоконтейнерными приложениями Docker с помощью Docker Compose V1
Примечание
Этот модуль является частью коллекции community.docker (версия 3.13.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить её установку, выполните ansible-galaxy collection list.
Чтобы установить её, используйте: ansible-galaxy collection install community.docker. Для использования этого модуля необходимы дополнительные требования. Подробности см. в разделе Требования.
Чтобы использовать его в книге задач, укажите: community.docker.docker_compose.
- УСТАРЕЛО
- Описание
- Требования
- Параметры
- Атрибуты
- Примечания
- См. также
- Примеры
- Возвращаемые значения
- Статус
УСТАРЕЛО
- Удалено в:
-
версии 4.0.0
- Почему:
-
Этот модуль использует docker-compose v1, который достиг конца жизненного цикла в июле 2022 года.
- Альтернатива:
-
Перейдите на community.docker.docker_compose_v2
Описание
- Использует Docker Compose для запуска, остановки и масштабирования служб. Этот модуль требует docker-compose < 2.0.0. Для использования современного плагина Docker Compose CLI используйте модуль community.docker.docker_compose_v2.
- Конфигурацию можно прочитать из файла
docker-compose.ymlилиdocker-compose.yamlили встрочить, используя опциюdefinition. - Подробности см. в примерах.
- Поддерживает режим проверки.
- Этот модуль назывался
docker_serviceдо Ansible 2.8. Использование не изменилось.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- Docker API >= 1.25
- Docker SDK для Python: Обратите внимание, что модуль Python docker-py был заменён на docker (подробнее см. здесь). Обратите внимание, что оба модуля *не должны* устанавливаться одновременно. Также обратите внимание, что при установке и последующем удалении одного из модулей другой может перестать работать, и потребуется его повторная установка.
- Docker SDK для Python >= 1.8.0, < 7. Docker SDK для Python 7+ несовместим с docker-compose v1.
- PyYAML >= 3.11
- docker-compose >= 1.7.0, < 2.0.0
Параметры
Параметр | Комментарии |
|---|---|
api_version aliases: docker_api_version string | Версия Docker API, работающего на Docker Host. По умолчанию используется последняя версия API, поддерживаемая Docker SDK для Python и демоном docker. Если значение не указано в задаче, вместо него будет использовано значение переменной среды Default: |
build boolean | Используйте с Аналогично запуску Образы будут пересобраны только в том случае, если Docker обнаружит изменение в Dockerfile или содержимом каталога сборки. Используйте параметр Если существующий образ заменен, службы, использующие этот образ, будут пересозданы, если только не Choices:
|
ca_path aliases: ca_cert, tls_ca_cert, cacert_path path | Используйте сертификат центра сертификации при выполнении проверки сервера, указав путь к файлу сертификата центра сертификации. Если значение не указано в задаче и переменная среды Этот параметр назывался |
client_cert aliases: tls_client_cert, cert_path path | Путь к файлу клиентского сертификата TLS. Если значение не указано в задаче и переменная среды |
client_key aliases: tls_client_key, key_path path | Путь к файлу клиентского ключа TLS. Если значение не указано в задаче и переменная среды |
debug boolean | Режим отладки Choices:
|
definition dictionary | Файл Compose, описывающий одну или несколько служб, сетей и томов. Взаимоисключающий с |
dependencies boolean | Когда Choices:
|
docker_host aliases: docker_url string | URL или путь сокета Unix, используемый для подключения к Docker API. Для подключения к удаленному хосту укажите строку подключения TCP. Например, Если значение не указано в задаче, вместо него будет использовано значение переменной среды Default: |
env_file path added in community.docker 1.9.0 | По умолчанию файлы среды загружаются из файла
Путь указывается относительно каталога Требуется версия Примечание: версии |
files list / elements=path | Список имен файлов Compose относительно Файлы загружаются и объединяются в указанном порядке. |
hostname_check boolean | Проверять ли имя хоста демона Docker на соответствие имени, указанному в клиентском сертификате. Choices:
|
nocache boolean | Использовать с опцией Варианты:
|
profiles список / элементы=строка добавлен в community.docker 1.8.0 | Список профилей для включения при запуске служб. Эквивалентно Требуется версия |
project_name строка | Укажите имя проекта. Если не указано, имя проекта берётся из базового имени Требуется, когда указан |
project_src путь | Путь к каталогу, содержащему файл Взаимоисключительно с Требуется, если не указан |
pull boolean | Использовать с То же, что и выполнение При подтягивании нового образа, службы, использующие этот образ, будут пересозданы, если Варианты:
|
recreate строка | По умолчанию контейнеры будут пересозданы, если их конфигурация отличается от определения службы. Установка в Установка в Варианты:
|
remove_images строка | |
remove_orphans boolean | Удалить контейнеры для служб, не определённых в файле Compose. Варианты:
|
remove_volumes boolean | |
restarted boolean | Использовать с Если Варианты:
|
scale словарь | Когда |
services список / элементы=строка | При Если пусто, что является значением по умолчанию, операция будет выполнена на всех службах, определённых в файле Compose (или встроенном |
ssl_version строка | Укажите допустимый номер версии SSL. Значение по умолчанию определяется модулем SSL Python. Если значение не указано в задаче, вместо этого будет использовано значение переменной окружения Примечание: эта опция больше не поддерживается для Docker SDK for Python 7.0.0+. Указание её с Docker SDK for Python 7.0.0 или более поздней версией приведёт к ошибке. |
state строка | Желаемое состояние проекта. Указание Указание Варианты:
|
stopped boolean | Использовать с Если Требуется версия Варианты:
|
timeout integer | Время ожидания в секундах для завершения контейнера при подключении или когда контейнеры уже запущены. По умолчанию |
tls boolean | Защитить подключение к API с помощью TLS без проверки подлинности сервера Docker. Обратите внимание, что если Если значение не указано в задании, будет использовано значение переменной среды Варианты:
|
tls_hostname string | При проверке подлинности сервера Docker укажите ожидаемое имя сервера. Если значение не указано в задании, будет использовано значение переменной среды Обратите внимание, что данному параметру было установлено значение по умолчанию Примечание: этот параметр больше не поддерживается для Docker SDK для Python 7.0.0+. Указание его с Docker SDK для Python 7.0.0 или более поздней версией приведет к ошибке. |
use_ssh_client boolean added in community.docker 1.5.0 | В настоящее время игнорируется для данного модуля, но в будущем может быть внезапно поддержан. Варианты:
|
validate_certs aliases: tls_verify boolean | Защитить подключение к API с помощью TLS и проверки подлинности сервера Docker. Если значение не указано в задании, будет использовано значение переменной среды Варианты:
|
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
action_group | Группы действий: community.docker.docker, docker | Используйте |
check_mode | Поддержка: полная | Может работать в режиме |
diff_mode | Поддержка: отсутствует | Возвращает детали о том, что изменилось (или, возможно, требует изменения в |
Примечания
Примечание
- Подключение к демону 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.
См. также
См. также
- community.docker.docker_compose_v2
-
Управление многоконтейнерными приложениями Docker с помощью плагина Docker Compose CLI.
Примеры
# 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: false
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
- name: Show results
ansible.builtin.debug:
var: output
- name: Run `docker-compose up` again
community.docker.docker_compose:
project_src: flask
build: false
register: output
- name: Show results
ansible.builtin.debug:
var: output
- ansible.builtin.assert:
that: not output.changed
- name: Stop all services
community.docker.docker_compose:
project_src: flask
build: false
stopped: true
register: output
- name: Show results
ansible.builtin.debug:
var: output
- name: Verify that web and db services are not running
ansible.builtin.assert:
that:
- "not output.services.web.flask_web_1.state.running"
- "not output.services.db.flask_db_1.state.running"
- name: Restart services
community.docker.docker_compose:
project_src: flask
build: false
restarted: true
register: output
- name: Show results
ansible.builtin.debug:
var: output
- name: Verify that web and db services are running
ansible.builtin.assert:
that:
- "output.services.web.flask_web_1.state.running"
- "output.services.db.flask_db_1.state.running"
- name: Scale the web service to 2
hosts: localhost
gather_facts: false
tasks:
- name: Scale the web service to two instances
community.docker.docker_compose:
project_src: flask
scale:
web: 2
register: output
- name: Show results
ansible.builtin.debug:
var: output
- name: Run with inline Compose file version 2
# https://docs.docker.com/compose/compose-file/compose-file-v2/
hosts: localhost
gather_facts: false
tasks:
- name: Remove flask project
community.docker.docker_compose:
project_src: flask
state: absent
- name: Start flask project with inline definition
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
- name: Show results
ansible.builtin.debug:
var: output
- name: Verify that the db and web services are running
ansible.builtin.assert:
that:
- "output.services.web.flask_web_1.state.running"
- "output.services.db.flask_db_1.state.running"
- name: Run with inline Compose file version 1
# https://docs.docker.com/compose/compose-file/compose-file-v1/
hosts: localhost
gather_facts: false
tasks:
- name: Remove flask project
community.docker.docker_compose:
project_src: flask
state: absent
- name: Start flask project with inline definition
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
- name: Show results
ansible.builtin.debug:
var: output
- name: Verify that web and db services are running
ansible.builtin.assert:
that:
- "output.services.web.flask_web_1.state.running"
- "output.services.db.flask_db_1.state.running"
Значения возврата
Общие значения возврата описаны здесь. Следующие поля уникальны для этого модуля:
Ключ | Описание |
|---|---|
действия сложное | Предоставляет действия, которые необходимо выполнить для каждого сервиса, как определено compose. Возвращается: при проверке или |
|
имя_сервиса сложное |
Имя сервиса. Возвращается: всегда |
|
действие список / элементы=строка |
Дескриптивное имя действия, которое должно быть выполнено для контейнеров сервиса. Возвращается: всегда |
|
id строка |
Полный идентификатор контейнера Возвращается: всегда |
|
имя строка |
Имя контейнера Возвращается: всегда |
|
короткий_id строка |
Кратко обозначенный идентификатор контейнера Возвращается: всегда |
|
сборка_изображения сложное |
Предоставляет детали изображения, когда для сервиса создается новое изображение. Возвращается: при сборке изображения |
|
id строка |
Хеш изображения Возвращается: всегда |
|
имя строка |
Имя изображения Возвращается: всегда |
|
скачанное_изображение сложное |
Предоставляет детали изображения, когда для сервиса скачивается новое изображение. Возвращается: при скачивании изображения |
|
id строка |
Хеш изображения Возвращается: всегда |
|
имя строка |
Имя изображения Возвращается: всегда |
сервисы сложное | Словарь, сопоставляющий имя сервиса со словарем контейнеров. Возвращается: успешно |
|
имя_контейнера сложное |
Имя контейнера. Формат Возвращается: успешно |
|
cmd список / элементы=строка |
Один или более команд, которые должны быть выполнены в контейнере. Возвращается: успешно Пример: |
|
изображение строка |
Имя изображения, из которого был создан контейнер. Возвращается: успешно Пример: |
|
метки словарь |
Метаданные, назначенные контейнеру. Возвращается: успешно Пример: |
|
сети список / элементы=словарь |
Содержит словарь для каждой сети, членом которой является контейнер. Возвращается: успешно |
|
псевдонимы список / элементы=строка |
Псевдонимы, назначенные контейнеру сетью. Возвращается: успешно Пример: |
|
globalIPv6 строка |
IPv6-адрес, назначенный контейнеру. Возвращается: успешно Пример: |
|
globalIPv6PrefixLen целое число |
Длина подсети IPv6. Возвращаемое значение: success Пример: |
|
IPAddress строка |
IP-адрес, назначенный контейнеру. Возвращаемое значение: success Пример: |
|
IPPrefixLen целое число |
Количество бит, используемых подсетью. Возвращаемое значение: success Пример: |
|
links список / элементы=строка |
Список имён контейнеров, к которым связан этот контейнер. Возвращаемое значение: success |
|
macAddress строка |
MAC-адрес, назначенный виртуальной сетевой карте. Возвращаемое значение: success Пример: |
|
state словарь |
Информация о текущем состоянии контейнера. Возвращаемое значение: success |
|
running логическое |
Запущен ли контейнер с работающим процессом. Возвращаемое значение: success Пример: |
|
status строка |
Описание состояния выполнения. Возвращаемое значение: success Пример: |
Статус
- Этот модуль будет удалён в версии 4.0.0. [устаревший]
- Для получения дополнительной информации см. УСТАРЕВШИЙ.
Ссылки на коллекции
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/docker/docker_compose_module.html