Модуль community.docker.docker_container_exec – выполнение команды в контейнере Docker
Примечание
Этот модуль входит в коллекцию community.docker (версия 5.2.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.docker. Для использования этого модуля требуются дополнительные компоненты; подробности см. в разделе Требования.
Чтобы использовать его в плейбуке, укажите: community.docker.docker_container_exec.
Добавлено в community.docker 1.5.0
Краткое описание
- Выполняет команду в контейнере Docker.
Требования
На хосте, на котором выполняется этот модуль, необходимы следующие компоненты.
- Docker API >= 1.25
- paramiko (при использовании SSH с
use_ssh_client=false) - pyOpenSSL (при использовании TLS)
- pywin32 (при использовании именованных каналов в Windows 32)
- requests
Параметры
Параметр | Комментарии |
|---|---|
api_version псевдонимы: docker_api_version строка | Версия Docker API, работающего на хосте Docker. По умолчанию используется последняя версия API, поддерживаемая этой коллекцией и демоном Docker. Если значение не указано в задаче, вместо него будет использоваться значение переменной окружения По умолчанию: |
argv список / элементы=строка | |
ca_path псевдонимы: ca_cert, tls_ca_cert, cacert_path путь | Для проверки сервера используйте сертификат центра сертификации (CA), указав путь к файлу сертификата CA. Если значение не указано в задаче, а переменная окружения Ранее этот параметр назывался |
chdir строка | Каталог, в котором выполняется команда. |
client_cert псевдонимы: tls_client_cert, cert_path путь | Путь к файлу сертификата TLS клиента. Если значение не указано в задаче, а переменная окружения |
client_key псевдонимы: tls_client_key, key_path путь | Путь к файлу ключа TLS клиента. Если значение не указано в задаче, а переменная окружения |
command строка | |
container строка / обязательный | Имя контейнера, в котором выполняется команда. |
debug логическое значение | Режим отладки Допустимые значения:
|
detach логическое значение добавлено в community.docker 2.1.0 | Выполнять команду синхронно ( Если задано значение Допустимые значения:
|
docker_host псевдонимы: docker_url строка | URL или путь к сокету Unix для подключения к Docker API. Для подключения к удаленному хосту укажите строку TCP-подключения. Например, Если значение не указано в задаче, вместо него будет использоваться значение переменной окружения По умолчанию: |
env словарь добавлено в community.docker 2.1.0 | Словарь переменных окружения и соответствующих им значений, передаваемых команде, выполняемой внутри контейнера. Значения, которые парсер YAML может распознать как числа, логические значения или другие типы, необходимо заключать в кавычки (например, Обратите внимание: если вы передаете значения с помощью шаблонов Jinja2, например |
stdin строка | Напрямую задать stdin команды указанным значением. Можно использовать только при условии |
stdin_add_newline логическое значение | Если задано значение Допустимые значения:
|
strip_empty_ends логическое значение | Удалять пустые строки в конце stdout/stderr в результате. Допустимые значения:
|
timeout целое число | Максимальное время ожидания ответа от API в секундах. Если значение не указано в задаче, вместо него будет использоваться значение переменной окружения По умолчанию: |
tls логическое значение | Защитить соединение с API с помощью TLS без проверки подлинности сервера хоста Docker. Обратите внимание: если для Если значение не указано в задаче, вместо него будет использоваться значение переменной окружения Допустимые значения:
|
tls_hostname строка | При проверке подлинности сервера хоста Docker укажите ожидаемое имя сервера. Если значение не указано в задаче, вместо него будет использоваться значение переменной окружения Обратите внимание: в предыдущих версиях этот параметр имел значение по умолчанию |
tty логическое значение | Выделять ли TTY. Допустимые значения:
|
use_ssh_client логическое значение добавлено в community.docker 1.5.0 | Для SSH-транспорта использовать инструмент командной строки Допустимые значения:
|
user строка | Пользователь, от имени которого выполняется команда, если он указан. |
validate_certs псевдонимы: tls_verify логическое значение | Защитить соединение с API с помощью TLS и проверить подлинность сервера хоста Docker. Если значение не указано в задаче, вместо него будет использоваться значение переменной окружения Допустимые значения:
|
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
action_group | Группы действий: community.docker.docker, docker | Используйте |
check_mode | Поддержка: нет | Может выполняться в |
diff_mode | Поддержка: нет | В режиме diff возвращает сведения о том, что изменилось (или что, возможно, нужно изменить в |
idempotent | Поддержка: не применимо Идемпотентность выполняемой команды зависит от самой команды. | При повторном запуске подряд вне режима проверки с теми же аргументами второй вызов указывает на отсутствие изменений. Предполагается, что система, которой управляет модуль или данные которой он запрашивает, не изменилась существенным образом. |
Примечания
Примечание
- Не работает с TCP TLS-сокетами при использовании
stdin. Это связано с невозможностью отправитьclose_notify, не закрывая соединение с помощьюSSLSocketPython. Дополнительные сведения см. на странице https://github.com/ansible-collections/community.docker/issues/605. - Если необходимо обработать переменные окружения контейнера в
commandилиargv, команду нужно передать оболочке, напримерcommand=/bin/sh -c "echo $ENV_VARIABLE". То же самое необходимо сделать, если нужно использовать шаблоны glob или другие возможности оболочки, например перенаправление. - Подключайтесь к демону 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 для Python для взаимодействия с демоном Docker. Вместо этого он использует код, производный от Docker SDK или Python и включенный в эту коллекцию.
Примеры
---
- name: Run a simple command (command)
community.docker.docker_container_exec:
container: foo
command: /bin/bash -c "ls -lah"
chdir: /root
register: result
- name: Print stdout
ansible.builtin.debug:
var: result.stdout
- name: Run a simple command (argv)
community.docker.docker_container_exec:
container: foo
argv:
- /bin/bash
- "-c"
- "ls -lah > /dev/stderr"
chdir: /root
register: result
- name: Print stderr lines
ansible.builtin.debug:
var: result.stderr_lines
Возвращаемые значения
Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
exec_id строка добавлено в community.docker 2.1.0 | Идентификатор выполнения команды. Возвращается: при успехе и Пример: |
rc целое число | |
stderr строка | Поток стандартного вывода ошибок команды контейнера. Возвращается: при успехе и |
stdout строка | Поток стандартного вывода команды контейнера. Возвращается: при успехе и |
Ссылки на коллекцию
© 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_container_exec_module.html