diff --git a/ansible/proxmox/update_proxmox.yml b/ansible/proxmox/update_proxmox.yml index c6b77f0..f3f1265 100644 --- a/ansible/proxmox/update_proxmox.yml +++ b/ansible/proxmox/update_proxmox.yml @@ -55,68 +55,77 @@ - block: - - name: Enable maintenance mode - ansible.builtin.command: > - ha-manager crm-command node-maintenance enable {{ inventory_hostname_short }} - - - name: Wait for LXCs to leave node - ansible.builtin.shell: | - pct list | awk 'NR>1 && $2=="running" {count++} END {print count+0}' - register: lxc_count - changed_when: false - until: lxc_count.stdout | int == 0 - retries: 60 - delay: 15 - - - name: Wait for VMs to leave node - ansible.builtin.shell: | - qm list | awk 'NR>1 && $3=="running" {count++} END {print count+0}' - register: vm_count - changed_when: false - until: vm_count.stdout | int == 0 - retries: 60 - delay: 15 - - - name: Update packages + - name: Refresh repositories ansible.builtin.apt: update_cache: true - upgrade: full - autoremove: true - autoclean: true - register: update_packages - - name: Get version after upgrade - ansible.builtin.shell: pveversion | awk -F'/' '{print $2}' - register: pve_new_version - delegate_to: "{{ groups['nodes'][0] }}" - changed_when: false + - name: Check if upgrades are available + ansible.builtin.apt: + upgrade: dist + check_mode: true + register: apt_check - - when: update_packages.changed - block: + - name: Proceed if updates are available + when: not apt_check.changed + block: - - name: Disable Ceph rebalancing - ansible.builtin.command: ceph osd set noout + - name: Enable maintenance mode + ansible.builtin.command: > + ha-manager crm-command node-maintenance enable {{ inventory_hostname_short }} - - name: Reboot node - ansible.builtin.reboot: - reboot_timeout: 900 - post_reboot_delay: 30 - - - name: Enable Ceph rebalancing - ansible.builtin.command: ceph osd unset noout + - name: Wait for LXCs to leave node + ansible.builtin.shell: | + pct list | awk 'NR>1 && $2=="running" {count++} END {print count+0}' + register: lxc_count + changed_when: false + until: lxc_count.stdout | int == 0 + retries: 60 + delay: 15 - - name: Disable maintenance mode - ansible.builtin.command: > - ha-manager crm-command node-maintenance disable {{ inventory_hostname_short }} + - name: Wait for VMs to leave node + ansible.builtin.shell: | + qm list | awk 'NR>1 && $3=="running" {count++} END {print count+0}' + register: vm_count + changed_when: false + until: vm_count.stdout | int == 0 + retries: 60 + delay: 15 - - name: Wait for Ceph to be healthy - ansible.builtin.command: ceph health - register: ceph_status - changed_when: false - until: "'HEALTH_OK' in ceph_status.stdout" - retries: 60 - delay: 15 - delegate_to: "{{ groups['nodes'][0] }}" + - name: Update packages + ansible.builtin.apt: + upgrade: full + autoremove: true + autoclean: true + + - name: Get version after upgrade + ansible.builtin.shell: pveversion | awk -F'/' '{print $2}' + register: pve_new_version + delegate_to: "{{ groups['nodes'][0] }}" + changed_when: false + + - name: Disable Ceph rebalancing + ansible.builtin.command: ceph osd set noout + + - name: Reboot node + ansible.builtin.reboot: + reboot_timeout: 900 + post_reboot_delay: 30 + + - name: Enable Ceph rebalancing + ansible.builtin.command: ceph osd unset noout + + - name: Disable maintenance mode + ansible.builtin.command: > + ha-manager crm-command node-maintenance disable {{ inventory_hostname_short }} + + - name: Wait for Ceph to be healthy + ansible.builtin.command: ceph health + register: ceph_status + changed_when: false + until: "'HEALTH_OK' in ceph_status.stdout" + retries: 60 + delay: 15 + delegate_to: "{{ groups['nodes'][0] }}" rescue: @@ -153,7 +162,6 @@ password: "{{ lookup('env', 'NTFY_PASSWORD') }}" force_basic_auth: true body: | - Proxmox cluster update completed successfully. {% if hostvars[groups['nodes'][0]].pve_current_version.stdout == hostvars[groups['nodes'][0]].pve_new_version.stdout %} Version unchanged ({{ hostvars[groups['nodes'][0]].pve_new_version.stdout }}) {% else %}