64 lines
2.3 KiB
YAML
64 lines
2.3 KiB
YAML
- hosts: all
|
|
user: tincadmin
|
|
become: true
|
|
vars:
|
|
os_also_update_mirror: false # Can either be true or false | To toggle if mirrors should be updated during major upgrade
|
|
os_update_version_codename: "trixie" # Change to switch major release (e.g. bookworm or trixie) | Used for jinja2 Template fill in as it determines the current codename of system where ansible is run on
|
|
do_snapshots: true # Can either be true or false | To toggle if snapshots should be created before os update
|
|
snapshot_name: "AUTO_before_os_update_{{ ansible_date_time.date }}" # Name
|
|
vars_files:
|
|
# Load vault file for sensitive data like Proxmox API tokens
|
|
- ../vault.yml
|
|
tasks:
|
|
- name: Verify if system is Debian
|
|
debug:
|
|
msg: "This playbook is running on a Debian system."
|
|
when: ansible_os_family == "Debian"
|
|
|
|
- name: Stop playbook if system is not Debian
|
|
fail:
|
|
msg: "This playbook only supports Debian."
|
|
when: ansible_os_family != "Debian"
|
|
|
|
- name: Check for available updates
|
|
ansible.builtin.apt:
|
|
update_cache: yes
|
|
cache_valid_time: 0
|
|
register: apt_update
|
|
when: ansible_os_family == "Debian"
|
|
|
|
- name: Check if upgrades are available
|
|
ansible.builtin.command: apt list --upgradable
|
|
register: upgradable_packages
|
|
changed_when: false
|
|
when: ansible_os_family == "Debian"
|
|
|
|
- name: Set fact if updates are needed
|
|
set_fact:
|
|
updates_needed: "{{ upgradable_packages.stdout_lines | length > 1 }}"
|
|
when: ansible_os_family == "Debian"
|
|
|
|
- name: Include Proxmox Info task
|
|
ansible.builtin.include_role:
|
|
name: proxmox-automation
|
|
tasks_from: get-vmid
|
|
when:
|
|
- ansible_os_family == "Debian"
|
|
- do_snapshots | default(false)
|
|
- updates_needed | default(false)
|
|
|
|
- name: Create Snapshot before Modifications
|
|
ansible.builtin.include_role:
|
|
name: proxmox-automation
|
|
tasks_from: create-snapshots
|
|
when:
|
|
- ansible_os_family == "Debian"
|
|
- do_snapshots | default(false)
|
|
- updates_needed | default(false)
|
|
|
|
- name: Include OS update role
|
|
ansible.builtin.include_role:
|
|
name: os-updates
|
|
when:
|
|
- ansible_os_family == "Debian"
|
|
- updates_needed | default(false) |