From a8d494fb959ed013203532a5d094d840d8a79afe Mon Sep 17 00:00:00 2001 From: Max Gautier Date: Thu, 6 Mar 2025 17:34:47 +0100 Subject: [PATCH] CI/kubevirt: allow every vars in kubevirt template to be overriden The current templating of kubevirt VirtualMachine relies on global ansible variables, except for the group the nodes are meant to be in. In order to have more flexibility (in particular, mixed OS cluster for instances), expect now an abitrary dict to be passed to the template ; this allows to embed directly in the nodes definition any variable used by the template. --- .../roles/packet-ci/tasks/main.yml | 5 +-- .../roles/packet-ci/templates/vm.yml.j2 | 2 +- .../roles/packet-ci/vars/main.yml | 38 +++++++++---------- 3 files changed, 21 insertions(+), 24 deletions(-) diff --git a/tests/cloud_playbooks/roles/packet-ci/tasks/main.yml b/tests/cloud_playbooks/roles/packet-ci/tasks/main.yml index 26658580b..2c018b1e7 100644 --- a/tests/cloud_playbooks/roles/packet-ci/tasks/main.yml +++ b/tests/cloud_playbooks/roles/packet-ci/tasks/main.yml @@ -3,11 +3,8 @@ include_vars: "../files/{{ ci_job_name }}.yml" - name: Start vms for CI job - vars: - tvars: - kubespray_groups: "{{ item }}" kubernetes.core.k8s: - definition: "{{ lookup('template', 'vm.yml.j2', template_vars=tvars) }}" + definition: "{{ lookup('template', 'vm.yml.j2', template_vars=item) }}" loop: "{{ scenarios[mode | d('default')] }}" - name: Wait for vms to have IP addresses diff --git a/tests/cloud_playbooks/roles/packet-ci/templates/vm.yml.j2 b/tests/cloud_playbooks/roles/packet-ci/templates/vm.yml.j2 index 920944963..8b5367dd9 100644 --- a/tests/cloud_playbooks/roles/packet-ci/templates/vm.yml.j2 +++ b/tests/cloud_playbooks/roles/packet-ci/templates/vm.yml.j2 @@ -6,7 +6,7 @@ metadata: namespace: {{ pod_namespace }} annotations: kubespray.com/ci.template-path: "tests/cloud_playbooks/roles/packet-ci/templates/vm.yml.j2" - ansible_groups: "{{ kubespray_groups | join(',') }}" + ansible_groups: "{{ node_groups | join(',') }}" # This does not use a dns prefix because dots are hard to escape with map(attribute=) in Jinja labels: kubevirt.io/os: {{ cloud_image }} diff --git a/tests/cloud_playbooks/roles/packet-ci/vars/main.yml b/tests/cloud_playbooks/roles/packet-ci/vars/main.yml index 8eb9c7dbe..6a34bb1a8 100644 --- a/tests/cloud_playbooks/roles/packet-ci/vars/main.yml +++ b/tests/cloud_playbooks/roles/packet-ci/vars/main.yml @@ -2,31 +2,31 @@ # This is a list of nodes with groups for each scenario/cluster layouts scenarios: separate: - - ['kube_control_plane'] - - ['kube_node'] - - ['etcd'] + - node_groups: ['kube_control_plane'] + - node_groups: ['kube_node'] + - node_groups: ['etcd'] ha: - - ['kube_control_plane', 'etcd'] - - ['kube_control_plane', 'etcd'] - - ['kube_node', 'etcd'] + - node_groups: ['kube_control_plane', 'etcd'] + - node_groups: ['kube_control_plane', 'etcd'] + - node_groups: ['kube_node', 'etcd'] default: - - ['kube_control_plane', 'etcd'] - - ['kube_node'] + - node_groups: ['kube_control_plane', 'etcd'] + - node_groups: ['kube_node'] all-in-one: - - ['kube_control_plane', 'etcd', 'kube_node'] + - node_groups: ['kube_control_plane', 'etcd', 'kube_node'] ha-recover: - - ['kube_control_plane', 'etcd'] - - ['kube_control_plane', 'etcd', 'broken_kube_control_plane', 'broken_etcd'] - - ['kube_node', 'etcd'] + - node_groups: ['kube_control_plane', 'etcd'] + - node_groups: ['kube_control_plane', 'etcd', 'broken_kube_control_plane', 'broken_etcd'] + - node_groups: ['kube_node', 'etcd'] ha-recover-noquorum: - - ['kube_control_plane', 'etcd', 'broken_kube_control_plane', 'broken_etcd'] - - ['kube_control_plane', 'etcd', 'broken_kube_control_plane', 'broken_etcd'] - - ['kube_node', 'etcd'] + - node_groups: ['kube_control_plane', 'etcd', 'broken_kube_control_plane', 'broken_etcd'] + - node_groups: ['kube_control_plane', 'etcd', 'broken_kube_control_plane', 'broken_etcd'] + - node_groups: ['kube_node', 'etcd'] node-etcd-client: - - ['kube_node', 'kube_control_plane', 'etcd'] - - ['kube_node', 'etcd'] - - ['kube_node', 'etcd'] - - ['kube_node'] + - node_groups: ['kube_node', 'kube_control_plane', 'etcd'] + - node_groups: ['kube_node', 'etcd'] + - node_groups: ['kube_node', 'etcd'] + - node_groups: ['kube_node'] # Get pod metadata / CI vars from environment