From 7d7dc486a47e58787e0eb2abe99c3beee723a84b Mon Sep 17 00:00:00 2001 From: Mark Goddard Date: Tue, 22 Aug 2017 13:59:49 +0000 Subject: [PATCH] Fix destroy of opensm and docker-registry containers Now also removes docker volumes --- .../roles/docker-registry/tasks/deploy.yml | 2 +- .../roles/docker-registry/tasks/destroy.yml | 26 ++++++++++++++++++- ansible/roles/opensm/tasks/deploy.yml | 2 +- ansible/roles/opensm/tasks/destroy.yml | 26 ++++++++++++++++++- 4 files changed, 52 insertions(+), 4 deletions(-) mode change 120000 => 100644 ansible/roles/docker-registry/tasks/destroy.yml mode change 120000 => 100644 ansible/roles/opensm/tasks/destroy.yml diff --git a/ansible/roles/docker-registry/tasks/deploy.yml b/ansible/roles/docker-registry/tasks/deploy.yml index cc492dbb3..85fa5034d 100644 --- a/ansible/roles/docker-registry/tasks/deploy.yml +++ b/ansible/roles/docker-registry/tasks/deploy.yml @@ -8,6 +8,6 @@ read_only: "{{ item.value.read_only | default(omit) }}" restart_policy: "{{ docker_registry_restart_policy }}" restart_retries: "{{ docker_registry_restart_retries }}" - state: "{{ 'started' if item.value.enabled and action != 'destroy' | bool else 'absent' }}" + state: "{{ (item.value.enabled and action != 'destroy') | ternary('started', 'absent') }}" volumes: "{{ item.value.volumes }}" with_dict: "{{ docker_registry_services }}" diff --git a/ansible/roles/docker-registry/tasks/destroy.yml b/ansible/roles/docker-registry/tasks/destroy.yml deleted file mode 120000 index 0412f9220..000000000 --- a/ansible/roles/docker-registry/tasks/destroy.yml +++ /dev/null @@ -1 +0,0 @@ -deploy.yml \ No newline at end of file diff --git a/ansible/roles/docker-registry/tasks/destroy.yml b/ansible/roles/docker-registry/tasks/destroy.yml new file mode 100644 index 000000000..2f40ffc0e --- /dev/null +++ b/ansible/roles/docker-registry/tasks/destroy.yml @@ -0,0 +1,25 @@ +--- +- include: deploy.yml + +- name: Check whether docker registry volumes are present + command: docker volume inspect {{ volume }} + changed_when: False + with_subelements: + - "{{ docker_registry_services }}" + - volumes + when: "'/' not in volume" + failed_when: + - volume_result.rc != 0 + - "'No such volume' not in volume_result.stderr" + vars: + volume: "{{ item.1.split(':')[0] }}" + register: volume_result + +- name: Ensure docker registry volumes are absent + command: docker volume rm {{ volume }} + with_items: "{{ volume_result.results }}" + when: + - not item | skipped + - item.rc == 0 + vars: + volume: "{{ item.item.1.split(':')[0] }}" diff --git a/ansible/roles/opensm/tasks/deploy.yml b/ansible/roles/opensm/tasks/deploy.yml index 736cdcc8d..76607832b 100644 --- a/ansible/roles/opensm/tasks/deploy.yml +++ b/ansible/roles/opensm/tasks/deploy.yml @@ -8,6 +8,6 @@ read_only: "{{ item.value.read_only | default(omit) }}" restart_policy: "{{ opensm_restart_policy }}" restart_retries: "{{ opensm_restart_retries }}" - state: "{{ 'started' if item.value.enabled and action != 'destroy' | bool else 'absent' }}" + state: "{{ (item.value.enabled and action != 'destroy') | ternary('started', 'absent') }}" volumes: "{{ item.value.volumes }}" with_dict: "{{ opensm_services }}" diff --git a/ansible/roles/opensm/tasks/destroy.yml b/ansible/roles/opensm/tasks/destroy.yml deleted file mode 120000 index 0412f9220..000000000 --- a/ansible/roles/opensm/tasks/destroy.yml +++ /dev/null @@ -1 +0,0 @@ -deploy.yml \ No newline at end of file diff --git a/ansible/roles/opensm/tasks/destroy.yml b/ansible/roles/opensm/tasks/destroy.yml new file mode 100644 index 000000000..9be7f3e7a --- /dev/null +++ b/ansible/roles/opensm/tasks/destroy.yml @@ -0,0 +1,25 @@ +--- +- include: deploy.yml + +- name: Check whether OpenSM volumes are present + command: docker volume inspect {{ volume }} + changed_when: False + with_subelements: + - "{{ opensm_services }}" + - volumes + when: "'/' not in volume" + failed_when: + - volume_result.rc != 0 + - "'No such volume' not in volume_result.stderr" + vars: + volume: "{{ item.1.split(':')[0] }}" + register: volume_result + +- name: Ensure OpenSM volumes are absent + command: docker volume rm {{ volume }} + with_items: "{{ volume_result.results }}" + when: + - not item | skipped + - item.rc == 0 + vars: + volume: "{{ item.item.1.split(':')[0] }}"