community.docker.docker_swarm inventory – Ansible 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

概要

  • 从 Docker Swarm API 读取清单。

  • 使用以 docker_swarm.(yml|yaml) 结尾的 YAML 配置文件。

  • 该插件返回以下 Swarm 节点组:all - 所有主机;workers - 所有工作节点;managers - 所有管理器节点;leader - Swarm 主节点;nonleaders - 除 Swarm 主节点外的所有节点。

需求

以下需求是在执行此清单的本地控制器节点上需要的。

参数

参数

注释

api_version

别名:docker_api_version

字符串

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

默认为 Python Docker SDK 支持的最新 API 版本。

ca_path

别名:ca_cert, tls_ca_cert, cacert_path

路径

通过提供 CA 证书文件的路径来执行服务器验证时使用 CA 证书。

此选项以前称为 ca_cert,并在 community.docker 3.6.0 中重命名为 ca_path。旧名称已添加为别名,仍然可以使用。

client_cert

别名:tls_client_cert, cert_path

路径

客户端 TLS 证书文件的路径。

client_key

别名:tls_client_key, key_path

路径

客户端 TLS 密钥文件的路径。

compose

字典

从 jinja2 表达式创建变量。

默认值: {}

docker_host

别名:docker_url

字符串 / 必需

Docker Swarm 管理器节点的套接字 (tcp, unix)。

使用 unix:///var/run/docker.sock 通过本地套接字连接。

filters

列表 / 元素=字典

在 community.docker 3.5.0 中添加

允许选择/取消选择此清单主机的包含/排除筛选器列表。

筛选器按顺序处理,直到找到第一个 filters[].excludefilters[].include 匹配的筛选器。如果 filters[].exclude 匹配,则主机被排除;如果 filters[].include 匹配,则主机被包含。如果没有筛选器匹配,则包含主机。

exclude

字符串

Jinja2 条件。如果它与主机匹配,则该主机将被**排除**。

可以精确指定 filters[].excludefilters[].include 之一。

include

字符串

Jinja2 条件。如果它与主机匹配,则该主机将被**包含**。

可以精确指定 filters[].excludefilters[].include 之一。

groups

字典

根据 Jinja2 条件将主机添加到组。

默认值: {}

include_host_uri

布尔值

切换此选项以返回附加属性 ansible_host_uri,该属性包含 Swarm 集群领导者的 URI,格式为 tcp://172.16.0.1:2376。通过 API 连接时,此值无需修改即可用作 Docker Swarm 模块中 docker_host 选项的值。端口始终默认为 2376

选项

  • false ← (默认)

  • true

include_host_uri_port

整数

覆盖 ansible_host_uri 中检测到的端口号。

keyed_groups

列表 / 元素=字典

根据变量的值将主机添加到组。

默认值: []

default_value

字符串

在 ansible-core 2.12 中添加

主机变量的值为空字符串时的默认值。

此选项与 keyed_groups[].trailing_separator 互斥。

key

字符串

用于生成组的输入字典中的键

parent_group

字符串

键控组的父组

prefix

字符串

键控组名将以此前缀开头

默认值: ""

separator

字符串

用于构建键控组名的分隔符

默认值: "_"

trailing_separator

布尔值

在 ansible-core 2.12 中添加

将此选项设置为 False 以省略主机变量的值为空字符串时 keyed_groups[].separator 后面的 keyed_groups[].separator

此选项与 keyed_groups[].default_value 互斥。

选项

  • false

  • true ← (默认)

leading_separator

布尔值

在 ansible-core 2.11 中添加

与 keyed_groups 结合使用。

默认情况下,未提供前缀或分隔符的键控组的名称将以下划线开头。

这是因为默认前缀为“”而默认分隔符为“_”。

如果未给出前缀,则将此选项设置为 False 以省略前导下划线(或其他分隔符)。

如果组名来自映射,则分隔符仍用于连接项目。

要完全不使用组名中的分隔符,请将键控组的分隔符设置为空字符串。

选项

  • false

  • true ← (默认)

plugin

字符串 / 必需

此插件的名称,对于此插件能够识别自身,它应始终设置为 community.docker.docker_swarm

选项

  • "docker_swarm"

  • "community.docker.docker_swarm"

strict

布尔值

如果为 yes,则将无效条目设为致命错误,否则跳过并继续。

由于可以在表达式中使用事实,因此它们可能并不总是可用,因此我们默认忽略这些错误。

选项

  • false ← (默认)

  • true

timeout

别名:time_out

整数

等待 API 响应的最长时间(以秒为单位)。

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

默认值: 60

tls

布尔值

使用 TLS 连接,但不验证 Docker 主机服务器的真实性。

选项

  • false ← (默认)

  • true

tls_hostname

字符串

验证 Docker 主机服务器的真实性时,提供服务器的预期名称。

use_extra_vars

布尔值

在 ansible-core 2.11 中添加

将额外的变量合并到可用于组合的变量中(最高优先级)。

选项

  • false ← (默认)

  • true

配置

use_ssh_client

布尔值

在 community.docker 1.5.0 中添加

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

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

选项

  • false ← (默认)

  • true

validate_certs

别名:tls_verify

布尔值

切换是否使用 TLS 连接以及是否验证 Docker 主机服务器的真实性。

选项

  • false ← (默认)

  • true

verbose_output

布尔值

切换是否(不)包含所有可用的节点元数据(例如 PlatformArchitectureOSEngineVersion)。

选项

  • false

  • true ← (默认)

备注

注意

  • 配置文件必须是 YAML 文件,其文件名以 docker_swarm.ymldocker_swarm.yaml 结尾。其他文件名将不被接受。

示例

# Minimal example using local docker
plugin: community.docker.docker_swarm
docker_host: unix:///var/run/docker.sock

# Minimal example using remote docker
plugin: community.docker.docker_swarm
docker_host: tcp://my-docker-host:2375

# Example using remote docker with unverified TLS
plugin: community.docker.docker_swarm
docker_host: tcp://my-docker-host:2376
tls: true

# Example using remote docker with verified TLS and client certificate verification
plugin: community.docker.docker_swarm
docker_host: tcp://my-docker-host:2376
validate_certs: true
ca_path: /somewhere/ca.pem
client_key: /somewhere/key.pem
client_cert: /somewhere/cert.pem

# Example using constructed features to create groups and set ansible_host
plugin: community.docker.docker_swarm
docker_host: tcp://my-docker-host:2375
strict: false
keyed_groups:
  # add for example x86_64 hosts to an arch_x86_64 group
  - prefix: arch
    key: 'Description.Platform.Architecture'
  # add for example linux hosts to an os_linux group
  - prefix: os
    key: 'Description.Platform.OS'
  # create a group per node label
  # for exomple a node labeled w/ "production" ends up in group "label_production"
  # hint: labels containing special characters will be converted to safe names
  - key: 'Spec.Labels'
    prefix: label

作者

  • Stefan Heitmüller (@morph027)

提示

每个条目类型的配置项具有从低到高的优先级顺序。例如,列表中较低的变量将覆盖较高的变量。