comprobar_cluster.yml

# Para el playbook si el clúster no está sano: no se toca nada con un nodo caído.
- name: Todos los nodos Ready y ninguno fuera del clúster (cordon)
  ansible.builtin.shell: >-
    set -o pipefail;
    kubectl --kubeconfig {{ kubeconfig }} get nodes --no-headers | awk '$2 != "Ready" {print $1 " (" $2 ")"}'
  args:
    executable: /bin/bash
  register: malos
  changed_when: false
  failed_when: malos.rc != 0 or malos.stdout != ''
  delegate_to: localhost
  run_once: true
  check_mode: false  # solo lee: también en simulación

- name: La API responde por la VIP
  ansible.builtin.command: kubectl --kubeconfig {{ kubeconfig }} get --raw /readyz
  changed_when: false
  delegate_to: localhost
  run_once: true
  check_mode: false  # solo lee: también en simulación