community.docker.docker_container_copy_into 模块 – 将文件复制到 Docker 容器

注意

此模块是 community.docker 集合 (版本 4.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.docker。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求

要在 playbook 中使用它,请指定:community.docker.docker_container_copy_into

community.docker 3.4.0 中的新增功能

概要

  • 将文件复制到 Docker 容器。

  • 类似于 docker cp

  • 要复制非运行容器中的文件,您必须提供 owner_idgroup_id 选项。如果容器不包含具有 id 工具的 /bin/sh shell,这也 是必要的。

注意

此模块具有相应的 action 插件

要求

以下要求是在执行此模块的主机上所需的。

  • Docker API >= 1.25

  • backports.ssl_match_hostname(在 Python 2 上使用 TLS 时)

  • paramiko(在使用 SSH 且 use_ssh_client=false 时)

  • pyOpenSSL(在使用 TLS 时)

  • pywin32(在 Windows 32 上使用命名管道时)

  • requests

参数

参数

注释

api_version

别名:docker_api_version

字符串

Docker 主机上运行的 Docker API 的版本。

默认为此集合和 docker 守护程序支持的最新 API 版本。

如果任务中未指定此值,则将使用环境变量 DOCKER_API_VERSION 的值。如果未设置环境变量,则将使用默认值。

默认值: "auto"

ca_path

别名:ca_cert, tls_ca_cert, cacert_path

路径

通过提供 CA 证书文件的路径来执行服务器验证时使用 CA 证书。

如果任务中未指定此值并且设置了环境变量 DOCKER_CERT_PATH,则将使用环境变量 DOCKER_CERT_PATH 中指定的目录中的 ca.pem 文件。

此选项以前称为 ca_cert,并在 community.docker 3.6.0 中重命名为 ca_path。旧名称已添加为别名,仍然可以使用。

client_cert

别名: tls_client_cert, cert_path

路径

客户端 TLS 证书文件的路径。

如果任务中未指定此值,并且环境变量 DOCKER_CERT_PATH 已设置,则将使用环境变量 DOCKER_CERT_PATH 指定目录中的 cert.pem 文件。

client_key

别名: tls_client_key, key_path

路径

客户端 TLS 密钥文件的路径。

如果任务中未指定此值,并且环境变量 DOCKER_CERT_PATH 已设置,则将使用环境变量 DOCKER_CERT_PATH 指定目录中的 key.pem 文件。

container

字符串 / 必填

要将文件复制到的容器名称。

container_path

字符串 / 必填

Docker 容器内文件的路径。

必须是绝对路径。

content

字符串

文件的內容。

如果您计划提供二进制数据,请将其预先编码为 base64,并设置 content_is_b64=true

path 互斥。 contentpath 中必须至少有一个。

content_is_b64

布尔值

如果设置为 true,则假定 content 中的内容为 Base64 编码,并在使用前进行解码。

要使用二进制 content,最好将其保持为 Base64 编码,并让此选项进行解码。否则,数据可能会被解释为 UTF-8 并损坏。

选项

  • false ← (默认)

  • true

debug

布尔值

调试模式

选项

  • false ← (默认)

  • true

docker_host

别名: docker_url

字符串

用于连接到 Docker API 的 URL 或 Unix 套接字路径。要连接到远程主机,请提供 TCP 连接字符串。例如,tcp://192.0.2.23:2376。如果使用 TLS 加密连接,模块将自动将连接 URL 中的 tcp 替换为 https

如果任务中未指定此值,则将使用环境变量 DOCKER_HOST 的值。如果未设置环境变量,则将使用默认值。

默认值: "unix:///var/run/docker.sock"

follow

布尔值

此标志指示如果 Docker 容器中存在文件系统链接,则应遵循这些链接。

选项

  • false ← (默认)

  • true

force

布尔值

如果设置为 true,则强制写入文件(无需执行任何幂等性检查)。

如果设置为 false,则仅在目标上不存在文件时才写入文件。如果目标位置存在文件系统对象,则模块将不会进行任何更改。

如果未指定此选项,则模块将是幂等的。为了验证幂等性,它将尝试获取容器中文件系统对象的信息,如果一切看起来都匹配,则将从容器下载文件以将其与要上传的文件进行比较。

选项

  • false

  • true

group_id

整数

将文件写入磁盘时要使用的组 ID。

如果提供,则还必须提供 owner_id

如果未提供,模块将尝试确定容器中当前用户的用户和组 ID。这只有在容器中存在 /bin/sh 并且 id 二进制文件或 shell 内置函数可用时才有效。此外,容器必须正在运行。

local_follow

布尔值

此标志指示如果源代码树(模块执行的位置)中存在文件系统链接,则应遵循这些链接。

选项

  • false

  • true ← (默认)

mode

整数

将文件写入磁盘时要使用的文件模式。

如果没有提供此选项,将使用源系统中的文件模式。

owner_id

整数

将文件写入磁盘时要使用的所有者 ID。

如果提供,则还必须提供 group_id

如果未提供,模块将尝试确定容器中当前用户的用户和组 ID。这只有在容器中存在 /bin/sh 并且 id 二进制文件或 shell 内置函数可用时才有效。此外,容器必须正在运行。

路径

路径

托管节点上文件的路径。

content 互斥。 contentpath 中必须至少有一个。

timeout

整数

等待 API 响应的最大时间(秒)。

如果任务中未指定此值,则将使用环境变量 DOCKER_TIMEOUT 的值。如果未设置环境变量,则将使用默认值。

默认值: 60

tls

布尔值

通过使用 TLS 安全连接到 API,无需验证 Docker 主机服务器的真实性。请注意,如果 validate_certs 也设置为 true,则它将优先。

如果任务中未指定此值,则将使用环境变量 DOCKER_TLS 的值。如果未设置环境变量,则将使用默认值。

选项

  • false ← (默认)

  • true

tls_hostname

字符串

验证 Docker 主机服务器的真实性时,请提供服务器的预期名称。

如果任务中未指定此值,则将使用环境变量 DOCKER_TLS_HOSTNAME 的值。如果未设置环境变量,则将使用默认值。

请注意,此选项在较旧的版本中具有默认值 localhost。它已在 community.docker 3.0.0 中删除。

use_ssh_client

布尔值

在 community.docker 1.5.0 中添加

对于 SSH 传输,请使用 ssh CLI 工具而不是 paramiko。

选项

  • false ← (默认)

  • true

validate_certs

别名: tls_verify

布尔值

通过使用 TLS 安全连接到 API 并验证 Docker 主机服务器的真实性。

如果任务中未指定此值,则将使用环境变量 DOCKER_TLS_VERIFY 的值。如果未设置环境变量,则将使用默认值。

选项

  • false ← (默认)

  • true

属性

属性

支持

描述

action_group

操作组: community.docker.docker, docker

module_defaults 中使用 group/dockergroup/community.docker.docker 为此模块设置默认值。

check_mode

支持: 完全支持

可以在 check_mode 下运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持: 完全支持

将需要传输其他数据来计算差异。

模块使用 ansible-core 配置中的 MAX_FILE_SIZE_FOR_DIFF 来确定应为多大文件计算差异。

在差异模式下,将返回有关已更改内容(或可能需要在 check_mode 中更改的内容)的详细信息。

注释

注意

示例

- name: Copy a file into the container
  community.docker.docker_container_copy_into:
    container: mydata
    path: /home/user/data.txt
    container_path: /data/input.txt

- name: Copy a file into the container with owner, group, and mode set
  community.docker.docker_container_copy_into:
    container: mydata
    path: /home/user/bin/runme.o
    container_path: /bin/runme
    owner_id: 0  # root
    group_id: 0  # root
    mode: 0755  # readable and executable by all users, writable by root

返回值

常见的返回值已在此处记录此处,以下是此模块特有的字段

描述

container_path

字符串

容器中的实际路径。

只有在 container_pathfollow=true 时才能与之不同。

返回:成功

作者

  • Felix Fontein (@felixfontein)