summaryrefslogtreecommitdiffstats
path: root/ansible/roles
diff options
context:
space:
mode:
authorBartek Grzybowski <b.grzybowski@partner.samsung.com>2019-05-10 09:29:10 +0200
committerBartek Grzybowski <b.grzybowski@partner.samsung.com>2019-05-15 11:27:26 +0200
commit25d56e36412b607fa55030072f550e5550b73e8b (patch)
treeb034f4454ba44e031119834ea8f1b13533e5fb3f /ansible/roles
parente7fd64586455a7c1270c1b1c846c19e030780315 (diff)
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 <b.grzybowski@partner.samsung.com>
Diffstat (limited to 'ansible/roles')
-rw-r--r--ansible/roles/dns/handlers/main.yml3
-rw-r--r--ansible/roles/dns/tasks/main.yml28
2 files changed, 12 insertions, 19 deletions
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"