Bessonov.docker-swarm
Ansible 角色用于设置 Docker 集群
这个角色:
- 启动一个集群
- 管理管理节点和工作节点
执行基于有限状态机,因此这个角色可以将现有集群转换为期望的状态。请查看注意事项并在执行前测试转换!
请参见 ansible docker 角色 进行 Docker 安装。
要求
Ansible 2.3 和已安装的 Docker。
注意事项
如果管理节点发生变化,至少有一个应在每次执行剧本时保持静态。例如,要用 manager-2 替换 manager-1:
- 将 manager-2 添加到管理节点
- 运行剧本
- 从管理节点中移除 manager-1
- 运行剧本
通过剧本降级或移除节点:
- 在清单中保留节点(见下例)
- 运行剧本
- 现在您可以从清单中移除不参与集群的节点
示例剧本
全球安装角色:
ansible-galaxy install Bessonov.docker-swarm
或本地安装:
ansible-galaxy install --roles-path roles Bessonov.docker-swarm
清单(您可以为组选择任何名称,removed-nodes
对新集群来说是可选的):
[managers]
node-1
node-2
node-3
[workers]
node-1
node-3
node-4
[removed-nodes]
node-5
node-6
剧本:
# 收集关于应该从现有集群中移除或降级的节点的信息
- hosts: removed-nodes:workers
tasks: []
# 在此之前必须安装 Docker
# 您可以使用任何 Docker 安装角色
- hosts: managers:workers
roles:
- role: Bessonov.docker
- hosts: managers
# Docker CLI 不支持并发访问
serial: 1
roles:
- role: Bessonov.docker-swarm
swarm_worker_hosts: workers
# 可选:覆盖默认参数,请参见 `defaults/main.yml`
swarm_cluster_bootstrap_parameters:
--advertise-addr: enp0s8
许可证
MIT 许可证 (MIT)
版权所有 (c) 2017, Anton Bessonov
特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人,处理软件时不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,以及允许向其提供软件的人按以下条件进行处理:
以上版权声明和此许可证声明应包含在所有软件副本或重要部分中。
该软件按“原样”提供,没有任何明示或暗示的担保,包括但不限于适销性、特定用途的适用性以及不侵权的担保。在任何情况下,作者或版权持有人对因使用该软件或与该软件的使用或其他交易相关的任何索赔、损害或其他责任不承担任何责任,无论是在合同诉讼、侵权或其他方面。