02_manager_join.ymlΒΆ

---
- name: "πŸ” Probe local docker swarm state"
  ansible.builtin.command: container info --format '{{ "{{" }}.Swarm.LocalNodeState{{ "}}" }}'
  register: docker_swarm_local_state
  changed_when: false
  failed_when: docker_swarm_local_state.rc != 0

- name: "🐝 Join swarm cluster as manager (only when not already active)"
  no_log: "{{ MASK_CREDENTIALS_IN_LOGS | bool }}"
  uri_retry:
    url: http://localhost/swarm/join
    unix_socket: /var/run/docker.sock
    method: POST
    body_format: json
    body:
      ListenAddr: "{{ SWARM_LISTEN_ADDR }}"
      RemoteAddrs:
        - "{{ svc_swarm_manager_addr }}"
      JoinToken: "{{ svc_swarm_manager_token }}"
    status_code: 200
    timeout: "{{ lookup('timeout', 120) | int }}"
  when: docker_swarm_local_state.stdout != 'active'
  changed_when: true