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 
- Python 的 Docker SDK:请注意,docker-py Python 模块已被 docker 取代(有关详细信息,请参见 此处)。请注意,这两个模块 *不应* 同时安装。还要注意,当同时安装这两个模块并卸载其中一个时,另一个可能不再起作用,需要重新安装。 
- Python 的 Docker SDK >= 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 连接字符串。例如, 如果任务中未指定值,则将使用环境变量  默认值:  | |
| 在没有领导者的情况下触发新选举所需的滴答次数(以秒为单位)。 Docker 默认值为  | |
| 与状态  与状态  选项 
 | |
| 每次心跳之间的滴答次数(以秒为单位)。 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 来保护与 API 的连接,而无需验证 Docker 主机服务器的真实性。请注意,如果  如果任务中未指定值,则将使用环境变量  选项 
 | |
| 验证 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 | 在  | |
| 支持:完全支持 | 可以在  | |
| 支持:完全支持 | 在差异模式下,将返回有关已更改内容(或在  | 
备注
注意
- 通过为每个任务提供参数或定义环境变量来连接到 Docker daemon。您可以定义 - 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 daemon 时,您可能需要安装额外的 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 daemon 通信。 
示例
- 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* 节点加入集群的令牌。 注意:如果此值已指定为  返回值:成功 示例:  | |
| 如果  返回值:如果  示例:  | 
