community.docker.docker_containers инвентаризация – динамический плагин инвентаризации Ansible для контейнеров Docker
Примечание
Этот плагин инвентаризации входит в коллекцию community.docker (версия 3.13.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)
- backports.ssl_match_hostname (при использовании TLS в Python 2)
Параметры
Параметр | Комментарии |
|---|---|
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 aliases: docker_url string | URL или путь к Unix-сокету, используемый для подключения к API Docker. Для подключения к удалённому хосту укажите строку TCP-соединения. Например, Если значение не указано в задаче, будет использовано значение переменной среды Значение по умолчанию: |
filters список / элементы=словарь добавлен в community.docker 3.5.0 | Список фильтров включения/исключения, позволяющий выбирать/исключать хосты для этого инвентаризатора. Фильтры обрабатываются последовательно до тех пор, пока не будет найден первый фильтр, где |
|
exclude строка |
Условие Jinja2. Если оно совпадает для хоста, этот хост исключается. Можно указать только одно из |
|
include строка |
Условие Jinja2. Если оно совпадает для хоста, этот хост включается. Можно указать только одно из |
groups словарь | Добавление хостов в группу на основе условных выражений Jinja2. Значение по умолчанию: |
keyed_groups список / элементы=словарь | Добавление хостов в группы на основе значений переменной. Значение по умолчанию: |
|
default_value строка добавлен в ansible-core 2.12 |
Значение по умолчанию, когда значение переменной хоста пустая строка. Этот параметр взаимоисключающий с |
|
key строка |
Ключ из входного словаря, используемый для создания групп |
|
parent_group строка |
Родительская группа для ключевой группы |
|
prefix строка |
Имя ключевой группы начнётся с этого префикса Значение по умолчанию: |
|
separator строка |
Разделитель, используемый для создания имени ключевой группы Значение по умолчанию: |
|
trailing_separator булево добавлен в ansible-core 2.12 |
Установите этот параметр в Этот параметр взаимоисключающий с Варианты:
|
leading_separator булево добавлен в ansible-core 2.11 | Используется в сочетании с keyed_groups. По умолчанию имя ключевой группы, у которой не задан префикс или разделитель, начинается с нижнего подчёркивания. Это потому, что префикс по умолчанию пустой, а разделитель по умолчанию “_”. Установите этот параметр в False, чтобы опустить ведущее нижнее подчёркивание (или другой разделитель), если префикс не задан. Если имя группы получено из отображения, разделитель всё равно используется для конкатенации элементов. Чтобы вообще не использовать разделитель в имени группы, установите разделитель для ключевой группы в пустую строку. Варианты:
|
plugin строка / обязательно | Имя этого плагина, оно должно всегда быть установлено в Варианты:
|
private_ssh_port целое число | Порт, который контейнеры используют для SSH. Используется только если Значение по умолчанию: |
ssl_version строка Удалено в версии 4.0.0 Почему: Это было необходимо давно для решения проблем со старыми версиями TLS/SSL. В настоящее время это больше не нужно. Альтернатива: Ничего. | Укажите допустимый номер версии SSL. Значение по умолчанию определяется модулем SSL Python. Если значение не указано в задаче, будет использовано значение переменной среды |
строго boolean | Если Поскольку в выражениях можно использовать факты, они могут не всегда быть доступны, и мы по умолчанию игнорируем эти ошибки. Варианты:
|
таймаут целое число | Максимальное время ожидания ответа от API в секундах. Если значение не указано в задаче, используется значение переменной окружения По умолчанию: |
tls boolean | Обеспечьте безопасность соединения с API, используя TLS без проверки подлинности сервера Docker. Обратите внимание, что если Если значение не указано в задаче, используется значение переменной окружения Варианты:
|
tls_hostname строка | При проверке подлинности сервера Docker укажите ожидаемое имя сервера. Если значение не указано в задаче, используется значение переменной окружения Обратите внимание, что этот параметр имел значение по умолчанию |
use_extra_vars boolean добавлен в ansible-core 2.11 | Объединить дополнительные переменные в доступные переменные для композиции (высший приоритет). Варианты:
Настройка:
|
use_ssh_client boolean добавлен в community.docker 1.5.0 | Для SSH-транспортов использовать утилиту CLI Варианты:
|
validate_certs aliases: tls_verify boolean | Обеспечьте безопасность соединения с API, используя TLS и проверяя подлинность сервера Docker. Если значение не указано в задаче, используется значение переменной окружения Варианты:
|
verbose_output boolean | Включить/выключить вывод всей доступной метаданных инспекции. Обратите внимание, что все ключи верхнего уровня будут преобразованы в формат Если это Скрипт инвентаризации Варианты:
|
Примечания
Примечание
- Файл конфигурации должен быть файлом YAML, имя которого заканчивается на
docker.ymlилиdocker.yaml. Другие имена файлов не будут приняты. - Подключиться к демону Docker, предоставив параметры каждой задаче или определив переменные окружения. Вы можете определить
DOCKER_HOST,DOCKER_TLS_HOSTNAME,DOCKER_API_VERSION,DOCKER_CERT_PATH,DOCKER_SSL_VERSION,DOCKER_TLS,DOCKER_TLS_VERIFYиDOCKER_TIMEOUT. Если вы используете docker machine, запустите скрипт, поставляемый с продуктом, который настраивает среду. Он установит эти переменные за вас. Для получения более подробной информации см. https://docs.docker.com/machine/reference/env/. - Этот модуль не использует Docker SDK для 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 didn't match any of the above filters
- exclude: true
Ссылки на сборки
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/docker/docker_containers_inventory.html