Spec-Zone.ru › Ansible 2.11

Руководство по Docker

Коллекция community.docker предоставляет несколько модулей и плагинов для управления контейнерами Docker и Docker Swarm.

  • Требования
  • Подключение к API Docker
  • Простой демони Docker: образы, сети, тома и контейнеры
  • Docker Compose
  • Docker Machine
  • Docker стек
  • Docker Swarm
  • Полезные ссылки

Требования

Большинство модулей и плагинов в community.docker требуют Docker SDK для Python. SDK необходимо установить на машинах, где выполняются модули и плагины, и для тех версий Python, с которыми выполняются модули и плагины. Вы можете использовать модуль community.general.python_requirements_info, чтобы убедиться, что Docker SDK для Python установлен на правильной машине и для версии Python, используемой Ansible.

Обратите внимание, что плагины (плагины инвентаризации и плагины подключения) всегда выполняются в контексте самого Ansible. Если вы используете плагин, который требует Docker SDK для Python, вам нужно установить его на машине, на которой выполняется ansible или ansible-playbook, и для того же интерпретатора Python, который используется Ansible. Чтобы узнать, какой Python используется, выполните ansible --version.

Вы можете установить Docker SDK для Python для Python 2.7 или Python 3 следующим образом:

$ pip install docker

Для Python 2.6 вам нужна версия до 2.0. Для этих версий SDK назывался docker-py, поэтому вам нужно установить его следующим образом:

$ pip install 'docker-py>=1.10.0'

Пожалуйста, установите только один из docker или docker-py. Установка обоих приведет к повреждению установки. Если это произойдет, Ansible обнаружит это и сообщит вам об этом. В этом случае необходимо удалить оба и переустановить правильную версию.

В случае сомнений всегда устанавливайте docker и никогда docker-py.

Подключение к API Docker

Вы можете подключиться к локальному или удаленному API, используя параметры, передаваемые каждому заданию, или задавая переменные среды. Порядок приоритета — параметры командной строки, а затем переменные среды. Если ни один параметр командной строки, ни переменная среды не найдены, Ansible использует значение по умолчанию, указанное в Параметрах.

Параметры

Большинство плагинов и модулей можно настроить с помощью следующих параметров:

docker_host

URL или путь к сокету Unix, используемый для подключения к API Docker. По умолчанию unix://var/run/docker.sock. Для подключения к удаленному хосту укажите строку TCP-соединения (например: tcp://192.0.2.23:2376). Если для шифрования подключения к API используется TLS, модуль автоматически заменит «tcp» в URL-адресе подключения на «https».

api_version

Версия API Docker, работающего на хосте Docker. По умолчанию — последняя поддерживаемая версия API, установленного Docker SDK для Python.

timeout

Максимальное время ожидания ответа от API в секундах. По умолчанию 60 секунд.

tls

Защитить подключение к API с помощью TLS без проверки подлинности сервера хоста Docker. По умолчанию false.

validate_certs

Защитить подключение к API с помощью TLS и проверить подлинность сервера хоста Docker. По умолчанию false.

cacert_path

Использовать сертификат CA при проверке сервера, указав путь к файлу сертификата CA.

cert_path

Путь к файлу TLS-сертификата клиента.

key_path

Путь к файлу TLS-ключа клиента.

tls_hostname

При проверке подлинности сервера хоста Docker укажите ожидаемое имя сервера. По умолчанию localhost.

ssl_version

Укажите допустимый номер версии SSL. Значение по умолчанию определяется Docker SDK для Python.

Переменные среды

Вы также можете контролировать, как плагины и модули подключаются к API Docker, задавая следующие переменные среды.

Для плагинов они должны быть заданы для среды, в которой Ansible выполняется. Для модулей они должны быть заданы для среды, в которой выполняются модули. Для модулей, выполняемых на удаленных машинах, переменные среды должны быть установлены на этой машине для пользователя, используемого для выполнения модулей.

DOCKER_HOST

URL или путь к сокету Unix, используемый для подключения к API Docker.

DOCKER_API_VERSION

Версия API Docker, работающего на хосте Docker. По умолчанию — последняя версия API, поддерживаемая docker-py.

DOCKER_TIMEOUT

Максимальное время ожидания ответа от API в секундах.

DOCKER_CERT_PATH

Путь к каталогу, содержащему клиентский сертификат, ключ клиента и сертификат CA.

DOCKER_SSL_VERSION

Укажите допустимый номер версии SSL.

DOCKER_TLS

Защитить подключение к API с помощью TLS без проверки подлинности сервера хоста Docker.

DOCKER_TLS_VERIFY

Защитить подключение к API с помощью TLS и проверить подлинность сервера хоста Docker.

Простой демони Docker: образы, сети, тома и контейнеры

Для работы с простым демоном Docker, то есть без Swarm, доступны плагины подключения, плагин инвентаризации и несколько модулей:

END_OF_DOCUMENT_MARKER
Плагин подключения docker

Плагин подключения community.docker.docker использует утилиту Docker CLI для подключения к контейнерам Docker и выполнения модулей в них. По сути, он оборачивает docker exec и docker cp. Этот плагин подключения поддерживается модулем ansible.posix.synchronize.

Плагин подключения docker_api

Плагин подключения community.docker.docker_api напрямую взаимодействует с демоном Docker для подключения к контейнерам Docker и выполнения модулей в них.

Плагин инвентаризации docker_containers

Плагин инвентаризации community.docker.docker_containers позволяет динамически добавлять контейнеры Docker из демона Docker в вашу инвентаризацию Ansible. Подробности о динамических инвентаризациях см. в разделе Работа с динамической инвентаризацией.

Сценарий инвентаризации docker устарел. Используйте вместо него плагин инвентаризации. Плагин инвентаризации имеет несколько опций совместимости. Если вам нужно собирать контейнеры Docker из нескольких демонов Docker, необходимо добавить каждый демон Docker в качестве отдельного источника инвентаризации.

Модуль docker_host_info

Модуль community.docker.docker_host_info позволяет получить информацию о демоне Docker, например, обо всех контейнерах, образах, томах, сетях и т. д.

Модуль docker_login

Модуль community.docker.docker_login позволяет войти и выйти из удаленного репозитория, такого как Docker Hub или частный репозиторий. Он предоставляет функциональность, аналогичную командам CLI docker login и docker logout.

Модуль docker_prune

Модуль community.docker.docker_prune позволяет очистить ненужные контейнеры, образы, тома и т. д. Он предоставляет функциональность, аналогичную команде CLI docker prune.

Модуль docker_image

Модуль community.docker.docker_image предоставляет полный контроль над образами, включая: создание, скачивание, отправку, тегирование и удаление.

Модуль docker_image_info

Модуль community.docker.docker_image_info позволяет перечислять и инспектировать образы.

Модуль docker_network

Модуль community.docker.docker_network предоставляет полный контроль над сетями Docker.

Модуль docker_network_info

Модуль community.docker.docker_network_info позволяет инспектировать сети Docker.

Модуль docker_volume_info

Модуль community.docker.docker_volume_info предоставляет полный контроль над томами Docker.

Модуль docker_volume

Модуль community.docker.docker_volume позволяет инспектировать тома Docker.

Модуль docker_container

Модуль community.docker.docker_container управляет жизненным циклом контейнеров, обеспечивая возможность создания, обновления, остановки, запуска и уничтожения контейнера Docker.

Модуль docker_container_info

Модуль community.docker.docker_container_info позволяет инспектировать контейнер Docker.

Docker Compose

Модуль community.docker.docker_compose позволяет использовать ваши существующие файлы Docker Compose для оркестрации контейнеров на одном демоне Docker или на Swarm. Поддерживает версии Compose 1 и 2.

Помимо Docker SDK для Python, вам необходимо установить docker-compose на удаленных машинах, чтобы использовать модуль.

Docker Machine

Плагин инвентаризации community.docker.docker_machine позволяет динамически добавлять хосты Docker Machine в вашу инвентаризацию Ansible.

Docker stack

Модуль community.docker.docker_stack позволяет управлять стеками Docker. Информацию о стеках можно получить с помощью модуля community.docker.docker_stack_info, а информацию о задачах стека — с помощью модуля community.docker.docker_stack_task_info.

Docker Swarm

Коллекция community.docker предоставляет несколько плагинов и модулей для управления Docker Swarm.

Управление Swarm

Для управления Docker Swarm предоставляется один плагин инвентаризации и несколько модулей:

Плагин инвентаризации docker_swarm

Плагин инвентаризации community.docker.docker_swarm позволяет динамически добавлять все узлы Docker Swarm в вашу инвентаризацию Ansible.

Модуль docker_swarm

Модуль community.docker.docker_swarm позволяет глобально настроить узлы менеджеров Docker Swarm для присоединения и выхода из Swarm, а также для изменения конфигурации Docker Swarm.

Модуль docker_swarm_info

Модуль community.docker.docker_swarm_info позволяет получить информацию о Docker Swarm.

Модуль docker_node

Модуль community.docker.docker_node позволяет управлять узлами Docker Swarm.

Модуль docker_node_info

Модуль community.docker.docker_node_info позволяет получить информацию об узлах Docker Swarm.

Управление конфигурацией

Коллекция community.docker предлагает модули для управления конфигурациями и секретами Docker Swarm:

Модуль docker_config

Модуль community.docker.docker_config позволяет создавать и изменять конфигурации Docker Swarm.

Модуль docker_secret

Модуль community.docker.docker_secret позволяет создавать и изменять секреты Docker Swarm.

Службы Swarm

Службы Docker Swarm можно создавать и обновлять с помощью модуля community.docker.docker_swarm_service, а информацию о них можно получить с помощью модуля community.docker.docker_swarm_service_info.

Полезные ссылки

Вы все еще используете Dockerfile для сборки образов? Обратите внимание на ansible-bender и начните создавать образы из ваших Ansible playbooks.

Используйте Ansible Operator, чтобы запустить ваш файл docker-compose на OpenShift. Перейдите от приложения на вашем ноутбуке к полностью масштабируемому приложению в облаке с Kubernetes всего за несколько мгновений.

© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/scenario_guides/guide_docker.html

Spec-Zone.ru

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