46 lines
1.6 KiB
YAML

---
# Ensure a Swarm-wide overlay network exists for inter-service communication.
- name: Validate Docker is available
ansible.builtin.command: docker --version
changed_when: false
check_mode: false
- name: Collect Swarm state from current host
ansible.builtin.command: docker info --format '{{"{{"}} .Swarm.LocalNodeState {{"}}"}}|{{"{{"}} .Swarm.ControlAvailable {{"}}"}}'
register: swarm_state
changed_when: false
check_mode: false
- name: Fail when host is not an active swarm manager
ansible.builtin.assert:
that:
- swarm_state.stdout is search('active|true')
fail_msg: >-
This role must run on an active Swarm manager.
Current state was: {{ swarm_state.stdout }}
success_msg: "Host is an active Swarm manager."
- name: Ensure overlay network exists for swarm services
community.docker.docker_network:
name: "{{ swarm_overlay_network_name }}"
driver: overlay
scope: swarm
attachable: "{{ swarm_overlay_network_attachable }}"
internal: "{{ swarm_overlay_network_internal }}"
ipam_config:
- subnet: "{{ swarm_overlay_network_subnet }}"
gateway: "{{ swarm_overlay_network_gateway }}"
driver_options:
com.docker.network.driver.mtu: "{{ swarm_overlay_network_mtu }}"
state: present
register: swarm_overlay_network_result
- name: Show network reconciliation result
ansible.builtin.debug:
msg:
- "Overlay network ensured: {{ swarm_overlay_network_name }}"
- "Changed: {{ swarm_overlay_network_result.changed }}"
- "Subnet: {{ swarm_overlay_network_subnet }}"
- "Gateway: {{ swarm_overlay_network_gateway }}"