Ctrl K
ComunidadGuías…

infra-rm.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/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

...