diff --git a/infrastructure-playbooks/purge-docker-cluster.yml b/infrastructure-playbooks/purge-docker-cluster.yml index 0414ede84..75fd866f5 100644 --- a/infrastructure-playbooks/purge-docker-cluster.yml +++ b/infrastructure-playbooks/purge-docker-cluster.yml @@ -290,42 +290,6 @@ 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: | @@ -342,63 +306,69 @@ - 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: | @@ -412,15 +382,10 @@ - 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: