Spec-Zone.ru › Ansible 2.4

Начало работы с 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, и начните сборку образов из ваших playbooks Ansible.

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

Планируется больше. Ознакомьтесь с последними идеями и концепциями в репозитории предложений Ansible.

Требования

Для использования модулей 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 обращается сценарий, можно определить с помощью переменных окружения или файла конфигурации.

Группы

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

  • идентификатор контейнера
  • имя контейнера
  • краткий идентификатор контейнера
  • имя_изображения (имя_изображения)
  • 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
      hosts: all
      connection: local
      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.4/guide_docker.html

Spec-Zone.ru

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