Spec-Zone.ru › Ansible

Инвентаризация community.docker.docker_containers — плагин динамической инвентаризации Ansible для контейнеров Docker

Примечание

Этот плагин инвентаризации входит в коллекцию community.docker (версия 5.2.0).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Чтобы установить её, используйте: ansible-galaxy collection install community.docker. Для использования этого плагина инвентаризации необходимы дополнительные требования; подробности см. в разделе Требования.

Чтобы использовать его в плейбуке, укажите: community.docker.docker_containers.

Добавлено в community.docker 1.1.0

  • Краткое описание
  • Требования
  • Параметры
  • Примечания
  • Примеры

Краткое описание

  • Считывает данные инвентаризации через API Docker.
  • Использует файл конфигурации YAML с расширением docker.(yml|yaml).

Требования

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

  • requests
  • pywin32 (при использовании именованных каналов в Windows 32)
  • paramiko (при использовании SSH с use_ssh_client=false)
  • pyOpenSSL (при использовании TLS)

Параметры

Параметр

Комментарии

add_legacy_groups

boolean

Добавить те же группы, что и скрипт инвентаризации docker. Это следующие группы:

<container id>: содержит контейнер с этим ID.

<container name>: содержит контейнер с этим именем.

<container short id>: содержит контейнеры с этим коротким ID (первые 13 символов ID).

image_<image name>: содержит контейнеры с образом <image name>.

stack_<stack name>: содержит контейнеры, относящиеся к стеку <stack name>.

service_<service name>: содержит контейнеры, относящиеся к службе <service name>.

<docker_host>: содержит контейнеры, относящиеся к демону Docker docker_host. Полезно, если этот плагин используется с несколькими демонами Docker.

running: содержит все запущенные контейнеры.

stopped: содержит все незапущенные контейнеры.

Если для этого параметра задано значение, отличное от true, для добавления контейнеров в группы следует использовать keyed groups. Примеры использования приведены в разделе примеров.

Варианты:

  • false ← (по умолчанию)
  • true

api_version

псевдонимы: docker_api_version

string

Версия API Docker, работающего на узле Docker.

По умолчанию используется последняя версия API, поддерживаемая этой коллекцией и демоном Docker.

Если значение не указано в задаче, вместо него будет использоваться значение переменной среды DOCKER_API_VERSION. Если переменная среды не задана, будет использоваться значение по умолчанию.

По умолчанию: "auto"

ca_path

псевдонимы: ca_cert, tls_ca_cert, cacert_path

path

Для проверки сервера используйте сертификат CA, указав путь к файлу сертификата CA.

Если значение не указано в задаче, а переменная среды DOCKER_CERT_PATH задана, будет использоваться файл ca.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH.

Ранее этот параметр назывался ca_cert, а в community.docker 3.6.0 был переименован в ca_path. Старое имя добавлено как псевдоним и по-прежнему может использоваться.

client_cert

псевдонимы: tls_client_cert, cert_path

path

Путь к файлу сертификата TLS клиента.

Если значение не указано в задаче, а переменная среды DOCKER_CERT_PATH задана, будет использоваться файл cert.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH.

client_key

псевдонимы: tls_client_key, key_path

path

Путь к файлу ключа TLS клиента.

Если значение не указано в задаче, а переменная среды DOCKER_CERT_PATH задана, будет использоваться файл key.pem из каталога, указанного в переменной среды DOCKER_CERT_PATH.

compose

dictionary

Создавать переменные с помощью выражений jinja2.

По умолчанию: {}

configure_docker_daemon

boolean

добавлено в community.docker 1.8.0

Передавать ли всю конфигурацию демона Docker из плагина инвентаризации в плагин подключения.

Используется только при connection_type=docker-api.

Варианты:

  • false
  • true ← (по умолчанию)

connection_type

string

Тип подключения к контейнерам.

Один из способов подключения к контейнерам — использовать SSH (ssh). Для этого используются параметры default_ip и private_ssh_port. Для этого внутри контейнеров должен работать демон SSH.

В качестве альтернативы, docker-cli выбирает плагин подключения community.docker.docker, а docker-api (по умолчанию) выбирает плагин подключения community.docker.docker_api.

При использовании docker-api все значения конфигурации демона Docker передаются из плагина инвентаризации в плагин подключения. Это можно настроить с помощью configure_docker_daemon.

Обратите внимание, что community.docker.docker_api не работает с TCP-сокетами TLS! Дополнительные сведения см. на странице https://github.com/ansible-collections/community.docker/issues/605.

Варианты:

  • "ssh"
  • "docker-cli"
  • "docker-api" ← (по умолчанию)

debug

boolean

Режим отладки

Варианты:

  • false ← (по умолчанию)
  • true

default_ip

string

IP-адрес, назначаемый ansible_host, когда порт SSH контейнера сопоставлен с интерфейсом «0.0.0.0».

Используется только если connection_type — ssh.

По умолчанию: "127.0.0.1"

docker_host

псевдонимы: docker_url

string

URL или путь к сокету Unix, используемый для подключения к API Docker. Для подключения к удаленному узлу укажите строку TCP-подключения. Например, tcp://192.0.2.23:2376. Если для шифрования подключения используется TLS, модуль автоматически заменит tcp в URL подключения на https.

Если значение не указано в задаче, вместо него будет использоваться значение переменной среды DOCKER_HOST. Если переменная среды не задана, будет использоваться значение по умолчанию.

По умолчанию: "unix:///var/run/docker.sock"

filters

list / elements=dictionary

добавлено в community.docker 3.5.0

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

Фильтры обрабатываются последовательно до тех пор, пока не будет найден первый фильтр, которому соответствует filters[].exclude или filters[].include. Если совпадает filters[].exclude, узел исключается; если совпадает filters[].include, узел включается. Если ни один фильтр не совпал, узел включается.

exclude

string

Условие Jinja2. Если оно выполняется для узла, этот узел исключается.

Можно указать только один из параметров filters[].exclude и filters[].include.

include

string

Условие Jinja2. Если оно выполняется для узла, этот узел включается.

Можно указать только один из параметров filters[].exclude и filters[].include.

groups

dictionary

Добавлять узлы в группы на основе условий Jinja2.

По умолчанию: {}

keyed_groups

list / elements=dictionary

Добавлять узлы в группы на основе значений переменной.

По умолчанию: []

default_value

string

добавлено в ansible-core 2.12

Значение по умолчанию, если значение переменной узла равно None или является пустой строкой.

Этот параметр взаимоисключающий с keyed_groups[].trailing_separator.

key

string

Ключ входного словаря, используемый для создания групп.

parent_group

string

Родительская группа для keyed group.

prefix

string

Имя keyed group будет начинаться с этого префикса.

По умолчанию: ""

separator

string

Разделитель, используемый для формирования имени keyed group.

По умолчанию: "_"

trailing_separator

boolean

добавлено в ansible-core 2.12

Задайте для этого параметра значение false, чтобы опустить keyed_groups[].separator после переменной узла, если значение равно None или является пустой строкой.

Этот параметр взаимоисключающий с keyed_groups[].default_value.

Варианты:

  • false
  • true ← (по умолчанию)

leading_separator

boolean

добавлено в ansible-core 2.11

Используйте вместе с keyed_groups.

По умолчанию имя keyed group, для которой не указан префикс или разделитель, начинается с символа подчеркивания.

Это происходит потому, что префиксом по умолчанию является "", а разделителем по умолчанию — "_".

Задайте для этого параметра значение false, чтобы опустить начальное подчеркивание (или другой разделитель), если префикс не задан.

Если имя группы создается на основе сопоставления, разделитель по-прежнему используется для объединения элементов.

Чтобы вообще не использовать разделитель в имени группы, задайте для разделителя keyed group пустую строку.

Варианты:

  • false
  • true ← (по умолчанию)

plugin

string / обязательный

Имя этого плагина. Чтобы плагин распознал эту конфигурацию как собственную, здесь всегда должно быть задано значение community.docker.docker_containers.

Варианты:

  • "community.docker.docker_containers"

private_ssh_port

integer

Порт, используемый контейнерами для SSH.

Используется только если connection_type — ssh.

По умолчанию: 22

strict

boolean

Если yes, считать недопустимые записи фатальной ошибкой; в противном случае пропускать их и продолжать работу.

Поскольку в выражениях можно использовать факты, они могут быть доступны не всегда; по умолчанию такие ошибки игнорируются.

Варианты:

  • false ← (по умолчанию)
  • true

timeout

integer

Максимальное время ожидания ответа от API в секундах.

Если значение не указано в задаче, вместо него будет использоваться значение переменной среды DOCKER_TIMEOUT. Если переменная среды не задана, будет использоваться значение по умолчанию.

По умолчанию: 60

tls

boolean

Защитить подключение к API с помощью TLS без проверки подлинности сервера узла Docker. Обратите внимание: если для validate_certs также задано значение true, этот параметр будет иметь приоритет.

Если значение не указано в задаче, вместо него будет использоваться значение переменной среды DOCKER_TLS. Если переменная среды не задана, будет использоваться значение по умолчанию.

Варианты:

  • false ← (по умолчанию)
  • true

tls_hostname

string

При проверке подлинности сервера узла Docker укажите ожидаемое имя сервера.

Если значение не указано в задаче, вместо него будет использоваться значение переменной среды DOCKER_TLS_HOSTNAME. Если переменная среды не задана, будет использоваться значение по умолчанию.

Обратите внимание, что в более ранних версиях для этого параметра использовалось значение по умолчанию localhost. Оно было удалено в community.docker 3.0.0.

use_extra_vars

boolean

добавлено в ansible-core 2.11

Объединить дополнительные переменные с доступными переменными для композиции (наивысший приоритет).

Варианты:

  • false ← (по умолчанию)
  • true

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

  • Запись INI:

    [inventory_plugins]
    use_extra_vars = false
    
  • Переменная среды: ANSIBLE_INVENTORY_USE_EXTRA_VARS

use_ssh_client

boolean

добавлено в community.docker 1.5.0

Для SSH-транспорта использовать инструмент командной строки ssh вместо paramiko.

Варианты:

  • false ← (по умолчанию)
  • true

validate_certs

псевдонимы: tls_verify

boolean

Защитить подключение к API с помощью TLS и проверить подлинность сервера узла Docker.

Если значение не указано в задаче, вместо него будет использоваться значение переменной среды DOCKER_TLS_VERIFY. Если переменная среды не задана, будет использоваться значение по умолчанию.

Варианты:

  • false ← (по умолчанию)
  • true

verbose_output

boolean

Включить или отключить добавление всех доступных метаданных проверки.

Обратите внимание: все ключи верхнего уровня будут преобразованы в формат docker_xxx. Например, HostConfig преобразуется в docker_hostconfig.

Если задано значение false, эти значения можно использовать только во время compose, groups и keyed_groups.

Скрипт инвентаризации docker всегда добавлял эти переменные, поэтому для обеспечения совместимости задайте этому параметру значение true.

Варианты:

  • false ← (по умолчанию)
  • true

Примечание

Для перечисленных выше записей конфигурации каждого типа (переменная Ansible, переменная среды и т. д.) установлен порядок приоритета от низкого к высокому. Например, переменная, расположенная ниже в списке, переопределяет переменную, расположенную выше. Типы записей также упорядочены по приоритету от низкого к высокому. Например, запись ansible.cfg (расположенная выше в списке) переопределяется переменной Ansible (расположенной ниже в списке).

Примечания

Примечание

  • Файл конфигурации должен быть файлом YAML, имя которого заканчивается на docker.yml или docker.yaml. Файлы с другими именами не принимаются.
  • На этом этапе инвентаризация ещё не завершена, поэтому автоматически заполненные группы all и ungrouped будут отражать только то, что в них явно добавили предыдущие источники инвентаризации.
  • Во время формирования инвентаризации переменные среды выполнения «magic variables» недоступны. Например, groups и hostvars ещё не существуют.
  • Подключиться к демону Docker можно, передавая параметры в каждой задаче или задав переменные среды. Можно задать DOCKER_HOST, DOCKER_TLS_HOSTNAME, DOCKER_API_VERSION, DOCKER_CERT_PATH, DOCKER_TLS, DOCKER_TLS_VERIFY и DOCKER_TIMEOUT. Если вы используете Docker Machine, запустите скрипт, поставляемый с продуктом и настраивающий среду. Он задаст эти переменные за вас. Подробнее см. на странице https://docs.docker.com/machine/reference/env/.
  • Этот модуль не использует Docker SDK for Python для взаимодействия с демоном Docker. Он использует код, производный от Docker SDK или Python и включённый в эту коллекцию.

Примеры

---
# Minimal example using local Docker daemon
plugin: community.docker.docker_containers
docker_host: unix:///var/run/docker.sock

---
# Minimal example using remote Docker daemon
plugin: community.docker.docker_containers
docker_host: tcp://my-docker-host:2375

---
# Example using remote Docker daemon with unverified TLS
plugin: community.docker.docker_containers
docker_host: tcp://my-docker-host:2376
tls: true

---
# Example using remote Docker daemon with verified TLS and client certificate verification
plugin: community.docker.docker_containers
docker_host: tcp://my-docker-host:2376
validate_certs: true
ca_path: /somewhere/ca.pem
client_key: /somewhere/key.pem
client_cert: /somewhere/cert.pem

---
# Example using constructed features to create groups
plugin: community.docker.docker_containers
docker_host: tcp://my-docker-host:2375
strict: false
keyed_groups:
  # Add containers with primary network foo to a network_foo group
  - prefix: network
    key: 'docker_hostconfig.NetworkMode'
  # Add Linux hosts to an os_linux group
  - prefix: os
    key: docker_platform

---
# Example using SSH connection with an explicit fallback for when port 22 has not been
# exported: use container name as ansible_ssh_host and 22 as ansible_ssh_port
plugin: community.docker.docker_containers
connection_type: ssh
compose:
  ansible_ssh_host: ansible_ssh_host | default(docker_name[1:], true)
  ansible_ssh_port: ansible_ssh_port | default(22, true)

---
# Only consider containers which have a label 'foo', or whose name starts with 'a'
plugin: community.docker.docker_containers
filters:
  # Accept all containers which have a label called 'foo'
  - include: >-
      "foo" in docker_config.Labels
  # Next accept all containers whose inventory_hostname starts with 'a'
  - include: >-
      inventory_hostname.startswith("a")
  # Exclude all containers that did not match any of the above filters
  - exclude: true

Авторы

  • Felix Fontein (@felixfontein)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Получить помощь (Docker)
  • Получить помощь (Docker Compose)
  • Получить помощь (Docker Swarm)
  • Сообщить об ошибке
  • Предложить новую функцию
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/docker/docker_containers_inventory.html

Spec-Zone.ru

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