community.docker.docker_node 模块 – 管理 Docker Swarm 节点

注意

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

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

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

要在剧本中使用它,请指定:community.docker.docker_node

概要

  • 通过 Swarm Manager 管理 Docker 节点。

  • 此模块允许更改节点的角色、可用性,以及修改、添加或删除节点标签。

需求

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

  • Docker API >= 1.25

  • 用于 Python 的 Docker SDK:请注意,docker-py Python 模块已被 docker 取代(详细信息请参见 此处)。请注意,这两个模块不应同时安装。另请注意,当同时安装这两个模块并卸载其中一个时,另一个模块可能不再起作用,需要重新安装。

  • 用于 Python 的 Docker SDK >= 2.4.0

参数

参数

注释

api_version

别名:docker_api_version

字符串

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

默认为 Docker SDK for Python 和 docker 守护程序支持的最新 API 版本。

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

默认值: "auto"

availability

字符串

要分配的节点可用性。如果未提供,则节点可用性保持不变。

选项

  • "active"

  • "pause"

  • "drain"

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

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"

hostname

字符串 / 必需

在 Swarm 中注册的节点的主机名或 ID。

如果多个节点使用相同的主机名注册,则必须使用 ID,否则模块将失败。

标签

字典

将作为节点属性分配的用户定义键值元数据。

此模块中的标签操作适用于由hostname指定的 Docker Swarm 节点。使用community.docker.docker_swarm模块添加/修改/删除 Swarm 集群标签。

模块完成其工作时分配给节点的标签的实际状态取决于labels_statelabels_to_remove参数值。请参见下面的描述。

labels_state

字符串

它定义了对分配给节点的标签以及在labels选项中指定的标签的操作。

设置为merge以将labels中提供的标签与已分配给节点的标签合并。如果没有分配标签,则它将添加列出的标签。对于已分配给节点的标签,它将更新其值。在labels中未指定的标签将保持不变。如果labels为空,则不会进行任何更改。

设置为replace以将所有已分配的标签替换为提供的标签。如果labels为空,则将删除分配给节点的所有标签。

选项

  • "merge" ← (默认)

  • "replace"

labels_to_remove

列表 / 元素=字符串

将从节点配置中删除的标签列表。该列表只能包含标签名称,而不包含其值。

如果列表中提供的标签未分配给节点,则忽略该条目。

如果标签同时存在于labels_to_removelabels中,则labels中提供的值将保留分配给节点。

如果labels_state=replace且未提供labels或为空,则将删除分配给节点的所有标签,并将忽略labels_to_remove

角色

字符串

要分配的节点角色。如果未提供,则节点角色保持不变。

选项

  • "manager"

  • "worker"

超时

整数

等待 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 中已删除。

注意:此选项不再支持 Docker SDK for Python 7.0.0+。使用 Docker SDK for Python 7.0.0 或更高版本指定它将导致错误。

use_ssh_client

布尔值

在 community.docker 1.5.0 中添加

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

需要 Docker SDK for Python 4.4.0 或更高版本。

选项

  • false ← (默认)

  • true

validate_certs

别名:tls_verify

布尔值

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

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

选项

  • false ← (默认)

  • true

属性

属性

支持

描述

action_group

操作组: community.docker.dockerdocker

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

check_mode

支持:完全支持

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

diff_mode

支持:不支持

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

备注

注意

示例

- name: Set node role
  community.docker.docker_node:
    hostname: mynode
    role: manager

- name: Set node availability
  community.docker.docker_node:
    hostname: mynode
    availability: drain

- name: Replace node labels with new labels
  community.docker.docker_node:
    hostname: mynode
    labels:
      key: value
    labels_state: replace

- name: Merge node labels and new labels
  community.docker.docker_node:
    hostname: mynode
    labels:
      key: value

- name: Remove all labels assigned to node
  community.docker.docker_node:
    hostname: mynode
    labels_state: replace

- name: Remove selected labels from the node
  community.docker.docker_node:
    hostname: mynode
    labels_to_remove:
      - key1
      - key2

返回值

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

描述

节点

字典

“更新”操作后的节点信息

返回:成功

作者

  • Piotr Wojciechowski (@WojciechowskiPiotr)

  • Thierry Bouvet (@tbouvet)