From 6eb920ae0dcb1104656dcdde5d2a988438f9c62d Mon Sep 17 00:00:00 2001 From: mrwho Date: Tue, 21 Jul 2026 12:05:39 +0300 Subject: [PATCH] feat(longhorn): update API versions to v1beta2 and add python3.14 venv support - Update Longhorn Node API versions from v1beta1 to v1beta2 in disk management tasks - Add venv_path configuration and set ansible_python_interpreter to use virtual environment - Introduce python3.14-venv.yml task and python314_venv role for Python virtual environment setup --- inventory/prod/group_vars/all.yml | 1 + roles/longhorn/defaults/main.yml | 2 + roles/longhorn/tasks/disks.yml | 14 +++---- roles/longhorn_prereqs/tasks/main.yml | 3 ++ .../tasks/python3.14-venv.yml | 39 +++++++++++++++++++ roles/python314_venv/tasks/main.yml | 24 ++++++++++++ 6 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 roles/longhorn_prereqs/tasks/python3.14-venv.yml create mode 100644 roles/python314_venv/tasks/main.yml diff --git a/inventory/prod/group_vars/all.yml b/inventory/prod/group_vars/all.yml index 834f67b..fc14bb7 100644 --- a/inventory/prod/group_vars/all.yml +++ b/inventory/prod/group_vars/all.yml @@ -5,3 +5,4 @@ ansible_become: true #ansible_become_method: sudo #ansible_become_pass: "{{ lookup('env', 'ANSIBLE_BECOME_PASS') | default(omit) }}" k8s_version: "1.36" +venv_path: "/home/{{ ansible_user }}/.venv" diff --git a/roles/longhorn/defaults/main.yml b/roles/longhorn/defaults/main.yml index e802fda..273f0c9 100644 --- a/roles/longhorn/defaults/main.yml +++ b/roles/longhorn/defaults/main.yml @@ -1,4 +1,6 @@ --- +ansible_python_interpreter: "{{ venv_path }}/bin/python" + longhorn_chart_version: "1.12.0" longhorn_namespace: longhorn-system diff --git a/roles/longhorn/tasks/disks.yml b/roles/longhorn/tasks/disks.yml index d4a78dc..c11995c 100644 --- a/roles/longhorn/tasks/disks.yml +++ b/roles/longhorn/tasks/disks.yml @@ -40,7 +40,7 @@ - name: Disks | Register dedicated disk on Longhorn node kubernetes.core.k8s_json_patch: - api_version: longhorn.io/v1beta1 + api_version: longhorn.io/v1beta2 kind: Node namespace: "{{ longhorn_namespace }}" name: "{{ item.node }}" @@ -65,7 +65,7 @@ - name: Disks | Get current disk spec for each worker node kubernetes.core.k8s_info: - api_version: longhorn.io/v1beta1 + api_version: longhorn.io/v1beta2 kind: Node namespace: "{{ longhorn_namespace }}" name: "{{ item }}" @@ -78,7 +78,7 @@ - name: Disks | Disable auto-created default disk (required before removal) kubernetes.core.k8s_json_patch: - api_version: longhorn.io/v1beta1 + api_version: longhorn.io/v1beta2 kind: Node namespace: "{{ longhorn_namespace }}" name: "{{ item.item }}" @@ -101,7 +101,7 @@ - name: Disks | Remove auto-created default disk kubernetes.core.k8s_json_patch: - api_version: longhorn.io/v1beta1 + api_version: longhorn.io/v1beta2 kind: Node namespace: "{{ longhorn_namespace }}" name: "{{ item.item }}" @@ -124,7 +124,7 @@ - name: Disks | Get current disk spec for control_plane nodes kubernetes.core.k8s_info: - api_version: longhorn.io/v1beta1 + api_version: longhorn.io/v1beta2 kind: Node namespace: "{{ longhorn_namespace }}" name: "{{ item }}" @@ -138,7 +138,7 @@ - name: Disks | Disable auto-created default disk on control_plane nodes kubernetes.core.k8s_json_patch: - api_version: longhorn.io/v1beta1 + api_version: longhorn.io/v1beta2 kind: Node namespace: "{{ longhorn_namespace }}" name: "{{ item.item }}" @@ -161,7 +161,7 @@ - name: Disks | Remove auto-created default disk from control_plane nodes kubernetes.core.k8s_json_patch: - api_version: longhorn.io/v1beta1 + api_version: longhorn.io/v1beta2 kind: Node namespace: "{{ longhorn_namespace }}" name: "{{ item.item }}" diff --git a/roles/longhorn_prereqs/tasks/main.yml b/roles/longhorn_prereqs/tasks/main.yml index f6ef942..b2b7ca8 100644 --- a/roles/longhorn_prereqs/tasks/main.yml +++ b/roles/longhorn_prereqs/tasks/main.yml @@ -11,6 +11,9 @@ - name: SELinux patch ansible.builtin.include_tasks: selinux.yml +- name: Install python3.14 Virtual Environment + ansible.builtin.include_tasks: python3.14-venv.yml + - name: Disks ansible.builtin.include_tasks: disks.yml when: longhorn_disks | default([]) | length > 0 diff --git a/roles/longhorn_prereqs/tasks/python3.14-venv.yml b/roles/longhorn_prereqs/tasks/python3.14-venv.yml new file mode 100644 index 0000000..fa2f8d5 --- /dev/null +++ b/roles/longhorn_prereqs/tasks/python3.14-venv.yml @@ -0,0 +1,39 @@ +--- +- name: Install Python 3.14 and pip + ansible.builtin.dnf: + name: + - python3.14 + - python3.14-pip + state: present + +- name: Verify Python 3.14 installation + ansible.builtin.command: python3.14 --version + register: _python_version + changed_when: false + +- name: Create virtual environment + ansible.builtin.command: python3.14 -m venv {{ venv_path }} + args: + creates: "{{ venv_path }}/bin/activate" + when: venv_path is defined + +- name: Upgrade pip in virtual environment + ansible.builtin.pip: + name: pip + state: latest + executable: "{{ venv_path }}/bin/pip" + when: venv_path is defined + +- name: Install oauthlib in virtual environment + ansible.builtin.pip: + name: oauthlib + state: latest + executable: "{{ venv_path }}/bin/pip" + when: venv_path is defined + +- name: Install kubernetes in virtual environment + ansible.builtin.pip: + name: kubernetes + state: latest + executable: "{{ venv_path }}/bin/pip" + when: venv_path is defined diff --git a/roles/python314_venv/tasks/main.yml b/roles/python314_venv/tasks/main.yml new file mode 100644 index 0000000..b92ab60 --- /dev/null +++ b/roles/python314_venv/tasks/main.yml @@ -0,0 +1,24 @@ +--- +- name: Install Python 3.14 and pip + ansible.builtin.dnf: + name: + - python3.14 + - python3.14-pip + state: present + +- name: Verify Python 3.14 installation + ansible.builtin.command: python3.14 --version + register: _python_version + changed_when: false + +- name: Create virtual environment + ansible.builtin.command: python3.14 -m venv {{ venv_path }} + args: + creates: "{{ venv_path }}/bin/activate" + when: venv_path is defined + +- name: Upgrade pip in virtual environment + ansible.builtin.pip: + executable: "{{ venv_path }}/bin/pip" + upgrade: true + when: venv_path is defined