Spec-Zone.ru › Ansible 2.7

Начало работы с Docker

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

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

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

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

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

Планируется еще больше. Ознакомьтесь с последними идеями и концепциями в репозитории предложений 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_service также требует 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 на один или несколько Docker API. Он динамичен, потому что инвентарь генерируется во время выполнения, а не считывается из статического файла. Сценарий генерирует инвентарь, подключаясь к одному или нескольким Docker API и просматривая обнаруженные контейнеры на каждом API. К каким API обращается сценарий, можно определить с помощью переменных окружения или файла конфигурации.

Группы

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

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

Примеры

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

# 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. По умолчанию - последняя версия 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'.

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

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

Имя файла по умолчанию получено из имени сценария инвентаризации. По умолчанию сценарий будет искать имя сценария (например, 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.7/scenario_guides/guide_docker.html

Spec-Zone.ru

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