actualizar.yml

# Instala las actualizaciones del sistema en los nodos, DE UNO EN UNO.
# Si un nodo pide reinicio, lo saca del clúster, lo reinicia, espera a que vuelva y
# lo devuelve antes de pasar al siguiente. Si algo falla, para.
#
# Variables: nodos=<grupo o nodo> (por defecto todos), reiniciar=false para no reiniciar.
- name: Actualizar el sistema
  hosts: "{{ nodos | default('all') }}"
  gather_facts: false
  serial: 1
  order: inventory
  any_errors_fatal: true
  tasks:
    - name: Comprobar el clúster
      ansible.builtin.include_tasks: tareas/comprobar_cluster.yml

    - name: Actualizar
      ansible.builtin.include_tasks: tareas/estado.yml
      vars:
        accion: actualizar

    - name: Resultado
      ansible.builtin.debug:
        msg: >-
          {{ 'SIMULACIÓN: se instalarían' if ansible_check_mode else 'Quedan' }}
          {{ estado.seguridad }} de seguridad y {{ estado.normales }} normales ·
          reinicio {{ 'SÍ' if estado.reinicio else 'no (puede pedirlo tras instalar)' if ansible_check_mode else 'no' }}
          {{ ('· ' ~ (estado.paquetes | map(attribute='paquete') | join(', '))) if ansible_check_mode and estado.paquetes else '' }}

    - name: Reiniciar si hace falta
      ansible.builtin.include_tasks: tareas/reiniciar_nodo.yml
      when: estado.reinicio and (reiniciar | default(true) | bool) and not ansible_check_mode