Spec-Zone.ru › Ansible 2.6

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

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

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

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

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

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

Планируется ещё больше. Смотрите последние идеи и мысли в репозитории предложений Ansible по Ansible proposal repo.

Требования

Использование модулей docker требует наличия docker-py на хосте, на котором работает Ansible. Вам потребуется версия >= 1.7.0.

$ pip install 'docker-py>=1.7.0'

Модуль 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
  • running
  • stopped

Примеры

Вы можете запустить сценарий интерактивно из командной строки или передать его в качестве инвентаря в 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
      hosts: all
      connection: local
      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».

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

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

Spec-Zone.ru

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