Skip to content

Commit

Permalink
purge: do not purge infra pkgs by default
Browse files Browse the repository at this point in the history
By default infra pkgs will remain installed after the cluster
purge as they might already be there at Ceph installation and could be
used by other processes on the nodes.

Fixes: #239

Signed-off-by: Teoman ONAY <[email protected]>
  • Loading branch information
asm0deuz committed Nov 29, 2023
1 parent badf6b3 commit a6b371b
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 59 deletions.
5 changes: 3 additions & 2 deletions ceph_defaults/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@ ceph_ibm_key: https://public.dhe.ibm.com/ibmdl/export/pub/storage/ceph/RPM-GPG-K
ceph_release: quincy
upgrade_ceph_packages: false
ceph_pkgs:
- chrony
- cephadm
- podman
- ceph-common
ceph_client_pkgs:
- chrony
- ceph-common
infra_pkgs:
- chrony
- podman
client_group: clients
64 changes: 33 additions & 31 deletions cephadm-clients.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,39 +26,41 @@


- name: Confirm local readiness
hosts: localhost
hosts: all
gather_facts: false
tasks:

- name: import_role ceph_defaults
import_role:
name: ceph_defaults

- name: fail if the fsid parameter is missing
fail:
msg: >
You must supply an 'fsid' parameter for the corresponding ceph cluster
when: fsid is undefined

- name: fail if admin group doesn't exist or is empty
fail:
msg: |
You must define a group [admin] in your inventory which provides the
keyring that you want to distribute
when: "'admin' not in groups or groups['admin'] | length < 1"

- name: fail if client_group is NOT in the inventory
fail:
msg: >
Variable client_group '{{ client_group }}' is not defined in the inventory
when: client_group not in groups

- name: fail if keyring variable is missing
fail:
msg: |
You must supply a 'keyring' variable that defines the path to the key
that you want to distribute to your client machines
when: keyring is not defined
- run_once: true
delegate_to: localhost
block:
- name: import_role ceph_defaults
import_role:
name: ceph_defaults

- name: fail if the fsid parameter is missing
fail:
msg: >
You must supply an 'fsid' parameter for the corresponding ceph cluster
when: fsid is undefined

- name: fail if admin group doesn't exist or is empty
fail:
msg: |
You must define a group [admin] in your inventory which provides the
keyring that you want to distribute
when: "'admin' not in groups or groups['admin'] | length < 1"

- name: fail if client_group is NOT in the inventory
fail:
msg: >
Variable client_group '{{ client_group }}' is not defined in the inventory
when: client_group not in groups

- name: fail if keyring variable is missing
fail:
msg: |
You must supply a 'keyring' variable that defines the path to the key
that you want to distribute to your client machines
when: keyring is not defined


- name: Confirm admin host is ready
Expand Down
2 changes: 1 addition & 1 deletion cephadm-preflight.yml
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@

- name: install prerequisites packages
package:
name: "{{ ceph_pkgs }}"
name: "{{ ceph_pkgs + infra_pkgs }}"
state: "{{ (upgrade_ceph_packages | bool) | ternary('latest', 'present') }}"
register: result
until: result is succeeded
Expand Down
57 changes: 32 additions & 25 deletions cephadm-purge-cluster.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,28 @@


- name: check local prerequisites are in place
hosts: localhost
hosts: all
gather_facts: false
become: true
any_errors_fatal: true

tasks:
- name: fail if fsid was not provided
fail:
msg: |
You must provide the cluster fsid to be purged.
e.g. ansible-playbook -i <inventory host file> cephadm-purge-cluster.yml -e fsid=<your fsid>
when: fsid is undefined

- name: fail if admin group doesn't exist or is empty
fail:
msg: |
You must define a group [admin] in your inventory and add a node where
admin keyring is present at /etc/ceph/ceph.client.admin.keyring
when: "'admin' not in groups or groups['admin'] | length < 1"

- run_once: true
delegate_to: localhost
block:
- name: fail if fsid was not provided
fail:
msg: |
You must provide the cluster fsid to be purged.
e.g. ansible-playbook -i <inventory host file> cephadm-purge-cluster.yml -e fsid=<your fsid>
when: fsid is undefined

- name: fail if admin group doesn't exist or is empty
fail:
msg: |
You must define a group [admin] in your inventory and add a node where
admin keyring is present at /etc/ceph/ceph.client.admin.keyring
when: "'admin' not in groups or groups['admin'] | length < 1"

- name: check keyring is present on the admin host
hosts: admin[0]
Expand All @@ -53,7 +55,7 @@


- name: check cluster hosts have cephadm and the required fsid {{ fsid }}
hosts: all
hosts: all,!{{ client_group }}
gather_facts: false
become: true
any_errors_fatal: true
Expand All @@ -68,35 +70,31 @@
register: cephadm_exists
changed_when: false
failed_when: false
when: group_names != [client_group]

- name: fail if cephadm is not available
fail:
msg: |
The cephadm binary is missing on {{ inventory_hostname }}. To purge the cluster you must have cephadm installed
on ALL ceph hosts. Install manually or use the preflight playbook.
when:
- group_names != [client_group]
- cephadm_exists.rc

- name: check fsid directory given is valid across the cluster
stat:
path: /var/lib/ceph/{{ fsid }}
register: fsid_exists
when: group_names != [client_group]

- name: fail if the fsid directory is missing
fail:
msg: |
The fsid directory '/var/lib/ceph/{{ fsid }}' can not be found on {{ inventory_hostname }}
Is the fsid correct?
when:
- group_names != [client_group]
- not fsid_exists.stat.exists | bool


- name: confirm whether user really wants to purge the cluster
hosts: localhost
hosts: all
gather_facts: false
become: false

Expand All @@ -110,6 +108,8 @@

tasks:
- name: exit playbook, if user did not mean to purge cluster
run_once: true
delegate_to: localhost
fail:
msg: |
Exiting cephadm-purge-cluster playbook, cluster was NOT purged.
Expand All @@ -129,7 +129,7 @@


- name: Purge ceph daemons from all hosts in the cluster
hosts: all
hosts: all,!{{ client_group }}
become: true
gather_facts: false
any_errors_fatal: true
Expand All @@ -140,7 +140,6 @@

- name: purge ceph daemons
command: "cephadm rm-cluster --force --zap-osds --fsid {{ fsid }}"
when: group_names != [client_group]


- name: remove ceph packages
Expand All @@ -153,9 +152,17 @@
import_role:
name: ceph_defaults

- name: remove ceph packages
- name: remove ceph packages on servers
package:
name: {{ ceph_pkgs | unique }}
state: absent
register: result
until: result is succeeded

- name: remove ceph packages on clients
package:
name: "{{ 'ceph-common' if group_names == [client_group] else ceph_pkgs | unique }}"
name: ceph-common
state: absent
register: result
until: result is succeeded

0 comments on commit a6b371b

Please sign in to comment.