community.docker.docker_swarm_info 模块 – 获取 Docker Swarm 集群信息。

注意

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

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

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

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

概要

  • 检索有关 Docker Swarm 的信息。

  • 返回服务、节点、任务的 Swarm 对象名称列表。

  • 输出取决于 Docker 主机上可用的 API 版本。

  • 必须在 Swarm 管理节点上运行;否则模块将失败并显示错误消息。它确实在错误和成功时都返回布尔标志,指示是否可以与 Docker 守护程序通信,它是否处于 Swarm 模式,以及它是否是 Swarm 管理节点。

要求

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

  • Docker API >= 1.25

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

  • Python 的 Docker SDK >= 1.10.0

参数

参数

注释

api_version

别名:docker_api_version

字符串

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

默认为 Python 的 Docker SDK 和 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 文件。

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"

nodes

布尔值

是否列出 Swarm 节点。

选项

  • false ← (默认)

  • true

nodes_filters

字典

用于选择要列出的节点的筛选器值字典。

例如,name: mynode

有关可能的筛选器的更多信息,请参阅 Docker 文档

services

布尔值

是否列出 Swarm 服务。

选项

  • false ← (默认)

  • true

services_filters

字典

用于选择要列出的服务的筛选器值字典。

例如,name: myservice

有关可能的筛选器的更多信息,请参阅 Docker 文档

tasks

布尔值

是否列出容器。

选项

  • false ← (默认)

  • true

tasks_filters

字典

用于选择要列出的任务的筛选器值字典。

例如,node: mynode-1

有关可能的筛选器的更多信息,请参阅 Docker 文档

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

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

unlock_key

布尔值

是否检索 Swarm 解锁密钥。

选项

  • false ← (默认)

  • true

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

verbose_output

布尔值

当设置为 truenodesservicestasks 设置为 true 时,模块输出将包含有关与 API 方法的完整输出匹配的对象的详细信息。

有关详细信息,请参阅 https://docs.docker.net.cn/engine/api/ 上 Docker API 版本的文档。

此模块中的详细输出仅包含此信息模块为每种类型的对象返回的信息子集。

选项

  • false ← (默认)

  • true

属性

属性

支持

描述

action_group

动作组: community.docker.dockerdocker

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

check_mode

支持:完全支持

此操作不会修改状态。

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

diff_mode

支持:N/A

此操作不会修改状态。

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

备注

注意

  • 通过为每个任务提供参数或定义环境变量来连接到 Docker 守护程序。您可以定义 DOCKER_HOSTDOCKER_TLS_HOSTNAMEDOCKER_API_VERSIONDOCKER_CERT_PATHDOCKER_TLSDOCKER_TLS_VERIFYDOCKER_TIMEOUT。如果您使用的是 Docker Machine,请运行产品附带的设置环境的脚本。它将为您设置这些变量。有关更多详细信息,请参阅 https://docs.docker.net.cn/machine/reference/env/

  • 当使用 TLS 连接到 Docker 守护程序时,您可能需要安装其他 Python 包。对于 Docker SDK for Python 2.4 或更高版本,可以使用 ansible.builtin.pip 安装 docker[tls] 来完成此操作。

  • 请注意,Docker SDK for Python 仅允许为极少数功能指定 Docker 配置的路径。通常,如果未指定 DOCKER_CONFIG 环境变量,它将使用 $HOME/.docker/config.json,否则将使用 $DOCKER_CONFIG/config.json

  • 此模块使用 Docker SDK for Python 与 Docker 守护程序进行通信。

示例

- name: Get info on Docker Swarm
  community.docker.docker_swarm_info:
  ignore_errors: true
  register: result

- name: Inform about basic flags
  ansible.builtin.debug:
    msg: |
      Was able to talk to docker daemon: {{ result.can_talk_to_docker }}
      Docker in Swarm mode: {{ result.docker_swarm_active }}
      This is a Manager node: {{ result.docker_swarm_manager }}

- name: Get info on Docker Swarm and list of registered nodes
  community.docker.docker_swarm_info:
    nodes: true
  register: result

- name: Get info on Docker Swarm and extended list of registered nodes
  community.docker.docker_swarm_info:
    nodes: true
    verbose_output: true
  register: result

- name: Get info on Docker Swarm and filtered list of registered nodes
  community.docker.docker_swarm_info:
    nodes: true
    nodes_filters:
      name: mynode
  register: result

- name: Show swarm facts
  ansible.builtin.debug:
    var: result.swarm_facts

- name: Get the swarm unlock key
  community.docker.docker_swarm_info:
    unlock_key: true
  register: result

- name: Print swarm unlock key
  ansible.builtin.debug:
    var: result.swarm_unlock_key

返回值

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

描述

can_talk_to_docker

布尔值

如果模块可以与 Docker 守护程序通信,则为 true

返回:成功和错误时都会返回

docker_swarm_active

布尔值

如果模块可以与 Docker 守护程序通信,并且 Docker 守护程序处于 Swarm 模式,则为 true

返回:成功和错误时都会返回

docker_swarm_manager

布尔值

如果模块能够与Docker守护进程通信,Docker守护进程处于Swarm模式,并且当前节点是管理器节点,则将为true

只有当此值为true时,模块才不会失败。

返回:成功和错误时都会返回

nodes

列表 / 元素=字典

包含每个卷的基本信息的字典对象列表。除非verbose_output=true,否则键与docker node ls输出匹配。请参阅verbose_output的描述。

返回:nodes=true

services

列表 / 元素=字典

包含每个卷的基本信息的字典对象列表。除非verbose_output=true,否则键与docker service ls输出匹配。请参阅verbose_output的描述。

返回:services=true

swarm_facts

字典

表示Docker Swarm集群基本状态的事实。

包含连接到Swarm的令牌。

返回:始终返回

swarm_unlock_key

字符串

包含解锁Swarm所需的密钥。

返回:unlock_key=true时。

tasks

列表 / 元素=字典

包含每个卷的基本信息的字典对象列表。除非verbose_output=true,否则键与docker service ps输出匹配。请参阅verbose_output的描述。

返回:tasks=true

作者

  • Piotr Wojciechowski (@WojciechowskiPiotr)