From 25d56e36412b607fa55030072f550e5550b73e8b Mon Sep 17 00:00:00 2001 From: Bartek Grzybowski Date: Fri, 10 May 2019 09:29:10 +0200 Subject: Fix idempotence issue in dns role Docker_container module was called twice: in a taks 'Start dns server container' and then as a handler but there was a divergent set o parameters for the module in them. This had the efect of the container being started by the means of the task itself but immediately after it was killed and started again by the handler because it had different set of arguments for the module. The fix is to include the handler itself as a task so the whole run is idempotent. Change-Id: I9078f9dfe5894d94d4b6a9e44411f034508992e7 Issue-ID: OOM-1845 Signed-off-by: Bartek Grzybowski --- ansible/roles/dns/handlers/main.yml | 3 ++- ansible/roles/dns/tasks/main.yml | 28 ++++++++++------------------ 2 files changed, 12 insertions(+), 19 deletions(-) (limited to 'ansible/roles/dns') diff --git a/ansible/roles/dns/handlers/main.yml b/ansible/roles/dns/handlers/main.yml index 9d77893a..9e957474 100644 --- a/ansible/roles/dns/handlers/main.yml +++ b/ansible/roles/dns/handlers/main.yml @@ -1,5 +1,5 @@ --- -- name: Restart dns server container +- name: Run dns server container docker_container: name: dns-server image: "{{ dns_server_image }}" @@ -12,3 +12,4 @@ - "53:53/udp" state: started restart_policy: unless-stopped + recreate: true diff --git a/ansible/roles/dns/tasks/main.yml b/ansible/roles/dns/tasks/main.yml index 3eba9fdb..121ee0c4 100644 --- a/ansible/roles/dns/tasks/main.yml +++ b/ansible/roles/dns/tasks/main.yml @@ -8,7 +8,7 @@ template: src: simulated_hosts.j2 dest: "{{ app_data_path }}/cfg/simulated_hosts" - notify: Restart dns server container + notify: Run dns server container - name: Load dns server container docker_image: @@ -16,21 +16,13 @@ load_path: "{{ infra_images_path }}/{{ dns_server_image_tar }}" state: present timeout: 120 - notify: Restart dns server container + notify: Run dns server container -- name: Start dns server container - docker_container: - name: dns-server - network_mode: host - image: "{{ dns_server_image }}" - command: -H /simulated_hosts --log-facility=- - capabilities: NET_ADMIN - dns_servers: - - 127.0.0.1 - volumes: - - "{{ app_data_path }}/cfg/simulated_hosts:/simulated_hosts:ro" - ports: - - "53:53/tcp" - - "53:53/udp" - state: started - restart_policy: unless-stopped +- name: Enumerate running containers + docker_list_containers: + register: containers_list + +- name: Ensure dns container is running + command: /bin/true + notify: Run dns server container + when: "'dns-server' not in containers_list.containers" -- cgit 1.2.3-korg