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 
参数
| 参数 | 注释 | 
|---|---|
| Docker 主机上运行的 Docker API 版本。 默认为 Docker SDK for Python 和 docker 守护程序支持的最新 API 版本。 如果任务中未指定该值,则将使用环境变量  默认值:  | |
| 要分配的节点可用性。如果未提供,则节点可用性保持不变。 选项 
 | |
| 通过提供 CA 证书文件的路径来执行服务器验证时使用 CA 证书。 如果任务中未指定该值并且已设置环境变量  此选项以前称为  | |
| 客户端 TLS 证书文件的路径。 如果任务中未指定该值并且已设置环境变量  | |
| 客户端 TLS 密钥文件的路径。 如果任务中未指定该值并且已设置环境变量  | |
| 调试模式 选项 
 | |
| 用于连接到 Docker API 的 URL 或 Unix 套接字路径。要连接到远程主机,请提供 TCP 连接字符串。例如, 如果任务中未指定该值,则将使用环境变量  默认值:  | |
| 在 Swarm 中注册的节点的主机名或 ID。 如果多个节点使用相同的主机名注册,则必须使用 ID,否则模块将失败。 | |
| 将作为节点属性分配的用户定义键值元数据。 此模块中的标签操作适用于由 模块完成其工作时分配给节点的标签的实际状态取决于 | |
| 将从节点配置中删除的标签列表。该列表只能包含标签名称,而不包含其值。 如果列表中提供的标签未分配给节点,则忽略该条目。 如果标签同时存在于 如果 | |
| 要分配的节点角色。如果未提供,则节点角色保持不变。 选项 
 | |
| 通过使用 TLS 安全连接到 API,而无需验证 Docker 主机服务器的真实性。请注意,如果 如果任务中未指定该值,则将使用环境变量 选项 
 | |
| 验证 Docker 主机服务器的真实性时,提供服务器的预期名称。 如果任务中未指定该值,则将使用环境变量 请注意,此选项在较旧的版本中具有默认值 注意:此选项不再支持 Docker SDK for Python 7.0.0+。使用 Docker SDK for Python 7.0.0 或更高版本指定它将导致错误。 | |
| 对于 SSH 传输,请使用 需要 Docker SDK for Python 4.4.0 或更高版本。 选项 
 | |
| 通过使用 TLS 并验证 Docker 主机服务器的真实性来保护与 API 的连接。 如果任务中未指定该值,则将使用环境变量 选项 
 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 操作组: community.docker.docker, docker | 在 | |
| 支持:完全支持 | 可以在 | |
| 支持:不支持 | 在差异模式下,将返回有关已更改内容(或可能需要在 | 
备注
注意
- 通过为每个任务提供参数或定义环境变量来连接到 Docker 守护程序。您可以定义 - DOCKER_HOST、- DOCKER_TLS_HOSTNAME、- DOCKER_API_VERSION、- DOCKER_CERT_PATH、- DOCKER_TLS、- DOCKER_TLS_VERIFY和- DOCKER_TIMEOUT。如果您使用的是 docker machine,请运行产品附带的设置环境的脚本。它将为您设置这些变量。有关更多详细信息,请参见https://docs.dockerd.com.cn/machine/reference/env/。
- 当使用 TLS 连接到 Docker daemon 时,您可能需要安装额外的 Python 包。对于 Python 版 Docker SDK 2.4 或更高版本,可以使用 ansible.builtin.pip 安装 - docker[tls]。
- 请注意,Python 版 Docker SDK 仅允许为极少数函数指定 Docker 配置文件的路径。通常情况下,如果未指定 - DOCKER_CONFIG环境变量,它将使用- $HOME/.docker/config.json;否则,将使用- $DOCKER_CONFIG/config.json。
- 此模块使用 Python 版 Docker SDK 与 Docker daemon 通信。 
示例
- 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
返回值
常见的返回值已在 此处 记录,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| “更新”操作后的节点信息 返回:成功 | 
