community.docker.docker_swarm 模块 – 管理 Swarm 集群
注意
此模块是 community.docker 集合(版本 4.1.0)的一部分。
如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用: ansible-galaxy collection install community.docker。您需要进一步的要求才能使用此模块,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定:community.docker.docker_swarm。
概要
- 创建一个新的 Swarm 集群。 
- 向现有集群添加/删除节点或管理器。 
要求
执行此模块的主机需要满足以下要求。
- Docker API >= 1.25 
- Docker SDK for Python:请注意,docker-py Python 模块已被 docker 取代(有关详细信息,请参见 此处)。请注意,这两个模块*不应*同时安装。另请注意,当两个模块都已安装并且其中一个被卸载时,另一个可能不再起作用,并且需要重新安装它。 
- Docker SDK for Python >= 1.10.0 
参数
| 参数 | 注释 | 
|---|---|
| 外部可访问的地址,向其他节点广播。 这可以是  如果省略端口号,则使用侦听地址中的端口号。 如果未指定  仅在初始化或加入 swarm 时使用。因此,不考虑进行幂等性检查。 | |
| 在 Docker 主机上运行的 Docker API 版本。 默认为 Docker SDK for Python 和 docker 守护进程支持的最新版本的 API。 如果未在任务中指定该值,则将使用环境变量  默认值:  | |
| 如果设置,则生成一个密钥并使用它来锁定存储在管理器上的数据。 Docker 默认值为  community.docker.docker_swarm_info 可用于检索解锁密钥。 选择 
 | |
| 一个整数,其目的是强制 swarm 生成新的签名 CA 证书和密钥(如果未指定)。 Docker 默认值为  需要 API 版本 >= 1.30。 | |
| 通过提供 CA 证书文件的路径,在执行服务器验证时使用 CA 证书。 如果未在任务中指定该值,并且设置了环境变量  此选项曾被称为  | |
| 客户端 TLS 证书文件的路径。 如果未在任务中指定该值,并且设置了环境变量  | |
| 客户端 TLS 密钥文件的路径。 如果未在任务中指定该值,并且设置了环境变量  | |
| 用于数据路径流量的地址或接口。 这可以是一个形如  仅在初始化或加入 swarm 时使用。因此,不考虑其幂等性检查。 需要 API 版本 >= 1.30。 | |
| 用于数据路径流量的端口。 这需要是一个端口号,如  仅在初始化 swarm 时使用。因此,不考虑其幂等性检查。 需要 API 版本 >= 1.40。 | |
| 调试模式 选择 
 | |
| CIDR 格式的默认地址池。 仅在初始化 swarm 时使用。因此,不考虑其幂等性检查。 需要 API 版本 >= 1.39。 | |
| 代理向调度器发送心跳的延迟(以纳秒为单位)。 Docker 默认值为 5 秒,对应的值为  | |
| 用于连接 Docker API 的 URL 或 Unix 套接字路径。要连接到远程主机,请提供 TCP 连接字符串。例如, 如果任务中未指定该值,则将使用环境变量  默认值:  | |
| 在没有领导者的情况下触发新选举所需的 ticks 数(以秒为单位)。 Docker 默认值为  | |
| 与状态  与状态  选择 
 | |
| 每次心跳之间的 ticks 数(以秒为单位)。 Docker 默认值为  | |
| 要保留的快照数量,超出当前快照。 Docker 默认值为  | |
| 用户定义的键/值元数据。 此模块中的标签操作应用于 docker swarm 集群。使用 community.docker.docker_node 模块添加/修改/删除 swarm 节点标签。 需要 API 版本 >= 1.32。 | |
| 用于管理器间通信的监听地址。 这可以是  如果省略端口号,则使用默认的 swarm 监听端口。 仅在初始化或加入 swarm 时使用。因此,不考虑进行幂等性检查。 默认值:  | |
| 在创建快照后,要保留的日志条目数量,以便同步慢速追随者。 | |
| swarm 的名称。 | |
| 节点证书的自动过期时间,以纳秒为单位。 Docker 默认值为 90 天,对应的值为  | |
| 要删除的节点的 Swarm ID。 与  | |
| 要连接的现有 Swarm 的一个或多个管理器节点的远程地址。 与  | |
| 轮换管理器加入令牌。 选择 
 | |
| 轮换工作节点加入令牌。 选择 
 | |
| 所有 swarm 节点 TLS 叶证书所需的签名 CA 证书,采用 PEM 格式。 这必须不是证书的路径,而是证书的内容。 需要 API 版本 >= 1.30。 | |
| 所有 swarm 节点 TLS 叶证书所需的签名 CA 密钥,采用 PEM 格式。 这必须不是密钥的路径,而是密钥的内容。 需要 API 版本 >= 1.30。 | |
| 快照之间的日志条目数。 Docker 默认值为  | |
| 设置为  设置为  设置为  设置为  community.docker.docker_node 可用于在删除前降级管理器。 选择 
 | |
| 默认地址池子网掩码长度。 仅在初始化 swarm 时使用。因此,不考虑其幂等性检查。 需要 API 版本 >= 1.39。 | |
| 存储的最大任务历史记录数。 Docker 默认值为  | |
| 通过使用 TLS 而不验证 Docker 主机服务器的真实性来保护与 API 的连接。请注意,如果同时将  如果任务中未指定该值,则将使用环境变量  选择 
 | |
| 在验证 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 | 在  | |
| 支持: 完整 | 可以在  | |
| 支持: 完整 | 当处于 diff 模式时,将返回有关已更改(或可能需要在  | 
注释
注意
- 可以通过在每个任务中提供参数或定义环境变量来连接 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 守护进程时,您可能需要安装额外的 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: Init a new swarm with default parameters
  community.docker.docker_swarm:
    state: present
- name: Update swarm configuration
  community.docker.docker_swarm:
    state: present
    election_tick: 5
- name: Add nodes
  community.docker.docker_swarm:
    state: join
    advertise_addr: 192.168.1.2
    join_token: SWMTKN-1--xxxxx
    remote_addrs: [ '192.168.1.1:2377' ]
- name: Leave swarm for a node
  community.docker.docker_swarm:
    state: absent
- name: Remove a swarm manager
  community.docker.docker_swarm:
    state: absent
    force: true
- name: Remove node from swarm
  community.docker.docker_swarm:
    state: remove
    node_id: mynode
- name: Init a new swarm with different data path interface
  community.docker.docker_swarm:
    state: present
    advertise_addr: eth0
    data_path_addr: ens10
- name: Init a new swarm with a different data path port
  community.docker.docker_swarm:
    state: present
    data_path_port: 9789
返回值
通用返回值在此处记录 这里,以下是此模块独有的字段
| 键 | 描述 | 
|---|---|
| 提供在 swarm 上执行的操作。 返回: 当操作失败时。 示例:  | |
| 有关 swarm 的信息。 返回: 成功 | |
| 用于连接到 Swarm 的令牌。 返回: 成功 | |
| 以新的 *manager* 节点身份加入集群的令牌。 注意: 如果此值已指定为  返回: 成功 示例:  | |
| 以新的 *worker* 节点身份加入集群的令牌。 注意: 如果此值已指定为  返回: 成功 示例:  | |
| 如果  返回: 如果  示例:  | 
