community.docker.docker_swarm 库存 - 用于 Docker swarm 节点的 Ansible 动态库存插件。

注意

此库存插件是 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 管理器节点的套接字(tcpunix)。

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

filters

列表 / 元素=字典

在 community.docker 3.5.0 中添加

一个包含/排除过滤器的列表,允许为此库存选择/取消选择主机。

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

排除

字符串

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

只能指定 filters[].excludefilters[].include 中的一个。

包含

字符串

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

只能指定 filters[].excludefilters[].include 中的一个。

分组

字典

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

默认值: {}

include_host_uri

布尔值

切换是否返回附加属性 ansible_host_uri,其中包含 swarm leader 的 URI,格式为 tcp://172.16.0.1:2376。此值可以直接用作 Docker Swarm 模块中 docker_host 选项的值,以便通过 API 进行连接。端口始终默认为 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[].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

超时

别名: 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。

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

选择

  • 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)

提示

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