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