Spec-Zone.ru › Ansible 2.9

Руководство по 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 Host. По умолчанию используется последняя версия API, поддерживаемая docker-py.
DOCKER_TIMEOUT
Максимальное время ожидания ответа от API в секундах.
DOCKER_CERT_PATH
Путь к каталогу, содержащему клиентский сертификат, ключ и сертификат CA.
DOCKER_SSL_VERSION
Укажите допустимый номер версии SSL.
DOCKER_TLS
Защитите подключение к API с помощью TLS без проверки подлинности Docker Host.
DOCKER_TLS_VERIFY
Защитите подключение к API с помощью TLS и проверьте подлинность Docker Host.

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

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

Группы

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

  • идентификатор контейнера
  • имя контейнера
  • короткая форма идентификатора контейнера
  • image_name (image_<имя изображения>)
  • docker_host
  • запущенный
  • остановленный

Примеры

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

# 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, а затем переменные окружения.

Переменные окружения

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

DOCKER_HOST
URL или путь к Unix-сокету, используемый для подключения к API Docker. По умолчанию unix://var/run/docker.sock.
DOCKER_API_VERSION:
Версия API Docker, работающего на Docker Host. По умолчанию используется последняя версия API, поддерживаемая docker-py.
DOCKER_TIMEOUT:
Максимальное время ожидания ответа от API в секундах. По умолчанию 60 секунд.
DOCKER_TLS:
Защитите подключение к API с помощью TLS без проверки подлинности сервера Docker host. По умолчанию False.
DOCKER_TLS_VERIFY:
Защитите подключение к API с помощью TLS и проверьте подлинность сервера Docker host. Значение по умолчанию False
DOCKER_TLS_HOSTNAME:
При проверке подлинности сервера Docker Host укажите ожидаемое имя сервера. По умолчанию 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'.

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

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

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

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

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

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

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

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

Spec-Zone.ru

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