Files
vagrant-docker-swarm/ansible/swarm-master.yml
2025-10-12 19:03:12 +01:00

79 lines
2.6 KiB
YAML

---
- hosts: swarm_master
become: true
roles:
- role: geerlingguy.swap
- role: geerlingguy.docker
- role: common
tasks:
- 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
- name: Init a new swarm with default parameters
community.docker.docker_swarm:
state: present
advertise_addr: "{{ ansible_eth1.ipv4.address }}"
listen_addr: "{{ ansible_eth1.ipv4.address }}"
- name: print listen addr
debug:
msg: "{{ ansible_eth1.ipv4.address }}"
- name: Get Docker Swarm information
community.docker.docker_swarm_info:
register: swarm_info
- name: Save worker join token to file
copy:
content: "{{ swarm_info.swarm_facts.JoinTokens.Worker }}"
dest: /tmp/swarm_worker_token
mode: '0600'
- name: Save manager join token to file
copy:
content: "{{ swarm_info.swarm_facts.JoinTokens.Manager }}"
dest: /tmp/swarm_manager_token
mode: '0600'
# Copy tokens to host filesystem
# - name: Fetch worker join token to host
# fetch:
# src: /tmp/swarm_worker_token
# dest: ./tokens/swarm_worker_token
# flat: yes
# - name: Fetch manager join token to host
# fetch:
# src: /tmp/swarm_manager_token
# dest: ./tokens/swarm_manager_token
# flat: yes
# - name: Create Portainer data volume
# community.docker.docker_volume:
# name: portainer_data
# state: present
# - name: Deploy Portainer stack from compose file
# community.docker.docker_stack:
# name: portainer
# state: present
# compose:
# - "{{ lookup('file', 'files/docker-base-stack.yml') | from_yaml }}"