refacto: Partial rewrite to manage nodes

This commit is contained in:
2026-03-17 02:07:45 +01:00
parent 0d467d737d
commit c0e0bc169e
11 changed files with 330 additions and 217 deletions

113
tasks/node_update.yml Normal file
View File

@@ -0,0 +1,113 @@
---
- name: Update apt cache
ansible.builtin.apt:
update_cache: true
become: true
- name: List upgradable packages
ansible.builtin.command:
argv:
- apt
- list
- --upgradable
register: apt_upgradable
changed_when: apt_upgradable.stdout_lines | length > 1
- name: Upgrade tasks
when: apt_upgradable.stdout_lines | length > 1
block:
- name: Enable maintenance node
ansible.builtin.command:
argv:
- ha-manager
- crm-command
- node-maintenance
- enable
- "{{ inventory_hostname_short }}"
become: true
register: proxmox_maintenance_enabled
changed_when: proxmox_maintenance_enabled.rc == 0
- name: Wait for the instances to be migrated
community.proxmox.proxmox_vm_info:
api_host: "{{ proxmox_api_host }}"
api_token_id: "{{ proxmox_api_token_id }}"
api_token_secret: "{{ proxmox_api_token_secret }}"
api_user: "{{ proxmox_api_user }}"
node: "{{ inventory_hostname_short }}"
type: all
validate_certs: "{{ proxmox_api_validate_certs }}"
become: true
register: proxmox_current_instances
retries: 20
delay: 30
until: proxmox_current_instances.proxmox_vms | selectattr('hastate', 'equalto', 'started') | list | length == 0
- name: Run the full-upgrade
ansible.builtin.apt:
upgrade: dist
become: true
- name: Reboot
ansible.builtin.reboot:
become: true
- name: Clean apt things
ansible.builtin.apt:
clean: true
become: true
- name: List installed packages
ansible.builtin.command: # noqa: no-changed-when
argv:
- apt
- list
- --installed
register: apt_list
check_mode: false
- name: Remove old kernels
ansible.builtin.apt:
name: "{{ installed_kernels[:-2] }}"
state: absent
when: installed_kernels | length > 2
become: true
vars:
installed_kernels:
apt_list.stdout_lines |
select('search', '^proxmox-kernel') |
select('search', 'automatic') |
split('/') | first | list
check_mode: true
- name: Disable maintenance node
ansible.builtin.command:
argv:
- ha-manager
- crm-command
- node-maintenance
- disable
- "{{ inventory_hostname_short }}"
become: true
register: proxmox_maintenance_disabled
changed_when: proxmox_maintenance_disabled.rc == 0
- name: Wait for the node to come out of maintenance
ansible.builtin.command: # noqa: no-changed-when
argv:
- ha-manager
- status
become: true
register: proxmox_ha_manager_status
changed_when: >-
proxmox_ha_manager_status.stdout_lines |
select('search', 'lrm ' + inventory_hostname_short) |
regex_search('active', ignorecase=true)
retries: 20
delay: 30
until: >-
not
proxmox_ha_manager_status.stdout_lines |
select('search', 'lrm ' + inventory_hostname_short) |
regex_search('active', ignorecase=true)