Spec-Zone.ru › Ansible 2.8

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

Ansible предлагает следующие модули для управления контейнерами Docker:

docker_compose
Используйте ваши существующие файлы Docker Compose для управления контейнерами на одном демоне Docker или в Swarm. Поддерживает версии Compose 1 и 2.
docker_container
Управляет жизненным циклом контейнера, предоставляя возможность создания, обновления, остановки, запуска и уничтожения контейнера.
docker_image
Предоставляет полный контроль над изображениями, включая: создание, загрузку, отправку, добавление тегов и удаление.
docker_image_info
Просматривает одно или несколько изображений в кэше изображений хоста Docker, предоставляя информацию для принятия решений или утверждений в плейбуке.
docker_login
Авторизуется на Docker Hub или любом реестре Docker и обновляет конфигурационный файл Docker Engine, что в свою очередь обеспечивает бесключевое отправление и загрузку изображений в и из реестра.
docker (динамический инвентарь)
Динамически создаёт инвентарь всех доступных контейнеров из набора одного или нескольких хостов Docker.

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

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

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

Планируется ещё много. Ознакомьтесь с последними идеями и мыслями в репозитории предложений Ansible.

Требования

Использование модулей docker требует установки Docker SDK для Python на хосте, на котором работает Ansible. Вам потребуется версия >= 1.7.0. Для Python 2.7 или Python 3 вы можете установить его следующим образом:

$ pip install docker

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

$ pip install 'docker-py>=1.7.0'

Обратите внимание, что должен быть установлен только один из docker и docker-py. Установка обоих приведёт к ошибочной установке. Если это произойдёт, Ansible обнаружит это и проинформирует вас:

Cannot have both the docker-py and docker python modules installed together as they use the same
namespace and cause a corrupt installation. Please uninstall both packages, and re-install only
the docker-py or docker python module. It is recommended to install the docker module if no support
for Python 2.6 is required. Please note that simply uninstalling one of the modules can leave the
other module in a broken state.

Модуль docker_compose также требует docker-compose

$ pip install 'docker-compose>=1.7.0'

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

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

Параметры

Управление подключением модулей к API Docker путём передачи следующих параметров:

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-py.
timeout
Максимальное время ожидания ответа от API в секундах. По умолчанию 60 секунд.
tls
Защитите подключение к API с помощью TLS, не проверяя подлинность сервера хоста Docker. По умолчанию False.
tls_verify
Защитите подключение к API с помощью TLS и проверьте подлинность сервера хоста Docker. По умолчанию False.
cacert_path
Используйте сертификат CA при проверке сервера, указав путь к файлу сертификата CA.
cert_path
Путь к файлу TLS-сертификата клиента.
key_path
Путь к файлу TLS-ключа клиента.
tls_hostname
При проверке подлинности сервера хоста Docker укажите ожидаемое имя сервера. По умолчанию «localhost».
ssl_version
Укажите допустимый номер версии SSL. Значение по умолчанию определяется docker-py, на момент написания документации - 1.0

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

Управление подключением модулей к 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.

Сценарий динамического инвентаря

Сценарий инвентаря генерирует динамический инвентарь путём отправки запросов API к одному или нескольким API Docker. Он динамичен, так как инвентарь генерируется во время выполнения, а не считывается из статического файла. Сценарий генерирует инвентарь путём подключения к одному или нескольким API Docker и проверки контейнеров, которые он находит в каждом API. С какими API сценарий связывается, может быть определено с помощью переменных среды или файла конфигурации.

Группы

Сценарий создаст следующие группы хостов:

  • идентификатор контейнера
  • имя контейнера
  • короткая форма идентификатора контейнера
  • image_name (image_<имя изображения>)
  • docker_host
  • running
  • stopped

Примеры

Вы можете запустить сценарий интерактивно из командной строки или передать его как инвентарь в плейбук. Вот несколько примеров для начала работы:

# Connect to the Docker API on localhost port 4243 and format the JSON output
DOCKER_HOST=tcp://localhost:4243 ./docker.py --pretty

# Any container's ssh port exposed on 0.0.0.0 will be mapped to
# another IP address (where Ansible will attempt to connect via SSH)
DOCKER_DEFAULT_IP=192.0.2.5 ./docker.py --pretty

# Run as input to a playbook:
ansible-playbook -i ~/projects/ansible/contrib/inventory/docker.py docker_inventory_test.yml

# Simple playbook to invoke with the above example:

    - name: Test docker_inventory, this will not connect to any hosts
      hosts: all
      gather_facts: no
      tasks:
        - debug: msg="Container - {{ inventory_hostname }}"

Конфигурация

Вы можете управлять поведением сценария инвентаря, задавая переменные среды или создавая файл docker.yml (пример приведен в ansible/contrib/inventory). Порядок приоритета: файл docker.yml, а затем переменные среды.

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

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

DOCKER_HOST
URL или путь к сокету Unix, используемый для подключения к API Docker. По умолчанию unix://var/run/docker.sock.
DOCKER_API_VERSION:
Версия API Docker, работающего на хосте Docker. По умолчанию - последняя версия API, поддерживаемая docker-py.
DOCKER_TIMEOUT:
Максимальное время ожидания ответа от API в секундах. По умолчанию 60 секунд.
DOCKER_TLS:
Защитите подключение к API с помощью TLS, не проверяя подлинность сервера хоста Docker. По умолчанию False.
DOCKER_TLS_VERIFY:
Защитите подключение к API с помощью TLS и проверьте подлинность сервера хоста Docker. По умолчанию False
DOCKER_TLS_HOSTNAME:
При проверке подлинности сервера хоста Docker укажите ожидаемое имя сервера. По умолчанию localhost.
DOCKER_CERT_PATH:
Путь к каталогу, содержащему клиентский сертификат, ключ клиента и сертификат CA.
DOCKER_SSL_VERSION:
Укажите допустимый номер версии SSL. Значение по умолчанию определяется docker-py, на момент написания документации - 1.0

В дополнение к переменным подключения есть несколько переменных, используемых для управления выполнением и выводом сценария:

DOCKER_CONFIG_FILE
Путь к файлу конфигурации. По умолчанию ./docker.yml.
DOCKER_PRIVATE_SSH_PORT:
Приватный порт (порт контейнера), на котором SSH слушает подключения. По умолчанию 22.
DOCKER_DEFAULT_IP:
IP-адрес, который нужно назначить ansible_host, когда SSH-порт контейнера отображается на интерфейсе «0.0.0.0».

Файл конфигурации

Использование файла конфигурации позволяет определить набор API Docker, с помощью которого создаётся инвентарь.

Имя файла по умолчанию выводится из имени скрипта инвентаря. По умолчанию сценарий будет искать имя скрипта (например, docker) с расширением «.yml».

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

Вот что вы можете определить в docker_inventory.yml:

defaults
Определяет подключение по умолчанию. Значения по умолчанию будут взяты из этого и применены ко всем значениям, не предоставленным для хоста, определённого в списке хостов.
hosts
Если вы хотите получить инвентарь с нескольких хостов Docker, определите список хостов.

Для хоста по умолчанию и каждого хоста в списке хостов определите следующие атрибуты:

host:
    description: The URL or Unix socket path used to connect to the Docker API.
    required: yes

tls:
   description: Connect using TLS without verifying the authenticity of the Docker host server.
   default: false
   required: false

tls_verify:
   description: Connect using TLS without verifying the authenticity of the Docker host server.
   default: false
   required: false

cert_path:
   description: Path to the client's TLS certificate file.
   default: null
   required: false

cacert_path:
   description: Use a CA certificate when performing server verification by providing the path to a CA certificate file.
   default: null
   required: false

key_path:
   description: Path to the client's TLS key file.
   default: null
   required: false

version:
   description: The Docker API version.
   required: false
   default: will be supplied by the docker-py module.

timeout:
   description: The amount of time in seconds to wait on an API response.
   required: false
   default: 60

default_ip:
   description: The IP address to assign to ansible_host when the container's SSH port is mapped to interface
   '0.0.0.0'.
   required: false
   default: 127.0.0.1

private_ssh_port:
   description: The port containers use for SSH
   required: false
   default: 22

© 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/scenario_guides/guide_docker.html

Spec-Zone.ru

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