Merge "Fix idempotence issue in dns role"
diff --git a/ansible/roles/dns/handlers/main.yml b/ansible/roles/dns/handlers/main.yml
index 9d77893..9e95747 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 3eba9fd..121ee0c 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"