Files
vagrant-docker-swarm/ansible/swarm-node.yml
2025-10-17 14:11:52 +01:00

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] }}"