diff --git a/hosts b/hosts index 7e4f4d7..e3fc9d9 100644 --- a/hosts +++ b/hosts @@ -8,13 +8,22 @@ gitea ansible_host=10.0.0.212 hypervisor=rack1 memory=1024 cpus=2 [developer-machines] codydev ansible_host=10.0.0.207 hypervisor=rack2 memory=2048 cpus=2 +[swarm-bootstrap] +swarm-manager-01 ansible_host=10.0.0.206 hypervisor=rack1 memory=2048 cpus=2 + +[swarm-managers] +swarm-manager-02 ansible_host=10.0.0.225 hypervisor=rack2 memory=2048 cpus=2 +swarm-manager-03 ansible_host=10.0.0.220 hypervisor=rack2 memory=2048 cpus=2 + +[swarm-workers] +swarm-worker-01 ansible_host=10.0.0.208 hypervisor=rack2 memory=2048 cpus=2 +swarm-worker-02 ansible_host=10.0.0.213 hypervisor=rack1 memory=2048 cpus=2 +swarm-worker-03 ansible_host=10.0.0.214 hypervisor=rack1 memory=2048 cpus=2 + + [need-converted] #vpn ansible_host=10.0.0.203 hypervisor=rack1 memory=1024 cpus=2 #haproxy ansible_host=10.0.0.205 hypervisor=rack2 memory=1024 cpus=2 -#swarm-manager-01 ansible_host=10.0.0.206 hypervisor=rack1 memory=2048 cpus=2 -#swarm-manager-02 ansible_host=10.0.0.225 hypervisor=rack2 memory=2048 cpus=2 -#swarm-manager-03 ansible_host=10.0.0.220 hypervisor=rack2 memory=2048 cpus=2 -#swarm-worker-01 ansible_host=10.0.0.208 hypervisor=rack2 memory=2048 cpus=2 #registry ansible_host=10.0.0.221 hypervisor=rack1 memory=2048 cpus=2 #wrestlingdev-test ansible_host=10.0.0.240 hypervisor=rack1 memory=2048 cpus=2 #elk ansible_host=10.0.0.224 hypervisor=rack2 memory=4096 cpus=2 diff --git a/playbooks/site.yml b/playbooks/site.yml index ca32000..a9a9bb7 100644 --- a/playbooks/site.yml +++ b/playbooks/site.yml @@ -25,3 +25,45 @@ serial: 100% tasks: - include: ../roles/developer-machine/tasks/main.yml + +- name: Initialize the swarm + hosts: swarm-bootstrap + user: root + gather_facts: true + serial: 100% + vars: + ansible_ssh_common_args: '-o StrictHostKeyChecking=no' + tasks: + - include_tasks: ../tasks/swarm-bootstrap.yml + +- name: Add additional managers to the swarm + hosts: swarm-managers + user: root + gather_facts: false + serial: 100% + vars: + ansible_ssh_common_args: '-o StrictHostKeyChecking=no' + vars: + join_addr: + "{{ hostvars[groups['swarm-bootstrap'][0]].ansible_eth0.ipv4.address }}" + manager_key: + "{{ hostvars[groups['swarm-bootstrap'][0]]['manager_key']['stdout'] }}" + tasks: + - include_tasks: ../tasks/swarm-manager.yml + + +- name: Add workers to the swarm + hosts: swarm-workers + user: root + gather_facts: false + serial: 100% + vars: + ansible_ssh_common_args: '-o StrictHostKeyChecking=no' + vars: + join_addr: + "{{ hostvars[groups['swarm-bootstrap'][0]].ansible_eth0.ipv4.address }}" + worker_key: + "{{ hostvars[groups['swarm-bootstrap'][0]]['worker_key']['stdout'] }}" + tasks: + - include_tasks: ../tasks/swarm-worker.yml + diff --git a/tasks/swarm-bootstrap.yml b/tasks/swarm-bootstrap.yml new file mode 100644 index 0000000..4aeec7f --- /dev/null +++ b/tasks/swarm-bootstrap.yml @@ -0,0 +1,22 @@ +--- +- name: Initialize swarm on the bootstrap manager + command: > + docker swarm init --advertise-addr "{{ ansible_eth0.ipv4.address }}" + register: docker_swarm_init + changed_when: docker_swarm_init.rc == 0 + ignore_errors: true + +- name: Set manager key variable + command: docker swarm join-token -q manager + register: manager_key + changed_when: manager_key.rc == 0 + +- name: Set worker key variable + command: docker swarm join-token -q worker + register: worker_key + changed_when: worker_key.rc == 0 + +- name: Set work and manager key facts + set_fact: + manager_key: "{{ manager_key }}" + worker_key: "{{ worker_key }}" \ No newline at end of file diff --git a/tasks/swarm-manager.yml b/tasks/swarm-manager.yml new file mode 100644 index 0000000..166d0d0 --- /dev/null +++ b/tasks/swarm-manager.yml @@ -0,0 +1,6 @@ +- name: Add swarm managers to the cluster + command: > + docker swarm join --token "{{ manager_key }}" "{{ join_addr }}":2377 + register: docker_swarm_join + changed_when: docker_swarm_join.rc == 0 + ignore_errors: true \ No newline at end of file diff --git a/tasks/swarm-worker.yml b/tasks/swarm-worker.yml new file mode 100644 index 0000000..f6f546b --- /dev/null +++ b/tasks/swarm-worker.yml @@ -0,0 +1,6 @@ +- name: Add swarm workers to the cluster + command: > + docker swarm join --token "{{ worker_key }}" "{{ join_addr }}":2377 + register: docker_swarm_join + changed_when: docker_swarm_join.rc == 0 + ignore_errors: true \ No newline at end of file