]> git.apps.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
purge-container: use lsblk to resolv parent device
authorGuillaume Abrioux <gabrioux@redhat.com>
Wed, 17 Jan 2018 08:08:16 +0000 (09:08 +0100)
committerSébastien Han <seb@redhat.com>
Wed, 17 Jan 2018 14:54:20 +0000 (15:54 +0100)
Using `lsblk` to resolv the parent device is better than just removing the last
char when passing it to the zap container.

Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
infrastructure-playbooks/purge-docker-cluster.yml

index 0414ede84fc969b63209c1e65cd24cb8baf8a369..75fd866f5217a1a326061e242c4f4d710032bd74 100644 (file)
     command: "docker rm -f {{ item }}"
     with_items: "{{ prepare_containers.stdout_lines }}"
 
-  - name: see if ceph-disk-created data partitions are present
-    shell: |
-      ls /dev/disk/by-partlabel | grep -q "ceph.*.data"
-    failed_when: false
-    register: ceph_data_partlabels
-
-  - name: see if ceph-disk-created block partitions are present
-    shell: |
-      ls /dev/disk/by-partlabel | grep -q "ceph.*block$"
-    failed_when: false
-    register: ceph_block_partlabels
-
-  - name: see if ceph-disk-created journal partitions are present
-    shell: |
-      ls /dev/disk/by-partlabel | grep -q "ceph.*.journal"
-    failed_when: false
-    register: ceph_journal_partlabels
-
-  - name: see if ceph-disk-created block db partitions are present
-    shell: |
-      ls /dev/disk/by-partlabel | grep -q "ceph.*.block.db"
-    failed_when: false
-    register: ceph_db_partlabels
-
-  - name: see if ceph-disk-created block wal partitions are present
-    shell: |
-      ls /dev/disk/by-partlabel | grep -q "ceph.*.block.wal"
-    failed_when: false
-    register: ceph_wal_partlabels
-
-  - name: see if ceph-disk-created lockbox partitions are present
-    shell: |
-      ls /dev/disk/by-partlabel | grep -q "ceph.*.lockbox"
-    failed_when: false
-    register: ceph_lockbox_partlabels
-
   # NOTE(leseb): hope someone will find a more elegant way one day...
   - name: see if encrypted partitions are present
     shell: |
   - name: get ceph data partitions
     command: |
       blkid -o device -t PARTLABEL="ceph data"
-    when: ceph_data_partlabels.rc == 0
     failed_when: false
     register: ceph_data_partition_to_erase_path
 
   - name: get ceph lockbox partitions
     command: |
       blkid -o device -t PARTLABEL="ceph lockbox"
-    when: ceph_lockbox_partlabels.rc == 0
     failed_when: false
     register: ceph_lockbox_partition_to_erase_path
 
   - name: get ceph block partitions
     command: |
       blkid -o device -t PARTLABEL="ceph block"
-    when: ceph_block_partlabels.rc == 0
     failed_when: false
     register: ceph_block_partition_to_erase_path
 
   - name: get ceph journal partitions
     command: |
       blkid -o device -t PARTLABEL="ceph journal"
-    when: ceph_journal_partlabels.rc == 0
     failed_when: false
     register: ceph_journal_partition_to_erase_path
 
   - name: get ceph db partitions
     command: |
       blkid -o device -t PARTLABEL="ceph block.db"
-    when: ceph_db_partlabels.rc == 0
     failed_when: false
     register: ceph_db_partition_to_erase_path
 
   - name: get ceph wal partitions
     command: |
       blkid -o device -t PARTLABEL="ceph block.wal"
-    when: ceph_wal_partlabels.rc == 0
     failed_when: false
     register: ceph_wal_partition_to_erase_path
 
+  - name: set_fact combined_devices_list
+    set_fact:
+      combined_devices_list: "{{ ceph_data_partition_to_erase_path.get('stdout_lines', []) +
+                                 ceph_lockbox_partition_to_erase_path.get('stdout_lines', []) +
+                                 ceph_block_partition_to_erase_path.get('stdout_lines', []) +
+                                 ceph_journal_partition_to_erase_path.get('stdout_lines', []) +
+                                 ceph_db_partition_to_erase_path.get('stdout_lines', []) +
+                                 ceph_wal_partition_to_erase_path.get('stdout_lines', []) }}"
+
+  - name: resolve parent device
+    shell: $(lsblk --nodeps -no pkname "{{ item }}")
+    register: tmp_resolved_parent_device
+    with_items:
+      - "{{ combined_devices_list }}"
+
+  - name: set_fact resolved_parent_device
+    set_fact:
+      resolved_parent_device: "{{ tmp_resolved_parent_device.results | map(attribute='stdout') | list | unique }}"
+
   - name: zap ceph osd disks
     shell: |
       docker run --rm \
       --privileged=true \
-      --name ceph-osd-zap-{{ ansible_hostname }}-{{ item[:-1] | regex_replace('/dev/', '') }} \
+      --name ceph-osd-zap-{{ ansible_hostname }}-{{ item }} \
       -v /dev/:/dev/ \
-      -e OSD_DEVICE={{ item[:-1] }} \
+      -e OSD_DEVICE=/dev/{{ item }} \
       {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} \
       zap_device
     with_items:
-      - "{{ ceph_data_partition_to_erase_path.stdout_lines | default([]) }}"
-      - "{{ ceph_lockbox_partition_to_erase_path.stdout_lines | default([]) }}"
-      - "{{ ceph_block_partition_to_erase_path.stdout_lines | default([]) }}"
-      - "{{ ceph_journal_partition_to_erase_path.stdout_lines | default([]) }}"
-      - "{{ ceph_db_partition_to_erase_path.stdout_lines | default([]) }}"
-      - "{{ ceph_wal_partition_to_erase_path.stdout_lines | default([]) }}"
-    when:
-      - (ceph_data_partlabels.rc == 0 or ceph_block_partlabels.rc == 0 or ceph_journal_partlabels.rc == 0 or ceph_db_partlabels.rc == 0 or ceph_wal_partlabels.rc == 0)
+      - "{{ combined_devices_list }}"
 
   - name: wait until the zap containers die
     shell: |
   - name: remove ceph osd zap disk container
     docker:
       image: "{{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}"
-      name: "ceph-osd-zap-{{ ansible_hostname }}-{{ item[:-1] | regex_replace('/dev/', '') }}"
+      name: "ceph-osd-zap-{{ ansible_hostname }}-{{ item }}"
       state: absent
     with_items:
-      - "{{ ceph_data_partition_to_erase_path.stdout_lines | default([]) }}"
-      - "{{ ceph_lockbox_partition_to_erase_path.stdout_lines | default([]) }}"
-      - "{{ ceph_block_partition_to_erase_path.stdout_lines | default([]) }}"
-      - "{{ ceph_journal_partition_to_erase_path.stdout_lines | default([]) }}"
-      - "{{ ceph_db_partition_to_erase_path.stdout_lines | default([]) }}"
-      - "{{ ceph_wal_partition_to_erase_path.stdout_lines | default([]) }}"
+      - "{{ combined_devices_list }}"
 
   - name: remove ceph osd service
     file: