community.docker.docker_login 模块 – 登录 Docker 注册表。

注意

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

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

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

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

概要

  • 提供类似于 docker login 命令的功能。

  • 使用 Docker 注册表进行身份验证,并将凭据添加到本地 Docker 配置文件或与注册表关联的凭据存储中。将凭据添加到配置文件或凭据存储允许将来使用 Ansible 的 Docker 模块、Docker CLI 和 Docker SDK for Python 等工具连接到注册表,而无需提供凭据。

  • 在检查模式下运行将执行身份验证,而不会更新配置文件。

需求

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

  • 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 文件。

config_path

别名:dockercfg_path

路径

Docker CLI 配置文件的自定义路径。

默认值: "~/.docker/config.json"

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"

password

字符串

注册表帐户的明文密码。

state=present 时必需。

reauthorize

别名:reauth

布尔值

刷新配置文件中找到的现有身份验证。

选项

  • false ← (默认)

  • true

registry_url

别名:registry, url

字符串

注册表 URL。

默认值: "https://index.docker.io/v1/"

state

字符串

这控制用户的当前状态。present 将登录用户,absent 将注销用户。

要注销,只需要注册表服务器(默认为 DockerHub)。

2.1 之前的版本只能登录。

Docker 不支持使用自定义配置文件进行“注销”。

选项

  • "present" ← (默认)

  • "absent"

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

username

字符串

注册表帐户的用户名。

state=present 时必需。

validate_certs

别名:tls_verify

布尔值

通过使用 TLS 并验证 Docker 主机服务器的真实性来保护与 API 的连接。

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

选项

  • false ← (默认)

  • true

属性

属性

支持

描述

action_group

动作组: community.docker.docker, docker

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

check_mode

支持:完全支持

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

diff_mode

支持:不支持

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

备注

注意

示例

- name: Log into DockerHub
  community.docker.docker_login:
    username: docker
    password: rekcod

- name: Log into private registry and force re-authorization
  community.docker.docker_login:
    registry_url: your.private.registry.io
    username: yourself
    password: secrets3
    reauthorize: true

- name: Log into DockerHub using a custom config file
  community.docker.docker_login:
    username: docker
    password: rekcod
    config_path: /tmp/.mydockercfg

- name: Log out of DockerHub
  community.docker.docker_login:
    state: absent

返回值

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

描述

login_results

字典

登录结果。

返回:state=present

示例: {"serveraddress": "localhost:5000", "username": "testuser"}

作者

  • Olaf Kilian (@olsaki)

  • Chris Houseknecht (@chouseknecht)