通过ansible-playbook,部署Docker Swarm集群。
docker安装目录: /var/lib/docker
docker命令目录: /usr/bin/docker
compose命令目录: /usr/local/bin/docker-compose
weavescope: docker可视化管理工具
scope命令目录: /usr/local/bin/scope
role | ip | hostname |
---|---|---|
manager/scope | 192.168.1.51 | manager1 |
manager/scope | 192.168.1.52 | manager2 |
worker/scope | 192.168.1.53 | worker1 |
worker/scope | 192.168.1.54 | worker2 |
worker/scope | 192.168.1.55 | worker3 |
worker/scope | 192.168.1.56 | worker4 |
worker/scope | 192.168.1.57 | worker5 |
准备
- 将所有部署swarm集群的主机分组:
# vim /etc/ansible/hosts
[manager]
192.168.1.51 hostname=manager1
[add_manager]
192.168.1.52 hostname=manager2
[add_worker]
192.168.1.53 hostname=worker1
192.168.1.54 hostname=worker2
192.168.1.55 hostname=worker3
192.168.1.56 hostname=worker4
192.168.1.57 hostname=worker5
- 创建管理目录:
# mkdir -p swarm/roles/{docker_install,init_install,manager_install,worker_install,scope_install}/{files,handlers,meta,tasks,templates,vars}
# cd swarm/
说明:
files:存放需要同步到异地服务器的源码文件及配置文件;
handlers:当资源发生变化时需要进行的操作,若没有此目录可以不建或为空;
meta:存放说明信息、说明角色依赖等信息,可留空;
tasks:Docker Swarm 安装过程中需要进行执行的任务;
templates:用于执行 Docker Swarm 安装的模板文件,一般为脚本;
vars:本次安装定义的变量
# tree .
.
├── roles
│ ├── docker_install
│ │ ├── files
│ │ ├── handlers
│ │ ├── meta
│ │ ├── tasks
│ │ │ ├── install.yml
│ │ │ ├── main.yml
│ │ │ └── prepare.yml
│ │ ├── templates
│ │ └── vars
│ │ └── main.yml
│ ├── init_install
│ │ ├── files
│ │ ├── handlers
│ │ ├── meta
│ │ ├── tasks
│ │ │ ├── install.yml
│ │ │ └── main.yml
│ │ ├── templates
│ │ └── vars
│ ├── manager_install
│ │ ├── files
│ │ ├── handlers
│ │ ├── meta
│ │ ├── tasks
│ │ │ ├── install.yml
│ │ │ └── main.yml
│ │ ├── templates
│ │ └── vars
│ ├── scope_install
│ │ ├── files
│ │ ├── handlers
│ │ ├── meta
│ │ ├── tasks
│ │ │ ├── install.yml
│ │ │ └── main.yml
│ │ ├── templates
│ │ └── vars
│ └── worker_install
│ ├── files
│ ├── handlers
│ ├── meta
│ ├── tasks
│ │ ├── install.yml
│ │ └── main.yml
│ ├── templates
│ └── vars
└── swarm.yml
36 directories, 13 files
- 创建安装入口文件,用来调用roles:
# vim swarm.yml
---
- hosts: all
remote_user: root
gather_facts: True
roles:
- docker_install
- hosts: manager
remote_user: root
gather_facts: True
roles:
- init_install
- hosts: add_manager
remote_user: root
gather_facts: True
roles:
- manager_install
- hosts: add_worker
remote_user: root
gather_facts: True
roles:
- worker_install
- hosts: all
remote_user: root
gather_facts: True
roles:
- scope_install
docker部分
- 创建docker入口文件,用来调用docker_install:
# vim docker.yml
#用于批量安装Docker
- hosts: all
remote_user: root
gather_facts: True
roles:
- docker_install
- 创建变量:
# vim roles/d