66 lines
2.5 KiB
YAML
66 lines
2.5 KiB
YAML
---
|
|
- name: Erstelle VMware Snapshot vor Upgrade
|
|
community.vmware.vmware_guest_snapshot:
|
|
hostname: "{{ vcenter_hostname }}"
|
|
username: "{{ vcenter_user }}"
|
|
password: "{{ vcenter_password }}"
|
|
validate_certs: no
|
|
datacenter: "{{ vcenter_datacenter }}"
|
|
folder: "{{ vcenter_folder | default('/') }}"
|
|
name: "{{ inventory_hostname }}"
|
|
state: present
|
|
snapshot_name: "pre-upgrade-{{ inventory_hostname }}-{{ ansible_date_time.iso8601_basic }}"
|
|
description: "Snapshot vor Auto-Upgrade"
|
|
memory: yes
|
|
quiesce: yes
|
|
delegate_to: localhost
|
|
register: snapshot_result
|
|
failed_when: snapshot_result.failed is defined and snapshot_result.failed
|
|
retries: 3
|
|
delay: 10
|
|
|
|
- name: Logge Fehler bei Snapshot-Erstellung
|
|
ansible.builtin.copy:
|
|
content: "Snapshot-Fehler: {{ snapshot_result.msg | default('Unbekannter Fehler') }}"
|
|
dest: "{{ log_dir }}/snapshot_error_{{ inventory_hostname }}.log"
|
|
when: snapshot_result is failed
|
|
|
|
- name: Setze Rollback-Flag, falls Snapshot-Erstellung fehlschlägt
|
|
ansible.builtin.set_fact:
|
|
rollback: true
|
|
when: snapshot_result is failed
|
|
|
|
- name: Breche Playbook ab, wenn Snapshot-Erstellung fehlschlägt
|
|
ansible.builtin.fail:
|
|
msg: "Snapshot-Erstellung fehlgeschlagen, Upgrade wird abgebrochen! Siehe Log: {{ log_dir }}/snapshot_error_{{ inventory_hostname }}.log"
|
|
when: snapshot_result is failed
|
|
|
|
- name: "Rollback: Setze VM auf Snapshot zurück (nur bei Fehler und wenn aktiviert)"
|
|
community.vmware.vmware_guest_snapshot:
|
|
hostname: "{{ vcenter_hostname }}"
|
|
username: "{{ vcenter_user }}"
|
|
password: "{{ vcenter_password }}"
|
|
validate_certs: no
|
|
datacenter: "{{ vcenter_datacenter }}"
|
|
folder: "{{ vcenter_folder | default('/') }}"
|
|
name: "{{ inventory_hostname }}"
|
|
state: revert
|
|
snapshot_name: "pre-upgrade-{{ inventory_hostname }}-{{ ansible_date_time.iso8601_basic }}"
|
|
when: rollback is defined and rollback
|
|
delegate_to: localhost
|
|
|
|
- name: Lösche VMware Snapshot nach erfolgreichem Patchlauf (optional)
|
|
community.vmware.vmware_guest_snapshot:
|
|
hostname: "{{ vcenter_hostname }}"
|
|
username: "{{ vcenter_user }}"
|
|
password: "{{ vcenter_password }}"
|
|
validate_certs: no
|
|
datacenter: "{{ vcenter_datacenter }}"
|
|
folder: "{{ vcenter_folder | default('/') }}"
|
|
name: "{{ inventory_hostname }}"
|
|
state: absent
|
|
snapshot_name: "pre-upgrade-{{ inventory_hostname }}-{{ ansible_date_time.iso8601_basic }}"
|
|
delegate_to: localhost
|
|
when: (upgrade_result is defined and upgrade_result is not failed) and (snapshot_cleanup | default(true))
|
|
ignore_errors: true
|