forked from dliappis/dockerswarm-testbed
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprep_docker.yml
89 lines (73 loc) · 3.05 KB
/
prep_docker.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
---
- name: setup swarm cluster on manager and worker nodes
# =======================================================
hosts: all
gather_facts: true
become: true
vars:
distribution: "{{ ansible_distribution | lower }}"
swarm_port: 2377
docker_release_channel: "edge"
sysctl_items:
vm.max_map_count: 262144
vm.swappiness: 1
fs.inotify.max_user_instances: 8192
tasks:
- name: ensure https apt transport exists
package:
name: '{{ item }}'
state: present
with_items:
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- name: add docker-engine apt key
apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
state: present
- name: add docker-engine apt repository
apt_repository:
repo: "deb [arch={{ (ansible_architecture == 'x86_64') | ternary('amd64', ansible_architecture) }}] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} {{ docker_release_channel }}"
update_cache: yes
state: present
- name: install the docker package
package:
name: docker-ce
state: present
- name: ensure docker service will start on reboot
service: name=docker enabled=yes
- name: add vagrant user to docker group
user: append=yes groups=docker name=vagrant
- name: "other pre-launch configuration tuning: sysctl"
sysctl:
name: "{{ item.key }}"
state: present
value: "{{ item.value }}"
sysctl_set: yes
reload: yes
with_dict: "{{ sysctl_items }}"
- name: check swarm status
shell: docker info | grep ^Swarm | sed 's/^Swarm..//'
register: docker_info
- block:
- name: initialize a new swarm on manager node
command: docker swarm init --advertise-addr "{{ ansible_eth1["ipv4"]["address"] }}"
when: docker_info.stdout == "inactive"
- name: get join worker token for swarm
command: docker swarm join-token worker -q
register: swarm_worker_token
- name: get join worker token for swarm
command: docker swarm join-token manager -q
register: swarm_manager_token
- name: set join worker token fact
set_fact: swarm_worker_token="{{ swarm_worker_token.stdout }}"
- name: set join manager token fact
set_fact: swarm_manager_token="{{ swarm_manager_token.stdout }}"
when: inventory_hostname in ['m01'] # perform tasks only on manager node
- name: join worker nodes
command: docker swarm join --token "{{ hostvars['m01']['swarm_worker_token'] }}" "{{ hostvars['m01']['ansible_eth1']['ipv4']['address'] }}:2377"
when: inventory_hostname[0] == 'w' and docker_info.stdout == "inactive"
- name: join manager nodes
command: docker swarm join --token "{{ hostvars['m01']['swarm_manager_token'] }}" "{{ hostvars['m01']['ansible_eth1']['ipv4']['address'] }}:2377"
when: inventory_hostname[0] == 'm' and inventory_hostname != 'm01' and docker_info.stdout == "inactive"