--- # ============================================================================= # proxmox_upgrade — node_upgrade.yml # Per-node sequence: backup → drain → upgrade → restore # Called via loop with loop_var: current_node # ============================================================================= - name: "Node {{ current_node }} | Start" ansible.builtin.debug: msg: "━━━ Starting upgrade of node {{ current_node }} ━━━" # ── Step 1: Backup config ───────────────────────────────────────────────────── # Migrated to main.yml to back up all nodes first. # - name: "Node {{ current_node }} | Step 1 — Backup config" # include_role: # name: hypervisor_backup_config # vars: # pve_config_git_commit_message: "[{{ client_id }}] {{ current_node }} pre-upgrade config backup {{ ansible_date_time.date }}" # ── Step 2: Drain ───────────────────────────────────────────────────────────── - name: "Node {{ current_node }} | Step 2 — Drain guests" include_tasks: drain.yml when: cluster_mode == 'cluster' - name: "Node {{ current_node }} | Step 2 — Single node, skipping drain" ansible.builtin.debug: msg: "cluster_mode=single — skipping guest migration" when: cluster_mode == 'single' # ── Step 3: Upgrade ─────────────────────────────────────────────────────────── - name: "Node {{ current_node }} | Step 3 — Upgrade" include_tasks: upgrade.yml # ── Step 4: Restore ─────────────────────────────────────────────────────────── - name: "Node {{ current_node }} | Step 4 — Restore guests" include_tasks: restore.yml when: cluster_mode == 'cluster' - name: "Node {{ current_node }} | Complete" ansible.builtin.debug: msg: "━━━ Node {{ current_node }} upgrade complete ━━━"