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。您需要其他要求才能使用此模块,请参阅 要求 以了解详细信息。

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

概要

  • 检索有关 Docker Swarm 的信息。

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

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

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

要求

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

  • Docker API >= 1.25

  • Docker SDK for Python:请注意,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

dictionary

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

例如,name: mynode

有关可能过滤器的更多信息,请参阅 docker 文档

services

布尔值

是否列出 swarm 服务。

选项

  • false ← (默认)

  • true

services_filters

dictionary

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

例如,name: myservice

有关可能过滤器的更多信息,请参阅 docker 文档

tasks

布尔值

是否列出容器。

选项

  • false ← (默认)

  • true

tasks_filters

dictionary

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

例如,node: mynode-1

有关可能过滤器的更多信息,请参阅 docker 文档

timeout

integer

等待 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 方法的完整输出匹配。

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

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

选项

  • false ← (默认)

  • true

属性

属性

支持

描述

action_group

操作组: community.docker.docker, docker

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 包。对于 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 守护程序通信。

示例

- 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

list / elements=dictionary

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

返回:nodes=true

services

list / elements=dictionary

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

返回:services=true

swarm_facts

dictionary

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

包含连接到 Swarm 的令牌。

返回: 总是

swarm_unlock_key

字符串

包含解锁 swarm 所需的密钥。

返回:unlock_key=true 时。

tasks

list / elements=dictionary

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

返回:tasks=true

作者

  • Piotr Wojciechowski (@WojciechowskiPiotr)