kubernetes.core.k8s_cp 模块 – 在 Pod 中复制文件和目录。
注意
此模块是 kubernetes.core 集合 (版本 5.0.0) 的一部分。
如果您使用的是 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install kubernetes.core
。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定:kubernetes.core.k8s_cp
。
kubernetes.core 2.2.0 中的新增功能
概要
使用 Kubernetes Python 客户端在 Pod 内的容器之间复制文件和目录。
注意
此模块具有相应的 action 插件。
要求
执行此模块的主机需要以下要求。
python >= 3.9
kubernetes >= 24.2.0
参数
参数 |
注释 |
---|---|
用于对 API 进行身份验证的令牌。也可以通过 K8S_AUTH_API_KEY 环境变量指定。 |
|
用于对 API 进行身份验证的 CA 证书的路径。必须提供完整的证书链,以避免证书验证错误。也可以通过 K8S_AUTH_SSL_CA_CERT 环境变量指定。 |
|
用于对 API 进行身份验证的证书的路径。也可以通过 K8S_AUTH_CERT_FILE 环境变量指定。 |
|
用于对 API 进行身份验证的密钥文件的路径。也可以通过 K8S_AUTH_KEY_FILE 环境变量指定。 |
|
Pod 中要从中复制/向其中复制文件/目录的容器的名称。 如果 Pod 中只有一个容器,则默认为该容器。 |
|
如果不用 _local_path_,则将本地文件的內容直接设置为指定的值。 仅当 _remote_path_ 是文件时才有效。如果文件不存在,则创建该文件。 对于高级格式或如果内容包含变量,请使用 ansible.builtin.template 模块。 与 _local_path_ 互斥。 |
|
配置文件中找到的上下文名称。也可以通过 K8S_AUTH_CONTEXT 环境变量指定。 |
|
提供用于访问 API 的 URL。也可以通过 K8S_AUTH_HOST 环境变量指定。 |
|
要为操作模拟的用户组。 也可以通过 K8S_AUTH_IMPERSONATE_GROUPS 环境变量指定。例如:Group1,Group2 |
|
要为操作模拟的用户名。 也可以通过 K8S_AUTH_IMPERSONATE_USER 环境变量指定。 |
|
现有 Kubernetes 配置文件的路径。如果未提供,并且未提供其他连接选项,则 Kubernetes 客户端将尝试从 ~/.kube/config 加载默认配置文件。也可以通过 K8S_AUTH_KUBECONFIG 环境变量指定。 可以使用分隔符“;” (Windows 平台)或“:”(其他平台)提供多个 Kubernetes 配置文件。 Kubernetes 配置可以作为字典提供。此功能需要 python kubernetes 客户端版本 >= 17.17.0。在 2.2.0 版本中添加。 |
|
本地文件或目录的路径。 当 _state_ 设置为 与 _content_ 互斥。 |
|
Pod 命名空间名称。 |
|
复制的文件/目录的所有权和权限不会在容器中保留。 当设置 _content_ 或将 _state_ 设置为 选项
|
|
不应该通过代理的主机/域名/IP/CIDR 的逗号分隔列表。也可以通过 K8S_AUTH_NO_PROXY 环境变量指定。 请注意,此模块不会从环境中获取典型的代理设置(例如 NO_PROXY)。 此功能需要 kubernetes>=19.15.0。当 kubernetes 库小于 19.15.0 时,即使 no_proxy 设置正确也会失败。 示例值为“localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16” |
|
提供用于对 API 进行身份验证的密码。也可以通过 K8S_AUTH_PASSWORD 环境变量指定。 请阅读 |
|
是否保存 kube 配置刷新令牌。也可以通过 K8S_AUTH_PERSIST_CONFIG 环境变量指定。 当 k8s 上下文使用具有刷新令牌的用户凭据(如 oidc 或 gke/gcloud auth)时,令牌由 k8s python 客户端库刷新,但默认情况下不会保存。因此,旧的刷新令牌可能会过期,并且下一次身份验证可能会失败。将此标志设置为 true 将告诉 k8s python 客户端将新的刷新令牌保存到 kube 配置文件。 默认为 false。 请注意,当前版本的 k8s python 客户端库尚不支持将此标志设置为 True。 此 k8s python 库的修复程序位于:https://github.com/kubernetes-client/python-base/pull/169 选项
|
|
Pod名称。 |
|
用于连接的HTTP代理的URL。也可以通过K8S_AUTH_PROXY环境变量指定。 请注意,此模块不会从环境中获取典型的代理设置(例如HTTP_PROXY)。 |
|
用于基本身份验证标头的冒号分隔的用户名:密码。 也可以通过K8S_AUTH_PROXY_HEADERS_BASIC_AUTH环境变量指定。 |
|
用于代理基本身份验证标头的冒号分隔的用户名:密码。 也可以通过K8S_AUTH_PROXY_HEADERS_PROXY_BASIC_AUTH环境变量指定。 |
|
表示您想要的user-agent的字符串,例如foo/1.0。 也可以通过K8S_AUTH_PROXY_HEADERS_USER_AGENT环境变量指定。 |
|
要复制的文件或目录的路径。 |
|
设置为 设置为 选项
|
|
提供用于对API进行身份验证的用户名。也可以通过K8S_AUTH_USERNAME环境变量指定。 请注意,这仅适用于配置为使用HTTP基本身份验证的集群。如果您的集群具有不同的身份验证方式(例如OpenShift中的OAuth2),则此选项将无法按预期工作,您应该查看community.okd.k8s_auth模块,因为它可能满足您的需求。 |
|
是否验证API服务器的SSL证书。也可以通过K8S_AUTH_VERIFY_SSL环境变量指定。 选项
|
备注
注意
从本地文件系统复制到Pod时,容器中需要tar二进制文件。
当
validate_certs
为True时,为避免SSL证书验证错误,必须通过ca_cert
或kubeconfig文件提供API服务器的完整证书链。
示例
# kubectl cp /tmp/foo some-namespace/some-pod:/tmp/bar
- name: Copy /tmp/foo local file to /tmp/bar in a remote pod
kubernetes.core.k8s_cp:
namespace: some-namespace
pod: some-pod
remote_path: /tmp/bar
local_path: /tmp/foo
# kubectl cp /tmp/foo_dir some-namespace/some-pod:/tmp/bar_dir
- name: Copy /tmp/foo_dir local directory to /tmp/bar_dir in a remote pod
kubernetes.core.k8s_cp:
namespace: some-namespace
pod: some-pod
remote_path: /tmp/bar_dir
local_path: /tmp/foo_dir
# kubectl cp /tmp/foo some-namespace/some-pod:/tmp/bar -c some-container
- name: Copy /tmp/foo local file to /tmp/bar in a remote pod in a specific container
kubernetes.core.k8s_cp:
namespace: some-namespace
pod: some-pod
container: some-container
remote_path: /tmp/bar
local_path: /tmp/foo
no_preserve: True
state: to_pod
# kubectl cp some-namespace/some-pod:/tmp/foo /tmp/bar
- name: Copy /tmp/foo from a remote pod to /tmp/bar locally
kubernetes.core.k8s_cp:
namespace: some-namespace
pod: some-pod
remote_path: /tmp/foo
local_path: /tmp/bar
state: from_pod
# copy content into a file in the remote pod
- name: Copy content into a file in the remote pod
kubernetes.core.k8s_cp:
state: to_pod
namespace: some-namespace
pod: some-pod
remote_path: /tmp/foo.txt
content: "This content will be copied into remote file"
返回值
常用的返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|
描述复制操作成功完成的消息。 返回:success |