Spec-Zone.ru › Ansible 2.6

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
  • API Docker >= 1.20
  • PyYAML >= 3.11

Параметры

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

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

Псевдонимы: tls_client_key
nocache
bool

(добавлен в 2.2)
    Варианты:
  • no ←
  • yes
Используется с опцией build, чтобы игнорировать кеш во время построения образа.
project_name
Укажите имя проекта. Если не указано, имя проекта берётся из базового имени project_src.
Требуется, когда указано definition.
project_src
Путь к каталогу, содержащему файл docker-compose.yml или docker-compose.yaml.
Взаимоисключающие опции с definition.
Требуется, когда не указано definition.
pull
bool

(добавлен в 2.2)
    Варианты:
  • no ←
  • yes
Используется со значением present для всегда скачивания образов до запуска приложения.
То же самое, что и запуск docker-compose pull.
При скачивании нового образа сервисы, использующие этот образ, будут пересозданы, если recreate не равно never.
recreate
    Варианты:
  • always
  • never
  • smart ←
По умолчанию контейнеры будут пересозданы, когда их конфигурация отличается от определения сервиса.
Установка значения never игнорирует различия в конфигурации и оставляет существующие контейнеры неизменными.
Установка значения always принудительно пересоздаёт все существующие контейнеры.
remove_images
    Варианты:
  • all
  • local
Используется со значением absent для удаления всех образов или только локальных образов.
remove_orphans
bool
    Варианты:
  • no ←
  • yes
Удалить контейнеры для сервисов, не определённых в файле compose.
remove_volumes
bool
    Варианты:
  • no ←
  • yes
Используется со значением absent для удаления томов данных.
restarted
bool
    Варианты:
  • 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
bool
    Варианты:
  • no ←
  • yes
Используется со значением present, чтобы оставить контейнеры в завершенном или неработающем состоянии.
timeout Значение по умолчанию:
10
Время ожидания в секундах для завершения контейнера при подключении или когда контейнеры уже запущены.
tls
bool
    Варианты:
  • no ←
  • yes
Защитить соединение с API с помощью TLS без проверки подлинности Docker хост-сервера.
Если значение не указано в задаче, используется значение переменной окружения DOCKER_TLS вместо. Если переменная окружения не установлена, используется значение по умолчанию.
tls_hostname Значение по умолчанию:
"localhost"
При проверке подлинности Docker хост-сервера укажите ожидаемое имя сервера.
Если значение не указано в задаче, используется значение переменной окружения DOCKER_TLS_HOSTNAME вместо. Если переменная окружения не установлена, используется значение по умолчанию.
tls_verify
bool
    Варианты:
  • no ←
  • yes
Защитить соединение с 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

Spec-Zone.ru

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