#!/usr/bin/env ansible-playbook --- #==============================================================# # File : infra-rm.yml # Desc : uninstall pigsty infra module # Ctime : 2022-02-22 # Mtime : 2026-08-01 # Path : infra-rm.yml # Docs : https://pigsty.io/docs/infra/playbook # License1 : Apache-2.0 @ https://pigsty.io/docs/about/license/ # Copyright : 2018-2026 Ruohang Feng / Vonng (rh@vonng.com) #==============================================================# #--------------------------------------------------------------- # Usage #--------------------------------------------------------------- # ./infra-rm.yml # remove everything about infra # ./infra-rm.yml -t deregister # remove infra targets/datasource/vector # ./infra-rm.yml -t service # stop infra services # ./infra-rm.yml -t config # remove infra config & reload unit # ./infra-rm.yml -t env # remove infra env files # ./infra-rm.yml -t data # remove infra data # ./infra-rm.yml -t package # uninstall infra packages #--------------------------------------------------------------- #--------------------------------------------------------------# # Node Identity #--------------------------------------------------------------# - name: NODE ID become: true hosts: infra gather_facts: no ignore_errors: true roles: [ { role: node_id } ] #--------------------------------------------------------------# # Remove Infrastructure #--------------------------------------------------------------# - name: INFRA REMOVE become: true hosts: infra gather_facts: no ignore_errors: true tasks: #--------------------------------------------- # Deregister from Infra Services #--------------------------------------------- - name: remove infra targets from victoria tags: [ deregister, rm_metrics ] ignore_errors: true when: infra_seq is defined delegate_to: '{{ item }}' loop: '{{ groups["infra"] | default([]) }}' file: path="/infra/targets/infra/infra-{{ infra_seq }}.yml" state=absent - name: remove infra datasource files tags: [ deregister, rm_ds ] ignore_errors: true when: infra_seq is defined delegate_to: '{{ item.0 }}' loop: "{{ groups['infra'] | default([]) | product(ds_list) | list }}" file: path="/infra/datasources/{{ item.1 }}.json" state=absent vars: ds_list: - "vmetrics-{{ infra_seq }}" - "vlogs-{{ infra_seq }}" - "vtraces-{{ infra_seq }}" - name: remove infra datasources from grafana tags: [ deregister, rm_ds ] ignore_errors: true when: infra_seq is defined delegate_to: '{{ item }}' loop: '{{ groups["infra"] | default([]) }}' shell: | curl -sS -X DELETE "http://127.0.0.1:{{ gf_port }}/ui/api/datasources/name/vmetrics-{{ infra_seq }}" -u "{{ gf_user }}:{{ gf_pass }}" -H 'Content-Type: application/json' || true curl -sS -X DELETE "http://127.0.0.1:{{ gf_port }}/ui/api/datasources/name/vlogs-{{ infra_seq }}" -u "{{ gf_user }}:{{ gf_pass }}" -H 'Content-Type: application/json' || true curl -sS -X DELETE "http://127.0.0.1:{{ gf_port }}/ui/api/datasources/name/vtraces-{{ infra_seq }}" -u "{{ gf_user }}:{{ gf_pass }}" -H 'Content-Type: application/json' || true true args: { executable: /bin/bash } vars: gf_port: "{{ grafana_port|default(3000) }}" gf_user: "{{ grafana_admin_username|default('admin') }}" gf_pass: "{{ grafana_admin_password|default('pigsty') }}" - name: remove nginx logs from vector tags: [ deregister, rm_logs ] ignore_errors: true block: - name: remove nginx vector logging config file: path=/etc/vector/nginx.yaml state=absent - name: reload vector to discard nginx log systemd: name=vector state=reloaded enabled=yes daemon_reload=yes #--------------------------------------------- # Stop Service #--------------------------------------------- - name: stop infra service systemd: name={{ item }} state=stopped enabled=no daemon_reload=yes tags: service with_items: - alertmanager - blackbox_exporter - vmetrics - vlogs - vtraces - vmalert - grafana-server - nginx_exporter - nginx - dnsmasq #--------------------------------------------- # Remove conf #--------------------------------------------- - name: remove infra conf file: state=absent path="{{ item }}" tags: config with_items: - /etc/pki/infra.crt - /etc/pki/infra.key - /etc/alertmanager.yml - /etc/default/alertmanager - /etc/systemd/system/alertmanager.service - /etc/blackbox.yml - /etc/default/blackbox_exporter - /etc/systemd/system/blackbox_exporter.service - /etc/default/vlogs - /etc/default/vmetrics - /etc/default/vtraces - /etc/default/vmalert - /etc/systemd/system/vlogs.service - /etc/systemd/system/vmetrics.service - /etc/systemd/system/vtraces.service - /etc/systemd/system/vmalert.service - /etc/grafana - /etc/nginx/conf.d - /etc/default/nginx_exporter - /etc/systemd/system/nginx_exporter.service - /etc/dnsmasq.d/pigsty #- /etc/dnsmasq.conf #- /etc/systemd/system/dnsmasq.service - name: reload systemd after infra unit removal systemd: daemon_reload=yes tags: config #--------------------------------------------- # Remove Env #--------------------------------------------- - name: remove infra env become: false file: state=absent path="{{ item }}" tags: env with_items: - '~/.pg_service.conf' - '~/.servers.json' - '~/.pgpass' - '~/.pigsty' - '~/.pgpass' #--------------------------------------------- # Remove Infra Data (DANGEROUS) #--------------------------------------------- - name: remove infra data file: state=absent path="{{ item }}" tags: data with_items: - "{{ infra_data|default('/data/infra') }}" - "{{ nginx_data|default('/data/nginx') }}" - "{{ nginx_home|default('/www') }}" - /var/lib/grafana #--------------------------------------------- # Uninstall Packages #--------------------------------------------- - name: uninstall infra packages package: name={{ item }} state=absent tags: package with_items: - alertmanager - blackbox-exporter - grafana - nginx-exporter - nginx - mcli - victoria-metrics - victoria-logs - victoria-traces - vmutils - vlogscli #- dnsmasq ...