From b16ab5205c00b3716bc12ff8c6d7d97121cff80e Mon Sep 17 00:00:00 2001 From: Marty Oehme Date: Tue, 27 Jul 2021 13:21:08 +0200 Subject: [PATCH] Fix docker-swarm for multi-ip machines Added variable docker_swarm_advertise_addr which can be set to the advertise address swarm should use. Mostly introduced for vagrant-based test setups for now, which contain multiple IP addresses and fail otherwise. --- ansible.cfg | 3 +-- group_vars/testing.yml | 3 +++ roles/docker-swarm/tasks/main.yml | 12 ++++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 group_vars/testing.yml diff --git a/ansible.cfg b/ansible.cfg index aff6d05..dceb2d4 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,4 +1,3 @@ [defaults] -inventory = ./inventory -group = testing +inventory = ./staging diff --git a/group_vars/testing.yml b/group_vars/testing.yml new file mode 100644 index 0000000..a75cf06 --- /dev/null +++ b/group_vars/testing.yml @@ -0,0 +1,3 @@ +--- + +docker_swarm_advertise_addr: eth1 diff --git a/roles/docker-swarm/tasks/main.yml b/roles/docker-swarm/tasks/main.yml index 4d78fe0..b15f36f 100644 --- a/roles/docker-swarm/tasks/main.yml +++ b/roles/docker-swarm/tasks/main.yml @@ -3,11 +3,19 @@ # needs community docker module installed: # run $`ansible-galaxy collection install community.docker` -- name: Ensure swarm is initialized +- name: Ensure swarm is initialized with default advertise address community.docker.docker_swarm: state: present - # advertise_addr: eth1 # necessary for testing setup on vagrant become: true + when: docker_swarm_advertise_addr is undefined + +# ensure setups with multiple ip addresses can be initialized +- name: Ensure swarm is initialized with specified advertise address + community.docker.docker_swarm: + state: present + advertise_addr: "{{ docker_swarm_advertise_addr }}" + become: true + when: docker_swarm_advertise_addr is defined - name: Ensure public network exists community.docker.docker_network: