community.docker.docker_compose_v2_exec 模块 – 在 Compose 服务的容器中运行命令
注意
此模块是 community.docker 集合(版本 4.1.0)的一部分。
如果您正在使用 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.docker
。您需要进一步的要求才能使用此模块,请参阅 要求 了解详细信息。
要在 playbook 中使用它,请指定:community.docker.docker_compose_v2_exec
。
community.docker 3.13.0 中的新功能
概要
使用 Docker Compose 在服务的容器中运行命令。
这可以用于在现有服务的容器中运行一次性命令,并封装
docker compose exec
。
要求
以下要求需要在执行此模块的主机上满足。
带有 Docker Compose 插件 2.18.0 或更高版本的 Docker CLI
如果使用
definition
,则需要 PyYAML
参数
参数 |
注释 |
---|---|
在 Docker 主机上运行的 Docker API 版本。 默认为此集合和 Docker 守护程序支持的最新 API 版本。 如果在任务中未指定该值,则将使用环境变量 默认值: |
|
通过提供 CA 证书文件的路径,在执行服务器验证时使用 CA 证书。 如果在任务中未指定该值,并且设置了环境变量 |
|
运行命令的目录。 |
|
如果设置为 如果使用带有 选项
|
|
要使用的 Docker CLI 上下文。 与 |
|
客户端 TLS 证书文件的路径。 如果任务中未指定该值,并且设置了环境变量 |
|
客户端 TLS 密钥文件的路径。 如果任务中未指定该值,并且设置了环境变量 |
|
描述一个或多个服务、网络和卷的 Compose 文件。 与 如果提供,PyYAML 必须可用于此模块,并且必须指定 请注意,使用此选项时,将创建一个临时目录,并在之后删除。 |
|
是否同步运行命令( 如果设置为 选项
|
|
Docker CLI 的路径。如果未提供,将在 |
|
用于连接 Docker API 的 URL 或 Unix 套接字路径。要连接到远程主机,请提供 TCP 连接字符串。例如, 如果任务中未指定该值,则将使用环境变量 与 |
|
环境变量及其各自值的字典,这些值将传递给容器内运行的命令。 YAML 解析器可能会将值解析为数字、布尔值或其他类型,因此必须用引号引起来(例如 请注意,如果要使用 Jinja2 模板传递值,例如 |
|
默认情况下,环境变量文件从位于 可以使用 路径是相对于 |
|
相对于 文件会按照给定的顺序加载和合并。 与 |
|
如果服务有多个副本,则是在其中运行命令的容器的索引。 |
|
是否向进程授予扩展权限。 选项
|
|
启动服务时要启用的配置文件列表。 等效于 |
|
提供项目名称。如果未提供,则项目名称取自 当提供了 |
|
包含 Compose 文件的目录路径( 如果提供了 与 |
|
要在其中运行命令的服务。 |
|
将命令的 stdin 直接设置为指定的值。 只有在 |
|
从结果中删除 stdout/stderr 末尾的空行。 选项
|
|
使用 TLS 安全连接到 API,但不验证 Docker 主机服务器的真实性。请注意,如果 如果在任务中未指定该值,则会改用环境变量 选项
|
|
在验证 Docker 主机服务器的真实性时,提供服务器的预期名称。 如果在任务中未指定该值,则会改用环境变量 |
|
是否分配 TTY。 选项
|
|
如果指定,则使用该用户执行此命令。 |
|
使用 TLS 并验证 Docker 主机服务器的真实性,从而安全连接到 API。 如果在任务中未指定该值,则会改用环境变量 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
操作组: community.docker.docker, docker |
在 |
|
支持:无 |
可以在 |
|
支持:无 |
当处于差异模式时,将返回有关已更改内容(或可能需要在 |
注释
注意
如果您需要在
command
或argv
中评估容器的环境变量,则需要通过 shell 传递命令,例如command=/bin/sh -c "echo $ENV_VARIABLE"
。Docker compose CLI 插件没有稳定的输出格式(例如,请参阅 https://github.com/docker/compose/issues/10872),对于主要操作也没有机器友好的输出格式。该模块尝试通过各种依赖于版本的行为调整以及测试旧版本和较新版本的 Docker compose CLI 插件来解决此问题。目前,该模块已使用 2.18.1 到 2.23.3 之间的多个插件版本进行了测试。插件版本的确切列表将随时间变化。Docker compose CLI 插件的新版本可能随时会破坏此模块。
通过为每个任务提供参数或定义环境变量来连接到 Docker 守护进程。您可以定义
DOCKER_HOST
、DOCKER_TLS_HOSTNAME
、DOCKER_API_VERSION
、DOCKER_CERT_PATH
、DOCKER_TLS
、DOCKER_TLS_VERIFY
和DOCKER_TIMEOUT
。如果您正在使用 docker machine,请运行产品随附的用于设置环境的脚本。它将为您设置这些变量。有关更多详细信息,请参阅 https://docs.docker.net.cn/machine/reference/env/。此模块不使用 Docker SDK for Python 与 Docker 守护进程通信。它直接调用 Docker CLI 程序。
另请参阅
另请参阅
- community.docker.docker_compose_v2
使用 Docker Compose CLI 插件管理多容器 Docker 应用程序。
示例
- name: Run a simple command (command)
community.docker.docker_compose_v2_exec:
service: 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_compose_v2_exec:
service: foo
argv:
- /bin/bash
- "-c"
- "ls -lah > /dev/stderr"
chdir: /root
register: result
- name: Print stderr lines
ansible.builtin.debug:
var: result.stderr_lines
返回值
通用返回值记录在此处,以下是此模块特有的字段
键 |
描述 |
---|---|
容器命令的标准错误输出。 返回:成功和 |
|
容器命令的标准输出。 返回:成功和 |