Spec-Zone.ru › Ansible 2.7

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. В противном случае рекомендуется установить модуль Python docker. Обратите внимание, что оба модуля не должны устанавливаться одновременно. Также обратите внимание, что при установке и удалении одного из модулей другой может перестать работать, и потребуется его повторная установка.
  • docker-compose >= 1.7.0
  • Docker API >= 1.20
  • PyYAML >= 3.11

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
api_version
-
Значение по умолчанию:
"auto"
Версия Docker API, запущенная на Docker Host. По умолчанию используется последняя версия API, поддерживаемая docker-py.
Если значение не указано в задаче, будет использовано значение переменной среды DOCKER_API_VERSION. Если переменная среды не задана, будет использовано значение по умолчанию.

Псевдонимы: docker_api_version
build
boolean
    Варианты:
  • no ←
  • yes
Используется со статусом 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
boolean
    Варианты:
  • no ←
  • yes
Режим отладки
definition
-
Предоставьте docker-compose yaml, описывающий один или несколько сервисов, сетей и томов.
Взаимоисключающие с project_src и files.
dependencies
boolean
    Варианты:
  • no
  • yes ←
Когда 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
boolean
    Варианты:
  • no ←
  • yes
Выполнять или нет проверку имени хоста Docker-демонов по отношению к имени, предоставленному в сертификате клиента.
key_path
-
Путь к файлу ключа TLS клиента.
Если значение не указано в задаче и переменная среды DOCKER_CERT_PATH установлена, будет использован файл key.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH.

Псевдонимы: tls_client_key
nocache
boolean
добавлен в 2.2
    Варианты:
  • no ←
  • yes
Используется с опцией build, чтобы проигнорировать кэш во время сборки образа.
project_name
-
Укажите имя проекта. Если не указано, имя проекта берется из базового имени project_src.
Требуется при предоставлении definition.
project_src
-
Путь к каталогу, содержащему файл docker-compose.yml или docker-compose.yaml.
Взаимоисключающее с definition.
Требуется, когда не предоставлен definition.
pull
boolean
добавлен в 2.2
    Варианты:
  • no ←
  • yes
Используется со статусом present, чтобы всегда подтягивать образы до запуска приложения.
Аналогично выполнению docker-compose pull.
При подтяжке нового образа, сервисы, использующие этот образ, будут пересозданы, если recreate не never.
recreate
-
    Варианты:
  • always
  • never
  • smart ←
По умолчанию контейнеры будут пересозданы, если их конфигурация отличается от определения сервиса.
Указание never игнорирует различия в конфигурации и оставляет существующие контейнеры без изменений.
Указание always принудительно пересоздаёт все существующие контейнеры.
remove_images
-
    Варианты:
  • all
  • local
Используется со статусом absent, чтобы удалить все образы или только локальные образы.
remove_orphans
boolean
    Варианты:
  • no ←
  • yes
Удалить контейнеры для сервисов, не определённых в файле compose.
remove_volumes
boolean
    Варианты:
  • no ←
  • yes
Используется со статусом absent, чтобы удалить тома данных.
restarted
boolean
    Варианты:
  • no ←
  • yes
Используется со статусом present, чтобы перезапустить все контейнеры.
scale
-
Если state имеет значение present, масштабировать сервисы. Укажите словарь пар ключ/значение, где ключ — имя сервиса, а значение — целое число, представляющее количество контейнеров.
services
-
Если state имеет значение present, запустить docker-compose up для подмножества сервисов.
ssl_version
-
Укажите версию SSL. Значение по умолчанию определяется модулем ssl.py.
Если значение не указано в задаче, будет использовано значение переменной среды DOCKER_SSL_VERSION.
state
-
    Варианты:
  • absent
  • present ←
Желаемое состояние проекта.
Указание present эквивалентно запуску docker-compose up.
Указание absent эквивалентно запуску docker-compose down.
stopped
boolean
    Варианты:
  • no ←
  • yes
Используется со статусом present, чтобы оставить контейнеры в завершенном или неработающем состоянии.
timeout
-
Значение по умолчанию:
10
Тайм-аут в секундах для завершения контейнера при подключении или когда контейнеры уже запущены.
END_OF_DOCUMENT_MARKER
tls
boolean
    Варианты:
  • нет ←
  • да
Защитить соединение с API, используя TLS без проверки подлинности сервера Docker.
Если значение не указано в задаче, будет использовано значение переменной среды DOCKER_TLS. Если переменная среды не установлена, будет использовано значение по умолчанию.
tls_hostname
-
По умолчанию:
"localhost"
При проверке подлинности сервера Docker укажите ожидаемое имя сервера.
Если значение не указано в задаче, будет использовано значение переменной среды DOCKER_TLS_HOSTNAME. Если переменная среды не установлена, будет использовано значение по умолчанию.
tls_verify
boolean
    Варианты:
  • нет ←
  • да
Защитить соединение с 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.io/en/stable/machine/
  • При подключении к демону 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 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
сложное
всегда
Имя сервиса.

action
список
всегда
Дескриптивное имя действия, которое необходимо выполнить для контейнеров сервиса.

id
строка
всегда
Длинный идентификатор контейнера

name
строка
всегда
Имя контейнера

short_id
строка
всегда
Коротко идентификатор контейнера

built_image
сложное
при построении образа
Предоставляет информацию об изображении, когда новый образ построен для сервиса.

id
строка
всегда
Хеш образа

name
строка
всегда
Имя образа

pulled_image
сложное
при скачивании образа
Предоставляет информацию об изображении, когда новый образ скачан для сервиса.

id
строка
всегда
Хеш образа

name
строка
всегда
Имя образа

service
сложное
успешно
Имя сервиса.

container_name
сложное
успешно
Имя контейнера. Формат: project_service_#.

cmd
список
успешно
Одна или несколько команд, которые должны быть выполнены в контейнере.

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

labels
сложное
успешно
Метаданные, назначенные контейнеру.

networks
сложное
успешно
Содержит словарь для каждой сети, членом которой является контейнер.

aliases
список
успешно
Псевдонимы, назначенные контейнеру сетью.

globalIPv6
строка
успешно
IPv6-адрес, назначенный контейнеру.

globalIPv6PrefixLen
целое число
успешно
Длина подсети IPv6.

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

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

links
список
успешно
Список имен контейнеров, к которым этот контейнер связан.

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

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

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

status
строка
успешно
Описание состояния выполнения.



Статус

  • Этот модуль не гарантирует обратной совместимости. [превью]
  • Этот модуль поддерживается сообществом 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.7/modules/docker_service_module.html

Spec-Zone.ru

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