fix: loop_var under loop_control in drain.yml and restore.yml
This commit is contained in:
@@ -28,4 +28,3 @@ apt_autoremove: true
|
|||||||
migrate_exclude_tags:
|
migrate_exclude_tags:
|
||||||
- nomigrate
|
- nomigrate
|
||||||
- pinned
|
- pinned
|
||||||
|
|
||||||
|
|||||||
@@ -136,6 +136,7 @@
|
|||||||
when: not migration_bulk | bool
|
when: not migration_bulk | bool
|
||||||
include_tasks: migrate_guest.yml
|
include_tasks: migrate_guest.yml
|
||||||
loop: "{{ migration_plan | rejectattr('needs_fallback') | list + migration_plan | selectattr('needs_fallback') | rejectattr('needs_fallback' if live_migrate_fallback == 'skip' else 'nonexistent') | list }}"
|
loop: "{{ migration_plan | rejectattr('needs_fallback') | list + migration_plan | selectattr('needs_fallback') | rejectattr('needs_fallback' if live_migrate_fallback == 'skip' else 'nonexistent') | list }}"
|
||||||
|
loop_control:
|
||||||
loop_var: guest
|
loop_var: guest
|
||||||
|
|
||||||
- name: Drain | Migrate guests (bulk — fire all at once)
|
- name: Drain | Migrate guests (bulk — fire all at once)
|
||||||
@@ -154,6 +155,7 @@
|
|||||||
validate_certs: false
|
validate_certs: false
|
||||||
register: bulk_migration_tasks
|
register: bulk_migration_tasks
|
||||||
loop: "{{ migration_plan | rejectattr('needs_fallback') | list }}"
|
loop: "{{ migration_plan | rejectattr('needs_fallback') | list }}"
|
||||||
|
loop_control:
|
||||||
loop_var: guest
|
loop_var: guest
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
|
|
||||||
@@ -181,6 +183,6 @@
|
|||||||
- name: Drain | Bulk | Handle fallback guests sequentially
|
- name: Drain | Bulk | Handle fallback guests sequentially
|
||||||
include_tasks: migrate_guest.yml
|
include_tasks: migrate_guest.yml
|
||||||
loop: "{{ migration_plan | selectattr('needs_fallback') | list }}"
|
loop: "{{ migration_plan | selectattr('needs_fallback') | list }}"
|
||||||
|
loop_control:
|
||||||
loop_var: guest
|
loop_var: guest
|
||||||
when: live_migrate_fallback != 'skip'
|
when: live_migrate_fallback != 'skip'
|
||||||
|
|
||||||
|
|||||||
@@ -114,4 +114,3 @@
|
|||||||
live migrated to {{ migration_targets | first }}
|
live migrated to {{ migration_targets | first }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
|
|
||||||
|
|||||||
@@ -38,4 +38,3 @@
|
|||||||
- name: "Node {{ current_node }} | Complete"
|
- name: "Node {{ current_node }} | Complete"
|
||||||
ansible.builtin.debug:
|
ansible.builtin.debug:
|
||||||
msg: "━━━ Node {{ current_node }} upgrade complete ━━━"
|
msg: "━━━ Node {{ current_node }} upgrade complete ━━━"
|
||||||
|
|
||||||
|
|||||||
@@ -73,4 +73,3 @@
|
|||||||
msg: "Cluster health check passed — all nodes online, quorum OK{{ ', CEPH checked' if ceph_enabled else '' }}"
|
msg: "Cluster health check passed — all nodes online, quorum OK{{ ', CEPH checked' if ceph_enabled else '' }}"
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
run_once: true
|
run_once: true
|
||||||
|
|
||||||
|
|||||||
42
roles/proxmox_upgrade/tasks/proxmox_upgrade.yml
Normal file
42
roles/proxmox_upgrade/tasks/proxmox_upgrade.yml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
---
|
||||||
|
# =============================================================================
|
||||||
|
# proxmox_upgrade.yml
|
||||||
|
# =============================================================================
|
||||||
|
# Rolling Proxmox cluster upgrade playbook.
|
||||||
|
# Runs on the first node in upgrade_order — all other nodes are handled
|
||||||
|
# via API calls and delegate_to from within the role.
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# ansible-playbook playbooks/proxmox_upgrade.yml \
|
||||||
|
# -i inventories/client_local_eng/hypervisor_hosts.yml
|
||||||
|
#
|
||||||
|
# Override migration behaviour:
|
||||||
|
# -e migration_bulk=true
|
||||||
|
# -e live_migrate_fallback=skip
|
||||||
|
# -e migration_restore=true
|
||||||
|
#
|
||||||
|
# Dry run (check mode — no changes):
|
||||||
|
# --check
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
- name: Proxmox Rolling Upgrade
|
||||||
|
hosts: proxmox_cluster
|
||||||
|
gather_facts: true
|
||||||
|
serial: 1
|
||||||
|
run_once: true
|
||||||
|
|
||||||
|
pre_tasks:
|
||||||
|
- name: Confirm upgrade_order is defined
|
||||||
|
ansible.builtin.fail:
|
||||||
|
msg: "upgrade_order must be defined in hypervisor_hosts.yml"
|
||||||
|
when: upgrade_order is not defined or upgrade_order | length == 0
|
||||||
|
|
||||||
|
- name: Log upgrade targets
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: >-
|
||||||
|
Proxmox upgrade starting for {{ client_name }} ({{ client_id }})
|
||||||
|
Nodes: {{ upgrade_order | join(', ') }}
|
||||||
|
API: https://{{ api_host }}:{{ api_port }}
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- proxmox_upgrade
|
||||||
@@ -33,6 +33,7 @@
|
|||||||
validate_certs: false
|
validate_certs: false
|
||||||
register: restore_task
|
register: restore_task
|
||||||
loop: "{{ migration_plan | rejectattr('needs_fallback') | list }}"
|
loop: "{{ migration_plan | rejectattr('needs_fallback') | list }}"
|
||||||
|
loop_control:
|
||||||
loop_var: guest
|
loop_var: guest
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
|
|
||||||
@@ -60,4 +61,3 @@
|
|||||||
- name: Restore | Complete
|
- name: Restore | Complete
|
||||||
ansible.builtin.debug:
|
ansible.builtin.debug:
|
||||||
msg: "All guests restored to {{ current_node }}"
|
msg: "All guests restored to {{ current_node }}"
|
||||||
|
|
||||||
|
|||||||
@@ -92,4 +92,3 @@
|
|||||||
Node {{ current_node }} upgrade complete —
|
Node {{ current_node }} upgrade complete —
|
||||||
{{ apt_upgrade_result.stdout_lines | select('match', '.*upgraded.*') | list | first | default('packages updated') }}
|
{{ apt_upgrade_result.stdout_lines | select('match', '.*upgraded.*') | list | first | default('packages updated') }}
|
||||||
{{ '— rebooted' if reboot_required.stat.exists else '— no reboot needed' }}
|
{{ '— rebooted' if reboot_required.stat.exists else '— no reboot needed' }}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user