From ceae37287ba02e1296eec66ff8e8a7e3cd0e8e64 Mon Sep 17 00:00:00 2001 From: Snarf Date: Mon, 2 Nov 2026 14:16:20 -0500 Subject: [PATCH] feat(ansible): add sequential minor version upgrade playbook for aerodrome control plane --- ansible/playbooks/upgrade_k3s_aerodrome.yml | 61 +++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 ansible/playbooks/upgrade_k3s_aerodrome.yml diff --git a/ansible/playbooks/upgrade_k3s_aerodrome.yml b/ansible/playbooks/upgrade_k3s_aerodrome.yml new file mode 100644 index 0000000..3e4ca11 --- /dev/null +++ b/ansible/playbooks/upgrade_k3s_aerodrome.yml @@ -0,0 +1,61 @@ +--- +- name: Aerodrome K3s Control Plane Sequential Minor Version Upgrade + hosts: k3s_aerodrome_masters + gather_facts: false + serial: 1 + vars: + target_k3s_version: "v1.27.16+k3s1" + + tasks: + - name: Query pre-upgrade K3s version + ansible.builtin.command: k3s --version + register: pre_k3s_ver + changed_when: false + + - name: Display pre-upgrade version + ansible.builtin.debug: + msg: "Upgrading {{ inventory_hostname }} from {{ pre_k3s_ver.stdout_lines[0] }} to {{ target_k3s_version }}" + + - name: Download and execute K3s binary upgrade + ansible.builtin.shell: | + curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION={{ target_k3s_version }} sh - + register: k3s_upgrade_cmd + + - name: Ensure K3s systemd unit is active + ansible.builtin.systemd: + name: k3s + state: started + enabled: true + + - name: Wait for local K3s service to be active + ansible.builtin.command: systemctl is-active k3s + register: k3s_active + until: k3s_active.stdout == "active" + retries: 15 + delay: 5 + changed_when: false + + - name: Wait for node to report Ready in cluster + ansible.builtin.command: kubectl get node {{ inventory_hostname }} -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}' + delegate_to: sninfr2lnxctl01 + register: node_ready + until: node_ready.stdout == "True" + retries: 20 + delay: 6 + changed_when: false + + - name: Query post-upgrade K3s version + ansible.builtin.command: k3s --version + register: post_k3s_ver + changed_when: false + + - name: Verify post-upgrade version matches target + ansible.builtin.assert: + that: + - target_k3s_version in post_k3s_ver.stdout + fail_msg: "Post-upgrade version does not match target {{ target_k3s_version }}" + success_msg: "{{ inventory_hostname }} successfully upgraded to {{ target_k3s_version }}" + + - name: Settle etcd cluster state + ansible.builtin.pause: + seconds: 10