Swarm operational

This commit is contained in:
lif
2025-10-12 12:30:50 +01:00
parent 6368588bce
commit 0a562d8d01
9 changed files with 233 additions and 63 deletions

View File

@@ -1,16 +1,68 @@
---
- hosts: swarm_workers
become: true
gather_facts: yes
vars:
roles:
- role: geerlingguy.swap
swap_file_size_mb: 1024
- role: geerlingguy.docker
- role: common
tasks:
- name: Check memory and swap usage
command: free -m
register: memory_info
changed_when: false
- 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: Debug all relevant variables
debug:
msg: |
=== SWARM JOIN DEBUG INFO ===
Current host: {{ inventory_hostname }}
Current host IP: {{ ansible_host }}
Master group hosts: {{ groups['swarm_master'] }}
First master: {{ groups['swarm_master'][0] }}
Master hostvars:
- ansible_host: {{ hostvars[groups['swarm_master'][0]]['ansible_host'] }}
- inventory_hostname: {{ hostvars[groups['swarm_master'][0]]['inventory_hostname'] }}
Remote address calculation:
- Raw master ansible_host: {{ hostvars[groups['swarm_master'][0]]['ansible_host'] }}
- Fallback to hostname: {{ groups['swarm_master'][0] }}
- Final address: {{ hostvars[groups['swarm_master'][0]]['ansible_host'] | default(groups['swarm_master'][0]) }}
- With port: {{ hostvars[groups['swarm_master'][0]]['ansible_host'] | default(groups['swarm_master'][0]) }}:2377
Join token (first 10 chars): {{ worker_token[:10] }}...
- name: Gather master facts
ansible.builtin.setup:
delegate_to: "{{ groups['swarm_master'][0] }}"
run_once: true
register: master_facts
- name: Debug master hostvars
debug:
msg: |
Master hostvars keys: {{ hostvars[groups['swarm_master'][0]].keys() | list }}
Master ansible_eth1: {{ hostvars[groups['swarm_master'][0]].ansible_eth1 | default('Not available') }}
Master node: {{ groups['swarm_master'][0] }}
Master ansible_default_ipv4: {{ hostvars[groups['swarm_master'][0]] }}
Master ansible_default_ipv4: {{ master_facts.ansible_facts }}
FINAL IP: {{ master_facts.ansible_facts ['ansible_eth1']['ipv4']['address'] }}
- 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 }}"