46 lines
1.6 KiB
YAML
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 }}"
|