mirror of https://github.com/ceph/ceph-ansible.git
230 lines
7.3 KiB
YAML
230 lines
7.3 KiB
YAML
---
|
|
# This playbook purges the Ceph MGR Dashboard and Monitoring
|
|
# (alertmanager/prometheus/grafana/node-exporter) stack.
|
|
# It removes: packages, configuration files and ALL THE DATA
|
|
#
|
|
# Use it like this:
|
|
# ansible-playbook purge-dashboard.yml
|
|
# Prompts for confirmation to purge, defaults to no and
|
|
# doesn't purge anything. yes purges the dashboard and
|
|
# monitoring stack.
|
|
#
|
|
# ansible-playbook -e ireallymeanit=yes|no purge-dashboard.yml
|
|
# Overrides the prompt using -e option. Can be used in
|
|
# automation scripts to avoid interactive prompt.
|
|
|
|
- name: Confirm whether user really meant to purge the dashboard
|
|
hosts: localhost
|
|
gather_facts: false
|
|
vars_prompt:
|
|
- name: ireallymeanit # noqa: name[casing]
|
|
prompt: Are you sure you want to purge the dashboard?
|
|
default: 'no'
|
|
private: false
|
|
tasks:
|
|
- name: Exit playbook, if user did not mean to purge dashboard
|
|
ansible.builtin.fail:
|
|
msg: >
|
|
"Exiting purge-dashboard playbook, dashboard was NOT purged.
|
|
To purge the dashboard, either say 'yes' on the prompt or
|
|
or use `-e ireallymeanit=yes` on the command line when
|
|
invoking the playbook"
|
|
when: ireallymeanit != 'yes'
|
|
|
|
- name: Import_role ceph-defaults
|
|
ansible.builtin.import_role:
|
|
name: ceph-defaults
|
|
|
|
- name: Check if a legacy grafana-server group exists
|
|
ansible.builtin.import_role:
|
|
name: ceph-facts
|
|
tasks_from: convert_grafana_server_group_name.yml
|
|
when: groups.get((grafana_server_group_name | default('grafana-server')), []) | length > 0
|
|
|
|
|
|
- name: Gather facts on all hosts
|
|
hosts:
|
|
- "{{ mon_group_name|default('mons') }}"
|
|
- "{{ osd_group_name|default('osds') }}"
|
|
- "{{ mds_group_name|default('mdss') }}"
|
|
- "{{ rgw_group_name|default('rgws') }}"
|
|
- "{{ rbdmirror_group_name|default('rbdmirrors') }}"
|
|
- "{{ nfs_group_name|default('nfss') }}"
|
|
- "{{ client_group_name|default('clients') }}"
|
|
- "{{ mgr_group_name|default('mgrs') }}"
|
|
- "{{ monitoring_group_name | default('monitoring') }}"
|
|
become: true
|
|
tasks:
|
|
- name: Gather facts on all Ceph hosts for following reference
|
|
ansible.builtin.debug:
|
|
msg: "gather facts on all Ceph hosts for following reference"
|
|
|
|
- name: Purge node exporter
|
|
hosts:
|
|
- "{{ mon_group_name|default('mons') }}"
|
|
- "{{ osd_group_name|default('osds') }}"
|
|
- "{{ mds_group_name|default('mdss') }}"
|
|
- "{{ rgw_group_name|default('rgws') }}"
|
|
- "{{ rbdmirror_group_name|default('rbdmirrors') }}"
|
|
- "{{ nfs_group_name|default('nfss') }}"
|
|
- "{{ client_group_name|default('clients') }}"
|
|
- "{{ mgr_group_name|default('mgrs') }}"
|
|
- "{{ monitoring_group_name | default('monitoring') }}"
|
|
gather_facts: false
|
|
become: true
|
|
tasks:
|
|
- name: Import ceph-defaults role
|
|
ansible.builtin.import_role:
|
|
name: ceph-defaults
|
|
|
|
- name: Import ceph-facts role
|
|
ansible.builtin.import_role:
|
|
name: ceph-facts
|
|
tasks_from: container_binary
|
|
|
|
- name: Disable node_exporter service
|
|
ansible.builtin.service:
|
|
name: node_exporter
|
|
state: stopped
|
|
enabled: false
|
|
failed_when: false
|
|
|
|
- name: Remove node_exporter service files
|
|
ansible.builtin.file:
|
|
name: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- /etc/systemd/system/node_exporter.service
|
|
- /run/node_exporter.service-cid
|
|
|
|
- name: Remove node-exporter image
|
|
ansible.builtin.command: "{{ container_binary }} rmi {{ node_exporter_container_image }}"
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: Purge ceph monitoring
|
|
hosts: "{{ monitoring_group_name | default('monitoring') }}"
|
|
gather_facts: false
|
|
become: true
|
|
tasks:
|
|
- name: Import ceph-defaults role
|
|
ansible.builtin.import_role:
|
|
name: ceph-defaults
|
|
|
|
- name: Import ceph-facts role
|
|
ansible.builtin.import_role:
|
|
name: ceph-facts
|
|
tasks_from: container_binary
|
|
|
|
- name: Stop services
|
|
ansible.builtin.service:
|
|
name: "{{ item }}"
|
|
state: stopped
|
|
enabled: false
|
|
failed_when: false
|
|
loop:
|
|
- alertmanager
|
|
- prometheus
|
|
- grafana-server
|
|
|
|
- name: Remove systemd service files
|
|
ansible.builtin.file:
|
|
name: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- /etc/systemd/system/alertmanager.service
|
|
- /etc/systemd/system/prometheus.service
|
|
- /etc/systemd/system/grafana-server.service
|
|
- /run/alertmanager.service-cid
|
|
- /run/prometheus.service-cid
|
|
- /run/grafana-server.service-cid
|
|
|
|
- name: Remove ceph dashboard container images
|
|
ansible.builtin.command: "{{ container_binary }} rmi {{ item }}"
|
|
loop:
|
|
- "{{ alertmanager_container_image }}"
|
|
- "{{ prometheus_container_image }}"
|
|
- "{{ grafana_container_image }}"
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: Remove ceph-grafana-dashboards package on RedHat or SUSE
|
|
ansible.builtin.package:
|
|
name: ceph-grafana-dashboards
|
|
state: absent
|
|
when:
|
|
- not containerized_deployment | bool
|
|
- ansible_facts['os_family'] in ['RedHat', 'Suse']
|
|
|
|
- name: Remove data
|
|
ansible.builtin.file:
|
|
name: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- "{{ alertmanager_conf_dir }}"
|
|
- "{{ prometheus_conf_dir }}"
|
|
- /etc/grafana
|
|
- "{{ alertmanager_data_dir }}"
|
|
- "{{ prometheus_data_dir }}"
|
|
- /var/lib/grafana
|
|
|
|
- name: Purge ceph dashboard
|
|
hosts: "{{ groups[mgr_group_name] | default(groups[mon_group_name]) | default(omit) }}"
|
|
gather_facts: false
|
|
become: true
|
|
environment:
|
|
CEPH_CONTAINER_IMAGE: "{{ ceph_docker_registry + '/' + ceph_docker_image + ':' + ceph_docker_image_tag if containerized_deployment | bool else None }}"
|
|
CEPH_CONTAINER_BINARY: "{{ container_binary }}"
|
|
tasks:
|
|
- name: Import ceph-defaults role
|
|
ansible.builtin.import_role:
|
|
name: ceph-defaults
|
|
|
|
- name: Import ceph-facts role
|
|
ansible.builtin.import_role:
|
|
name: ceph-facts
|
|
tasks_from: container_binary
|
|
|
|
- name: Remove the dashboard admin user
|
|
ceph_dashboard_user:
|
|
name: "{{ dashboard_admin_user }}"
|
|
cluster: "{{ cluster }}"
|
|
state: absent
|
|
run_once: true
|
|
delegate_to: "{{ groups[mon_group_name][0] }}"
|
|
|
|
- name: Remove radosgw system user
|
|
radosgw_user:
|
|
name: "{{ dashboard_rgw_api_user_id }}"
|
|
cluster: "{{ cluster }}"
|
|
state: absent
|
|
run_once: true
|
|
delegate_to: "{{ groups[mon_group_name][0] }}"
|
|
when: groups.get(rgw_group_name, []) | length > 0
|
|
|
|
- name: Disable mgr dashboard and prometheus modules
|
|
ceph_mgr_module:
|
|
name: "{{ item }}"
|
|
cluster: "{{ cluster }}"
|
|
state: disable
|
|
run_once: true
|
|
delegate_to: "{{ groups[mon_group_name][0] }}"
|
|
loop:
|
|
- dashboard
|
|
- prometheus
|
|
|
|
- name: Remove TLS certificate and key files
|
|
ansible.builtin.file:
|
|
name: "/etc/ceph/ceph-dashboard.{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- crt
|
|
- key
|
|
when: dashboard_protocol == "https"
|
|
|
|
- name: Remove ceph-mgr-dashboard package
|
|
ansible.builtin.package:
|
|
name: ceph-mgr-dashboard
|
|
state: absent
|
|
when: not containerized_deployment | bool
|