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