Spec-Zone.ru › Ansible 2.10

community.general.docker_service – Управление многоконтейнерными приложениями Docker с помощью Docker Compose.

Примечание

Этот плагин является частью коллекции community.general (версия 1.3.2).

Для его установки используйте: ansible-galaxy collection install community.general.

Для использования в книге задач укажите: community.general.docker_service.

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

Обзор

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

Требования

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

  • Docker API >= 1.20
  • Docker SDK для Python: Обратите внимание, что модуль Python docker-py был заменён на docker (подробности см. в здесь). Для Python 2.6 необходимо использовать docker-py. В противном случае рекомендуется установить модуль Python docker. Обратите внимание, что оба модуля не должны устанавливаться одновременно. Также обратите внимание, что при установке и последующей деинсталляции одного из модулей другой может перестать работать, и потребуется его повторная установка.
  • Docker SDK для Python >= 1.8.0 (для Python 2.6 используйте docker-py)
  • 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
логическое
    Варианты:
  • нет ←
  • да
Используется с опцией build, чтобы проигнорировать кэш во время процесса построения образа.
project_name
строка
Укажите имя проекта. Если не указано, имя проекта берётся из базового имени project_src.
Требуется, когда указано definition.
project_src
путь
Путь к каталогу, содержащему файл docker-compose.yml или docker-compose.yaml.
Взаимоисключающее с definition.
Требуется, когда не указано definition.
pull
логическое
    Варианты:
  • нет ←
  • да
Используется с параметром 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
строка
    Варианты:
  • absent
  • present ←
Желаемое состояние проекта.
Указание present эквивалентно выполнению docker-compose up соответственно docker-compose stop (с stopped) или docker-compose restart (с restarted).
Указание absent эквивалентно выполнению docker-compose down.
stopped
логическое
    Варианты:
  • нет ←
  • да
Используйте с параметром state present для остановки всех контейнеров, определённых в файле Compose.
Если определено services, будут остановлены только указанные там контейнеры.
timeout
целое число
По умолчанию:
10
Время ожидания в секундах для завершения контейнера при подключении или при уже запущенных контейнерах.
tls
логическое
    Варианты:
  • нет ←
  • да
Обеспечить безопасность соединения с API, используя TLS без проверки подлинности сервера Docker Host. Обратите внимание, что если validate_certs также установлено в yes, оно будет иметь приоритет.
Если значение не указано в задаче, используется значение переменной среды DOCKER_TLS. Если переменная среды не задана, используется значение по умолчанию.
tls_hostname
строка
По умолчанию:
"localhost"
При проверке подлинности сервера Docker Host укажите ожидаемое имя сервера.
Если значение не указано в задаче, используется значение переменной среды 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://docs.docker.com/machine/reference/env/ для получения более подробной информации.
  • При подключении к демону Docker с TLS вам может потребоваться установить дополнительные пакеты Python. Для Docker SDK для Python версии 2.4 или новее это можно сделать, установив docker[tls] с помощью ansible.builtin.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
      community.general.docker_compose:
        project_src: flask
        state: absent

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

    - ansible.builtin.debug:
        var: output

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

    - ansible.builtin.debug:
        var: output

    - ansible.builtin.assert:
        that: "not output.changed "

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

    - ansible.builtin.debug:
        var: output

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

    - name: Restart services
      community.general.docker_compose:
        project_src: flask
        build: no
        restarted: yes
      register: output

    - ansible.builtin.debug:
        var: output

    - ansible.builtin.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:
    - community.general.docker_compose:
        project_src: flask
        scale:
          web: 2
      register: output

    - ansible.builtin.debug:
        var: output

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

    - community.general.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

    - ansible.builtin.debug:
        var: output

    - ansible.builtin.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:
    - community.general.docker_compose:
        project_src: flask
        state: absent

    - community.general.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

    - ansible.builtin.debug:
        var: output

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

Возвращаемые значения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример:
postgres
labels
словарь
успешно
Метка, назначенная контейнеру.

Пример:
{'...': None}
networks
список / элементы=словарь
успешно
Содержит словарь для каждой сети, членом которой является контейнер.

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

Пример:
['db']
globalIPv6
строка
успешно
IPv6-адрес, назначенный контейнеру.

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

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

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

Пример:
16
links
список / элементы=строка
успешно
Список имен контейнеров, к которым связан этот контейнер.

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

Пример:
02:42:ac:11:00:02
state
словарь
успешно
Информация о текущем состоянии контейнера.

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

Пример:
True
status
строка
успешно
Описание состояния запуска.

Пример:
запущен


Авторы

  • 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.10/collections/community/general/docker_service_module.html

Spec-Zone.ru

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