docker_service - Управление службами и контейнерами Docker.
Новое в версии 2.1.
Описание
- Использует docker compose для запуска, остановки и масштабирования служб.
- Работает с версиями compose 1 и 2.
- Compose можно прочитать из файла docker-compose.yml (или .yaml) или встроить с помощью опции
definition. - Дополнительные сведения см. в примерах.
- Поддерживает режим проверки.
Требования
Ниже перечислены требования, которые должны быть выполнены на хосте, на котором выполняется этот модуль.
- python >= 2.6
- docker-compose >= 1.7.0
- Docker API >= 1.20
- PyYAML >= 3.11
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| api_version | По умолчанию: значение по умолчанию, предоставляемое docker-py | Версия Docker API, работающая на хосте Docker. По умолчанию используется последняя версия API, поддерживаемая docker-py. псевдонимы: docker_api_version |
| build |
| Используется со значением present для всегда построения изображений перед запуском приложения. Аналогично выполнению docker-compose build с опцией pull. Изображения будут перестроены только в том случае, если Docker обнаружит изменения в файле Dockerfile или содержимом каталога сборки. Используйте опцию nocache для игнорирования кэша изображений при выполнении сборки.Если существующее изображение заменяется, службы, использующие изображение, будут пересозданы, если recreate не равно never. |
| cacert_path | По умолчанию: None | Использование сертификата CA при проверке сервера путем предоставления пути к файлу сертификата CA. псевдонимы: tls_ca_cert |
| cert_path | По умолчанию: None | Путь к файлу TLS-сертификата клиента. псевдонимы: tls_client_cert |
| debug |
| Включить действия в возвращаемые значения. |
| definition | Предоставление docker-compose yaml, описывающего одну или несколько служб, сетей и томов. Взаимоисключающие опции с 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_url |
| files | Список имён файлов относительно project_src. Переопределяет docker-compose.yml или docker-compose.yaml.Файлы загружаются и объединяются в заданном порядке. | |
| hostname_check |
| Проверка имени хоста демона Docker на соответствие имени, предоставленному в сертификате клиента. |
| key_path | По умолчанию: None | Путь к файлу закрытого ключа клиента TLS. псевдонимы: tls_client_key |
| nocache (добавлено в 2.2) |
| Используйте с опцией build, чтобы пропустить кэш во время процесса построения изображения. |
| project_name | Укажите имя проекта. Если не указано, имя проекта берётся из базового имени project_src. Требуется, если не указано definition. | |
| project_src | Путь к каталогу, содержащему файл docker-compose.yml или docker-compose.yaml. Взаимоисключающие опции с definition. Требуется, если не указано definition. | |
| pull (добавлено в 2.2) |
| Используйте со значением present для всегда скачивания изображений перед запуском приложения. Аналогично выполнению docker-compose pull. При скачивании нового изображения службы, использующие изображение, будут пересозданы, если recreate не равно never. |
| recreate |
| По умолчанию контейнеры будут пересозданы, если их конфигурация отличается от определения службы. Установка значения никогда игнорирует различия в конфигурации и оставляет существующие контейнеры без изменений. Установка значения всегда принудительно пересоздаёт все существующие контейнеры. |
| remove_images | По умолчанию: None | Используйте со значением absent, чтобы удалить все изображения или только локальные. |
| remove_volumes |
| Используйте со значением absent, чтобы удалить тома данных. |
| restarted |
| Используйте со значением present, чтобы перезапустить все контейнеры. |
| scale | Если state равно present, масштабируйте службы. Предоставьте словарь пар "ключ-значение", где ключ — имя службы, а значение — целое число, определяющее количество контейнеров. | |
| services | Если state равно present, выполните docker-compose up для подмножества служб. | |
| ssl_version | По умолчанию: 1.0 | Укажите допустимое значение версии SSL. Значение по умолчанию определяется docker-py, в настоящее время 1.0. |
| state |
| Желаемое состояние проекта. Указание настоящего эквивалентно запуску docker-compose up. Указание отсутствующего эквивалентно запуску docker-compose down. |
| stopped |
| Используйте со значением present, чтобы оставить контейнеры в завершенном или неработающем состоянии. |
| timeout | По умолчанию: 60 | Максимальное время в секундах ожидания ответа от API. |
| tls | По умолчанию: нет | Защитить соединение с API с помощью TLS без проверки подлинности сервера Docker. |
| tls_hostname | По умолчанию: localhost | При проверке подлинности сервера Docker укажите ожидаемое имя сервера. |
| tls_verify | По умолчанию: нет | Защитить соединение с API с помощью TLS и проверить подлинность сервера Docker. |
Примечания
Примечание
- Подключиться к демону 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://docker-py.readthedocs.org/en/stable/machine/.
Примеры
# Examples use the django example at U(https://docs.docker.com/compose/django/). Follow it to create the flask
# directory
- name: Run using a project directory
hosts: localhost
connection: local
gather_facts: no
tasks:
- docker_service:
project_src: flask
state: absent
- docker_service:
project_src: flask
register: output
- debug:
var: output
- docker_service:
project_src: flask
build: no
register: output
- debug:
var: output
- assert:
that: "not output.changed "
- docker_service:
project_src: flask
build: no
stopped: true
register: output
- debug:
var: output
- assert:
that:
- "not web.flask_web_1.state.running"
- "not db.flask_db_1.state.running"
- docker_service:
project_src: flask
build: no
restarted: true
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
connection: local
gather_facts: no
tasks:
- docker_service:
project_src: flask
scale:
web: 2
register: output
- debug:
var: output
- name: Run with inline v2 compose
hosts: localhost
connection: local
gather_facts: no
tasks:
- docker_service:
project_src: flask
state: absent
- docker_service:
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
connection: local
gather_facts: no
tasks:
- docker_service:
project_src: flask
state: absent
- docker_service:
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 | при режиме проверки или debug true | Предоставляет действия, которые нужно выполнить для каждого сервиса, как определено в compose. | |||
| service_name complex | всегда | Имя сервиса. | |||
| action list | всегда | Дескриптивное имя действия, которое нужно выполнить для контейнеров сервиса. | |||
| id string | всегда | Полный ID контейнера | |||
| short_id string | всегда | Короткий ID контейнера | |||
| name string | всегда | Имя контейнера | |||
| pulled_image complex | при получении изображения | Предоставляет информацию об изображении, когда новое изображение подтягивается для сервиса. | |||
| name string | всегда | Имя изображения | |||
| id string | всегда | Хэш изображения | |||
| built_image complex | при построении изображения | Предоставляет информацию об изображении, когда новое изображение строится для сервиса. | |||
| name string | всегда | Имя изображения | |||
| id string | всегда | Хэш изображения | |||
| service complex | успешно | Имя сервиса. | |||
| container_name complex | успешно | Имя контейнера. Формат: project_service_#. | |||
| cmd list | успешно | Одна или несколько команд, которые нужно выполнить в контейнере. | |||
| image str | успешно | Имя изображения, из которого был создан контейнер. | |||
| labels complex | успешно | Метаданные, назначенные контейнеру. | |||
| networks complex | успешно | Содержит словарь для каждой сети, членом которой является контейнер. | |||
| macAddress str | успешно | MAC-адрес, назначенный виртуальной сетевой карте. | |||
| globalIPv6PrefixLen int | успешно | Длина подсети IPv6. | |||
| links list | успешно | Список имён контейнеров, к которым этот контейнер связан. | |||
| globalIPv6 str | успешно | Адрес IPv6, назначенный контейнеру. | |||
| aliases list | успешно | Псевдонимы, назначенные контейнеру сетью. | |||
| IPAddress string | успешно | Адрес IP, назначенный контейнеру. | |||
| IPPrefixLen int | успешно | Количество битов, используемых подсетью. | |||
| state complex | успешно | Информация о текущем состоянии контейнера. | |||
| status str | успешно | Описание состояния работы. | |||
| running bool | успешно | Запущен ли контейнер с работающим процессом. | |||
Статус
Этот модуль помечен как превью, что означает, что он не гарантирует обратную совместимость интерфейса.
Автор
- 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.5/modules/docker_service_module.html