Инвентаризация 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 | Добавить те же группы, что и скрипт инвентаризации
Если для этого параметра задано значение, отличное от Варианты:
|
api_version псевдонимы: docker_api_version string | Версия API Docker, работающего на узле Docker. По умолчанию используется последняя версия API, поддерживаемая этой коллекцией и демоном Docker. Если значение не указано в задаче, вместо него будет использоваться значение переменной среды По умолчанию: |
ca_path псевдонимы: ca_cert, tls_ca_cert, cacert_path path | Для проверки сервера используйте сертификат CA, указав путь к файлу сертификата CA. Если значение не указано в задаче, а переменная среды Ранее этот параметр назывался |
client_cert псевдонимы: tls_client_cert, cert_path path | Путь к файлу сертификата TLS клиента. Если значение не указано в задаче, а переменная среды |
client_key псевдонимы: tls_client_key, key_path path | Путь к файлу ключа TLS клиента. Если значение не указано в задаче, а переменная среды |
compose dictionary | Создавать переменные с помощью выражений jinja2. По умолчанию: |
configure_docker_daemon boolean добавлено в community.docker 1.8.0 | Передавать ли всю конфигурацию демона Docker из плагина инвентаризации в плагин подключения. Используется только при Варианты:
|
connection_type string | Тип подключения к контейнерам. Один из способов подключения к контейнерам — использовать SSH ( В качестве альтернативы, При использовании Обратите внимание, что community.docker.docker_api не работает с TCP-сокетами TLS! Дополнительные сведения см. на странице https://github.com/ansible-collections/community.docker/issues/605. Варианты:
|
debug boolean | Режим отладки Варианты:
|
default_ip string | IP-адрес, назначаемый ansible_host, когда порт SSH контейнера сопоставлен с интерфейсом «0.0.0.0». Используется только если По умолчанию: |
docker_host псевдонимы: docker_url string | URL или путь к сокету Unix, используемый для подключения к API Docker. Для подключения к удаленному узлу укажите строку TCP-подключения. Например, Если значение не указано в задаче, вместо него будет использоваться значение переменной среды По умолчанию: |
filters list / elements=dictionary добавлено в community.docker 3.5.0 | Список фильтров включения и исключения, позволяющих выбирать и снимать выбор с узлов для этой инвентаризации. Фильтры обрабатываются последовательно до тех пор, пока не будет найден первый фильтр, которому соответствует |
|
exclude string |
Условие Jinja2. Если оно выполняется для узла, этот узел исключается. Можно указать только один из параметров |
|
include string |
Условие Jinja2. Если оно выполняется для узла, этот узел включается. Можно указать только один из параметров |
groups dictionary | Добавлять узлы в группы на основе условий Jinja2. По умолчанию: |
keyed_groups list / elements=dictionary | Добавлять узлы в группы на основе значений переменной. По умолчанию: |
|
default_value string добавлено в ansible-core 2.12 |
Значение по умолчанию, если значение переменной узла равно Этот параметр взаимоисключающий с |
|
key string |
Ключ входного словаря, используемый для создания групп. |
|
parent_group string |
Родительская группа для keyed group. |
|
prefix string |
Имя keyed group будет начинаться с этого префикса. По умолчанию: |
|
separator string |
Разделитель, используемый для формирования имени keyed group. По умолчанию: |
|
trailing_separator boolean добавлено в ansible-core 2.12 |
Задайте для этого параметра значение Этот параметр взаимоисключающий с Варианты:
|
leading_separator boolean добавлено в ansible-core 2.11 | Используйте вместе с По умолчанию имя keyed group, для которой не указан префикс или разделитель, начинается с символа подчеркивания. Это происходит потому, что префиксом по умолчанию является Задайте для этого параметра значение Если имя группы создается на основе сопоставления, разделитель по-прежнему используется для объединения элементов. Чтобы вообще не использовать разделитель в имени группы, задайте для разделителя keyed group пустую строку. Варианты:
|
plugin string / обязательный | Имя этого плагина. Чтобы плагин распознал эту конфигурацию как собственную, здесь всегда должно быть задано значение Варианты:
|
private_ssh_port integer | Порт, используемый контейнерами для SSH. Используется только если По умолчанию: |
strict boolean | Если Поскольку в выражениях можно использовать факты, они могут быть доступны не всегда; по умолчанию такие ошибки игнорируются. Варианты:
|
timeout integer | Максимальное время ожидания ответа от API в секундах. Если значение не указано в задаче, вместо него будет использоваться значение переменной среды По умолчанию: |
tls boolean | Защитить подключение к API с помощью TLS без проверки подлинности сервера узла Docker. Обратите внимание: если для Если значение не указано в задаче, вместо него будет использоваться значение переменной среды Варианты:
|
tls_hostname string | При проверке подлинности сервера узла Docker укажите ожидаемое имя сервера. Если значение не указано в задаче, вместо него будет использоваться значение переменной среды Обратите внимание, что в более ранних версиях для этого параметра использовалось значение по умолчанию |
use_extra_vars boolean добавлено в ansible-core 2.11 | Объединить дополнительные переменные с доступными переменными для композиции (наивысший приоритет). Варианты:
Конфигурация:
|
use_ssh_client boolean добавлено в community.docker 1.5.0 | Для SSH-транспорта использовать инструмент командной строки Варианты:
|
validate_certs псевдонимы: tls_verify boolean | Защитить подключение к API с помощью TLS и проверить подлинность сервера узла Docker. Если значение не указано в задаче, вместо него будет использоваться значение переменной среды Варианты:
|
verbose_output boolean | Включить или отключить добавление всех доступных метаданных проверки. Обратите внимание: все ключи верхнего уровня будут преобразованы в формат Если задано значение Скрипт инвентаризации Варианты:
|
Примечание
Для перечисленных выше записей конфигурации каждого типа (переменная 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
Ссылки на коллекцию
© 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