infra-rm.yml
Rama main · réplica de lectura del repositorio original.
#!/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
...