47 lines
1.3 KiB
YAML
47 lines
1.3 KiB
YAML
---
|
|
- hosts: swarm_workers
|
|
become: true
|
|
gather_facts: yes
|
|
|
|
vars:
|
|
roles:
|
|
- role: geerlingguy.swap
|
|
- role: geerlingguy.docker
|
|
- role: common
|
|
|
|
tasks:
|
|
- name: Get worker join token from master
|
|
slurp:
|
|
src: /tmp/swarm_worker_token
|
|
register: worker_token_file
|
|
delegate_to: "{{ groups['swarm_master'][0] }}"
|
|
|
|
- name: Decode worker join token
|
|
set_fact:
|
|
worker_token: "{{ worker_token_file.content | b64decode | trim }}"
|
|
|
|
- name: Gather master facts
|
|
ansible.builtin.setup:
|
|
delegate_to: "{{ groups['swarm_master'][0] }}"
|
|
run_once: true
|
|
register: master_facts
|
|
|
|
# Needed as gathering master facts will overwrite
|
|
- name: Regather node facts
|
|
ansible.builtin.setup:
|
|
|
|
- name: Add nodes
|
|
community.docker.docker_swarm:
|
|
state: join
|
|
join_token: "{{ worker_token }}"
|
|
remote_addrs:
|
|
- "{{ master_facts.ansible_facts['ansible_eth1']['ipv4']['address'] }}:2377"
|
|
advertise_addr: "{{ ansible_eth1.ipv4.address }}"
|
|
|
|
- name: Replace node labels with new labels
|
|
community.docker.docker_node:
|
|
hostname: "{{ inventory_hostname }}"
|
|
labels: "{{ dict(group_names | zip(['true'] * group_names | length)) }}"
|
|
labels_state: replace
|
|
delegate_to: "{{ groups['swarm_master'][0] }}"
|