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.docker.net.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* 节点加入集群的令牌。 注意:如果此值已指定为 返回值:成功 示例: |
|
如果 返回值:如果 示例: |