LogNotes

2025-07-09 20:01:38
Ниже пример простого Ansible playbook для **удаления node_exporter и mysqld_exporter** с RHEL 8, включая:

- остановку и отключение systemd-сервисов (`node_exporter` на порту 9100 и `mysqld_exporter` на 9104),
- удаление unit-файлов,
- удаление бинарников из `/usr/local/bin`,
- удаление созданных системных пользователей и групп (если они не нужны),
- очистку временных файлов и конфигураций.

```yaml
---
- name: Удаление node_exporter и mysqld_exporter с сервера
  hosts: all
  become: yes
  vars:
    exporters:
      - name: node_exporter
        service: node_exporter
        binary_path: /usr/local/bin/node_exporter
        user: node_exporter
        group: node_exporter
        systemd_unit: /etc/systemd/system/node_exporter.service
      - name: mysqld_exporter
        service: mysqld_exporter
        binary_path: /usr/local/bin/mysqld_exporter
        user: prometheus
        group: prometheus
        systemd_unit: /etc/systemd/system/mysqld_exporter.service
        config_file: /etc/.mysqld_exporter.cnf

  tasks:
    - name: Останавливаем и отключаем сервисы экспортёров
      systemd:
        name: "{{ item.service }}"
        state: stopped
        enabled: no
      loop: "{{ exporters }}"

    - name: Удаляем systemd unit-файлы экспортёров
      file:
        path: "{{ item.systemd_unit }}"
        state: absent
      loop: "{{ exporters }}"

    - name: Перезагружаем systemd после удаления unit-файлов
      systemd:
        daemon_reload: yes

    - name: Удаляем бинарники экспортёров
      file:
        path: "{{ item.binary_path }}"
        state: absent
      loop: "{{ exporters }}"

    - name: Удаляем конфигурационный файл mysqld_exporter (если есть)
      file:
        path: "{{ exporters[1].config_file }}"
        state: absent
      when: exporters[1].config_file is defined

    - name: Удаляем системных пользователей и группы экспортёров
      user:
        name: "{{ item.user }}"
        state: absent
        remove: yes
      loop: "{{ exporters }}"

    - name: Удаляем системные группы экспортёров
      group:
        name: "{{ item.group }}"
        state: absent
      loop: "{{ exporters }}"
```

### Объяснение:

- Сервисы останавливаются и отключаются от автозапуска.
- Unit-файлы systemd удаляются, после чего systemd перезагружается.
- Удаляются бинарные файлы из `/usr/local/bin`.
- Удаляется конфигурационный файл mysqld_exporter с паролями.
- Удаляются системные пользователи и группы, созданные для запусков экспортёров (если не нужны для других сервисов).

Этот playbook аккуратно удалит оба экспортёра с сервера, освободив порты 9100 и 9104 и очистив связанные файлы и пользователей.

Если нужно, могу помочь адаптировать под конкретные требования или добавить проверку существования сервисов перед удалением.
← Previous Next →
Back to list