kafka-rm.yml
Rama main · réplica de lectura del repositorio original.
#!/usr/bin/env ansible-playbook
---
#==============================================================#
# File : kafka-rm.yml
# Desc : remove kafka cluster / instance from hosts
# Ctime : 2024-01-01
# Mtime : 2026-08-06
# Path : kafka-rm.yml
# Docs : https://pigsty.io/docs/kafka/playbook
# License : Apache-2.0 @ https://pigsty.io/docs/about/license/
# Copyright : 2018-2026 Ruohang Feng / Vonng (rh@vonng.com)
#==============================================================#
- name: KAFKA REMOVE
hosts: all
become: true
gather_facts: no
ignore_errors: true
ignore_unreachable: true # a dead member is retired via surviving members
vars:
#kafka_safeguard: false # set true to halt removal (safety switch)
#kafka_rm_data: true # remove data dir & /etc/kafka recovery state? true by default
kafka_rm_pkg: false # uninstall kafka packages? false by default, explicit override required
pre_tasks:
- name: require an explicit kafka remove limit
connection: local
run_once: true
tags: always
any_errors_fatal: true
ignore_errors: false
assert:
that:
- ansible_limit is defined
- ansible_limit | trim | length > 0
fail_msg: kafka-rm.yml requires an explicit -l/--limit target
- name: skip non-kafka hosts
meta: end_host
when: kafka_cluster is not defined
tags: always
roles:
- { role: node_id ,when: kafka_cluster is defined }
- { role: kafka_remove ,when: kafka_cluster is defined }
#--------------------------------------------------------------#
# Usage
#--------------------------------------------------------------#
# Remove kafka cluster `kf-main` (always with an exact full-cluster -l limit)
# ./kafka-rm.yml -l kf-main
# -e kafka_rm_data=true # remove data dir & /etc/kafka recovery state (default)
# -e kafka_rm_data=false # keep data and recovery state; remove service integration only
# -e kafka_rm_pkg=true # also uninstall the kafka-stack packages
# -e kafka_safeguard=true # abort: refuse to remove anything
# It will abort if `kafka_safeguard` is set to `true` explicitly.
#
# Retire a member (shrink, or clean up after a dead node):
# ./kafka-rm.yml -l 10.10.10.13 # remove a single member from its cluster
# Selecting a strict subset of a cluster also retires the leaving kraft voter
# entry and broker registration through a surviving member, so this works
# even when the node itself is unreachable. Keep an odd controller count, and
# note that partition replicas still assigned to the retired broker stay
# under-replicated until a replacement with the same kafka_seq rejoins via
# ./kafka.yml (it re-inherits the assignment and resyncs automatically), or
# until you reassign them explicitly.
#
#--------------------------------------------------------------#
# Tasks
#--------------------------------------------------------------#
# kafka_safeguard : abort when kafka_safeguard=true
# kafka_deregister : remove kafka / kafka_exporter victoria targets from infra
# kafka : stop & disable kafka and kafka_exporter services
# kafka_retire : retire voter entry & broker registration via a survivor
# kafka_config : stop services; remove config, systemd units, and helper scripts
# kafka_data : stop services; remove data and /etc/kafka state (disable with kafka_rm_data=false)
# kafka_pkg : uninstall kafka-stack packages (enable with kafka_rm_pkg=true)
#--------------------------------------------------------------#
...