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