docker_service - Управление службами и контейнерами Docker.
Новая версия с 2.1.
Описание
- Использует docker compose для запуска, остановки и масштабирования служб.
- Работает с версиями compose 1 и 2.
- Compose можно прочитать из файла docker-compose.yml (или .yaml) или в строчном формате, используя опцию
definition. - Для получения более подробной информации см. примеры.
- Поддерживает режим проверки.
Требования
Ниже перечислены требования, которые необходимы на хосте, где выполняется этот модуль.
- python >= 2.6
- docker-py >= 1.8.0
- Обратите внимание, что модуль Python docker-py устарел и заменён на docker (подробнее см. здесь). Для Python 2.6 необходимо использовать
docker-py. В противном случае рекомендуется установить модуль Pythondocker. Обратите внимание, что оба модуля не следует устанавливать одновременно. Также обратите внимание, что при установке и последующем удалении одного из модулей другой может перестать работать, и потребуется его повторная установка. - docker-compose >= 1.7.0
- API Docker >= 1.20
- PyYAML >= 3.11
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| api_version | Значение по умолчанию: "auto" | Версия Docker API, работающая на Docker хосте. По умолчанию используется последняя версия API, поддерживаемая docker-py. Если значение не указано в задаче, используется значение переменной окружения DOCKER_API_VERSION. Если переменная окружения не установлена, используется значение по умолчанию.Псевдонимы: docker_api_version |
| build bool |
| Используется со значением present для всегда построения образов до запуска приложения. То же самое, что и запуск docker-compose build с опцией pull. Образы будут перестроены только если Docker обнаружит изменения в Dockerfile или содержимом каталога сборки. Используйте опцию nocache, чтобы игнорировать кеш образов при построении.Если существующий образ заменяется, сервисы, использующие этот образ, будут пересозданы, если recreate не равно never. |
| cacert_path | Используйте сертификат CA при проверке сервера, указав путь к файлу сертификата CA. Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH установлена, будет использоваться файл ca.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH. Псевдонимы: tls_ca_cert | |
| cert_path | Путь к файлу TLS-сертификата клиента. Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH установлена, будет использоваться файл cert.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH. Псевдонимы: tls_client_cert | |
| debug bool |
| Режим отладки |
| definition | Укажите docker-compose yaml, описывающий один или несколько сервисов, сетей и томов. Взаимоисключающие опции с project_src и files. | |
| dependencies bool |
| Когда 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 | Список имён файлов относительно project_src. Переопределяет docker-compose.yml или docker-compose.yaml.Файлы загружаются и объединяются в указанном порядке. | |
| hostname_check bool |
| Проверять ли имя хоста Docker-демона на соответствие имени, указанному в клиенском сертификате. |
| key_path | Путь к файлу TLS-ключа клиента. Если значение не указано в задаче и переменная окружения DOCKER_CERT_PATH установлена, будет использоваться файл key.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH. Псевдонимы: tls_client_key | |
| nocache bool (добавлен в 2.2) |
| Используется с опцией build, чтобы игнорировать кеш во время построения образа. |
| project_name | Укажите имя проекта. Если не указано, имя проекта берётся из базового имени project_src.Требуется, когда указано definition. | |
| project_src | Путь к каталогу, содержащему файл docker-compose.yml или docker-compose.yaml. Взаимоисключающие опции с definition.Требуется, когда не указано definition. | |
| pull bool (добавлен в 2.2) |
| Используется со значением present для всегда скачивания образов до запуска приложения. То же самое, что и запуск docker-compose pull. При скачивании нового образа сервисы, использующие этот образ, будут пересозданы, если recreate не равно never. |
| recreate |
| По умолчанию контейнеры будут пересозданы, когда их конфигурация отличается от определения сервиса. Установка значения never игнорирует различия в конфигурации и оставляет существующие контейнеры неизменными. Установка значения always принудительно пересоздаёт все существующие контейнеры. |
| remove_images |
| Используется со значением absent для удаления всех образов или только локальных образов. |
| remove_orphans bool |
| Удалить контейнеры для сервисов, не определённых в файле compose. |
| remove_volumes bool |
| Используется со значением absent для удаления томов данных. |
| restarted bool |
| Используется со значением present для перезапуска всех контейнеров. |
| scale | Когда state имеет значение present, масштабировать сервисы. Указать словарь пар ключ/значение, где ключ — имя сервиса, а значение — целое число, обозначающее количество контейнеров. | |
| services | Когда state имеет значение present, запустить docker-compose up для подмножества сервисов. | |
| ssl_version | Указать версию SSL. Значение по умолчанию определяется модулем ssl.py. Если значение не указано в задаче, используется значение переменной окружения DOCKER_SSL_VERSION. | |
| state |
| Желаемое состояние проекта. Указание present — то же самое, что и запуск docker-compose up. Указание absent — то же самое, что и запуск docker-compose down. |
| stopped bool |
| Используется со значением present, чтобы оставить контейнеры в завершенном или неработающем состоянии. |
| timeout | Значение по умолчанию: 10 | Время ожидания в секундах для завершения контейнера при подключении или когда контейнеры уже запущены. |
| tls bool |
| Защитить соединение с API с помощью TLS без проверки подлинности Docker хост-сервера. Если значение не указано в задаче, используется значение переменной окружения DOCKER_TLS вместо. Если переменная окружения не установлена, используется значение по умолчанию. |
| tls_hostname | Значение по умолчанию: "localhost" | При проверке подлинности Docker хост-сервера укажите ожидаемое имя сервера. Если значение не указано в задаче, используется значение переменной окружения DOCKER_TLS_HOSTNAME вместо. Если переменная окружения не установлена, используется значение по умолчанию. |
| tls_verify bool |
| Защитить соединение с API с помощью TLS и проверить подлинность Docker хост-сервера. Если значение не указано в задаче, используется значение переменной окружения DOCKER_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://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 сложное | при режиме проверки или debug true | Предоставляет действия, которые должны быть выполнены для каждого сервиса, как определено в compose. | |||
| service_name сложное | всегда | Имя сервиса. | |||
| pulled_image сложное | при получении изображения | Предоставляет сведения об изображении при получении нового изображения для сервиса. | |||
| name строка | всегда | имя изображения | |||
| id строка | всегда | хэш изображения | |||
| built_image сложное | при сборке изображения | Предоставляет сведения об изображении при сборке нового изображения для сервиса. | |||
| name строка | всегда | имя изображения | |||
| id строка | всегда | хэш изображения | |||
| action список | всегда | Описание действия, которое нужно выполнить над контейнерами сервиса. | |||
| id строка | всегда | полный идентификатор контейнера | |||
| name строка | всегда | имя контейнера | |||
| short_id строка | всегда | краткий идентификатор контейнера | |||
| service сложное | успех | Имя сервиса. | |||
| container_name сложное | успех | Имя контейнера. Формат: project_service_#. | |||
| cmd список | успех | Одна или несколько команд, которые нужно выполнить в контейнере. | |||
| image строка | успех | Имя изображения, из которого был создан контейнер. | |||
| labels сложное | успех | Метаданные, назначенные контейнеру. | |||
| networks сложное | успех | Содержит словарь для каждой сети, членом которой является контейнер. | |||
| IPAddress строка | успех | IP-адрес, назначенный контейнеру. | |||
| IPPrefixLen целое число | успех | Количество бит, используемых подсетью. | |||
| aliases список | успех | Псевдонимы, назначенные контейнеру сетью. | |||
| globalIPv6 строка | успех | IPv6-адрес, назначенный контейнеру. | |||
| globalIPv6PrefixLen целое число | успех | Длина IPv6-подсети. | |||
| links список | успех | Список имен контейнеров, к которым связан этот контейнер. | |||
| macAddress строка | успех | MAC-адрес, назначенный виртуальной сетевой карте. | |||
| state сложное | успех | Информация о текущем состоянии контейнера. | |||
| running логическое | успех | Запущен ли контейнер с запущенным процессом. | |||
| status строка | успех | Описание состояния работы. | |||
Статус
Этот модуль помечен как предварительный просмотр, что означает, что он не гарантирует обратной совместимости интерфейса.
Техническое обслуживание
Этот модуль помечен как сообщество, что означает, что он поддерживается сообществом Ansible. Дополнительные сведения см. в Раздел поддержки и технического обслуживания модулей.
Список других модулей, также поддерживаемых сообществом Ansible, см. здесь.
Автор
- 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.6/modules/docker_service_module.html