Spec-Zone.ru › Ansible 2.8

docker_compose – Управление многоконтейнерными Docker-приложениями с Docker Compose

Новое в версии 2.1.

  • Описание
  • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения
  • Статус

Описание

  • Использует Docker Compose для запуска, остановки и масштабирования служб.
  • Работает с версиями compose 1 и 2.
  • Конфигурация может быть прочитана из файла docker-compose.yml или docker-compose.yaml или встроена с помощью параметра definition.
  • См. примеры для получения более подробной информации.
  • Поддерживает режим проверки.
  • Этот модуль назывался docker_service до Ansible 2.8. Способ использования не изменился.

Псевдонимы: docker_service

Требования

Ниже приведены требования, необходимые на хосте, на котором выполняется этот модуль.

  • Docker API >= 1.20
  • Docker SDK для Python: Обратите внимание, что модуль Python docker-py был заменен на docker (см. здесь для получения подробностей). Для Python 2.6 необходимо использовать docker-py. В противном случае рекомендуется установить модуль Python docker. Обратите внимание, что оба модуля не должны устанавливаться одновременно. Также обратите внимание, что при установке и последующем удалении одного из этих модулей другой может перестать работать, и потребуется его повторная установка.
  • Docker SDK для Python >= 1.8.0 (используйте docker-py для Python 2.6)
  • PyYAML >= 3.11
  • docker-compose >= 1.7.0

Параметры

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

Псевдонимы: docker_api_version
build
логическое значение
    Варианты:
  • нет ←
  • да
Используется с параметром state present для всегда сборки изображений перед запуском приложения.
Аналогично выполнению docker-compose build с опцией pull.
Изображения будут перестроены только если Docker обнаружит изменения в файле Dockerfile или содержимом каталога сборки.
Используйте опцию nocache, чтобы проигнорировать кэш изображений при выполнении сборки.
Если существующее изображение заменено, службы, использующие это изображение, будут пересозданы, если не указано recreate never.
ca_cert
путь
Используйте сертификат CA при проверке сервера, предоставив путь к файлу сертификата CA.
Если значение не указано в задаче, и переменная окружения DOCKER_CERT_PATH задана, используется файл ca.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.

Псевдонимы: tls_ca_cert, cacert_path
client_cert
путь
Путь к файлу сертификата TLS клиента.
Если значение не указано в задаче, и переменная окружения DOCKER_CERT_PATH задана, используется файл cert.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.

Псевдонимы: tls_client_cert, cert_path
client_key
путь
Путь к файлу ключа TLS клиента.
Если значение не указано в задаче, и переменная окружения DOCKER_CERT_PATH задана, используется файл key.pem из каталога, указанного в переменной окружения DOCKER_CERT_PATH.

Псевдонимы: tls_client_key, key_path
debug
логическое значение
    Варианты:
  • нет ←
  • да
Режим отладки
definition
словарь
Файл Compose, описывающий одну или несколько служб, сетей и томов.
Взаимоисключительно с параметрами 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_HOST. Если переменная окружения не задана, используется значение по умолчанию.

Псевдонимы: docker_url
files
список
Список имён файлов Compose, относящихся к project_src. Переопределяет docker-compose.yml или docker-compose.yaml.
Файлы загружаются и объединяются в указанном порядке.
hostname_check
логическое значение
    Варианты:
  • нет ←
  • да
Указывает, следует ли проверять имя хоста демона Docker на соответствие имени, указанному в сертификате клиента.
nocache
логическое значение
добавлен в 2.2
    Варианты:
  • нет ←
  • да
Используется с опцией build, чтобы пропустить кэш во время процесса сборки изображения.
project_name
строка
Укажите имя проекта. Если не указано, имя проекта берётся из имени базового каталога project_src.
Требуется, когда указан параметр definition.
project_src
путь
Путь к каталогу, содержащему файл docker-compose.yml или docker-compose.yaml.
Взаимоисключительно с параметром definition.
Требуется, когда не указан параметр definition.
pull
логическое значение
добавлен в 2.2
    Варианты:
  • нет ←
  • да
Используется с параметром state present для всегда скачивания изображений перед запуском приложения.
Аналогично выполнению docker-compose pull.
Когда скачивается новое изображение, службы, использующие это изображение, будут пересозданы, если не указано recreate never.
recreate
строка
    Варианты:
  • всегда
  • никогда
  • умный ←
По умолчанию контейнеры будут пересозданы, если их конфигурация отличается от определения службы.
Установка на never игнорирует различия в конфигурации и оставляет существующие контейнеры неизменными.
Установка на always принудительно пересоздаёт все существующие контейнеры.
remove_images
строка
    Варианты:
  • все
  • локальные
Используйте с state absent для удаления всех изображений или только локальных изображений.
remove_orphans
логическое значение
    Варианты:
  • нет ←
  • да
Удалить контейнеры для служб, не определённых в файле Compose.
remove_volumes
логическое значение
    Варианты:
  • нет ←
  • да
Используйте с параметром state absent для удаления томов данных.
restarted
логическое значение
    Варианты:
  • нет ←
  • да
Используйте с параметром state present для перезапуска всех контейнеров, определённых в файле Compose.
Если задан параметр services, будут перезапущены только указанные там контейнеры.
scale
словарь
При state present масштабировать службы. Укажите словарь пар «ключ-значение», где ключ — имя службы, а значение — целое число, обозначающее количество контейнеров.
services
список
При state present выполнить docker-compose up соответственно docker-compose stop (с stopped) соответственно docker-compose restart (с restarted) на подмножестве служб.
Если пусто, что является значением по умолчанию, операция будет выполнена для всех служб, определённых в файле Compose (или в строке definition).
ssl_version
строка
Укажите допустимое значение версии SSL. Значение по умолчанию определяется модулем ssl.py.
Если значение не указано в задаче, вместо него используется значение переменной окружения DOCKER_SSL_VERSION.
state
строка
    Варианты:
  • отсутствует
  • наличие ←
Желаемое состояние проекта.
Указание present эквивалентно запуску docker-compose up соответственно docker-compose stop (с stopped) соответственно docker-compose restart (с restarted).
Указание absent эквивалентно запуску docker-compose down.
остановлен
boolean
    Варианты:
  • нет ←
  • да
Используйте с состоянием present для остановки всех контейнеров, определённых в файле Compose.
Если определён параметр services, будут остановлены только перечисленные там контейнеры.
timeout
integer
Значение по умолчанию:
10
Время ожидания в секундах для завершения контейнера при подключении или когда контейнеры уже запущены.
tls
boolean
    Варианты:
  • нет ←
  • да
Защитите соединение с API, используя TLS без проверки подлинности сервера Docker-хоста. Обратите внимание, что если validate_certs также установлено в yes, оно будет иметь приоритет.
Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS. Если переменная окружения не задана, будет использовано значение по умолчанию.
tls_hostname
string
Значение по умолчанию:
"localhost"
При проверке подлинности сервера Docker-хоста укажите ожидаемое имя сервера.
Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS_HOSTNAME. Если переменная окружения не задана, будет использовано значение по умолчанию.
validate_certs
boolean
    Варианты:
  • нет ←
  • да
Защитите соединение с API, используя TLS и проверяя подлинность сервера Docker-хоста.
Если значение не указано в задаче, будет использовано значение переменной окружения DOCKER_TLS_VERIFY. Если переменная окружения не задана, будет использовано значение по умолчанию.

псевдонимы: 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 https://docs.docker.com/compose/django. Follow it to create the
# flask directory

- name: Run using a project directory
  hosts: localhost
  gather_facts: no
  tasks:
    - name: Tear down existing services
      docker_compose:
        project_src: flask
        state: absent

    - name: Create and start services
      docker_compose:
        project_src: flask
      register: output

    - debug:
        var: output

    - name: Run `docker-compose up` again
      docker_compose:
        project_src: flask
        build: no
      register: output

    - debug:
        var: output

    - assert:
        that: "not output.changed "

    - name: Stop all services
      docker_compose:
        project_src: flask
        build: no
        stopped: yes
      register: output

    - debug:
        var: output

    - assert:
        that:
          - "not web.flask_web_1.state.running"
          - "not db.flask_db_1.state.running"

    - name: Restart services
      docker_compose:
        project_src: flask
        build: no
        restarted: yes
      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
  gather_facts: no
  tasks:
    - docker_compose:
        project_src: flask
        scale:
          web: 2
      register: output

    - debug:
        var: output

- name: Run with inline v2 compose
  hosts: localhost
  gather_facts: no
  tasks:
    - docker_compose:
        project_src: flask
        state: absent

    - 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

    - 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
  gather_facts: no
  tasks:
    - docker_compose:
        project_src: flask
        state: absent

    - 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

    - debug:
        var: output

    - assert:
        that:
          - "web.flask_web_1.state.running"
          - "db.flask_db_1.state.running"

Значения возврата

Общие значения возврата описаны здесь, следующие — поля, уникальные для данного модуля:

Ключ Возвращаемое значение Описание
действия
сложный
при режиме проверки или отладка yes
Предоставляет действия, которые должны быть выполнены для каждого сервиса, как определено в compose.

имя_сервиса
сложный
всегда
Имя сервиса.

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

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

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

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

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

id
строка
всегда
Хэш изображения

имя
строка
всегда
Имя изображения

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

id
строка
всегда
Хэш изображения

имя
строка
всегда
Имя изображения

сервисы
сложный
успешно
Словарь, сопоставляющий имя сервиса со словарем контейнеров.
Обратите внимание, что факты являются частью зарегистрированных переменных с Ansible 2.8. По соображениям совместимости факты также доступны напрямую. Имя сервиса - это переменная, с помощью которой можно получить доступ к словарю контейнеров. Обратите внимание, что возвращаемые факты будут удалены в Ansible 2.12.

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

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

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

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

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

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

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

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

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

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

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

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

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

работает
логическое значение
успешно
Работает ли контейнер с запущенным процессом.

статус
строка
успешно
Описание состояния запуска.



Статус

  • Этот модуль не гарантирует обратной совместимости интерфейса. [превью]
  • Этот модуль поддерживается сообществом Ansible. [community]

Авторы

  • 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.8/modules/docker_compose_module.html

Spec-Zone.ru

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