Browse Source

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.
pull/12026/head
Max Gautier 7 months ago
parent
commit
a8d494fb95
Failed to extract signature
3 changed files with 21 additions and 24 deletions
  1. 5
      tests/cloud_playbooks/roles/packet-ci/tasks/main.yml
  2. 2
      tests/cloud_playbooks/roles/packet-ci/templates/vm.yml.j2
  3. 38
      tests/cloud_playbooks/roles/packet-ci/vars/main.yml

5
tests/cloud_playbooks/roles/packet-ci/tasks/main.yml

@ -3,11 +3,8 @@
include_vars: "../files/{{ ci_job_name }}.yml" include_vars: "../files/{{ ci_job_name }}.yml"
- name: Start vms for CI job - name: Start vms for CI job
vars:
tvars:
kubespray_groups: "{{ item }}"
kubernetes.core.k8s: 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')] }}" loop: "{{ scenarios[mode | d('default')] }}"
- name: Wait for vms to have IP addresses - name: Wait for vms to have IP addresses

2
tests/cloud_playbooks/roles/packet-ci/templates/vm.yml.j2

@ -6,7 +6,7 @@ metadata:
namespace: {{ pod_namespace }} namespace: {{ pod_namespace }}
annotations: annotations:
kubespray.com/ci.template-path: "tests/cloud_playbooks/roles/packet-ci/templates/vm.yml.j2" 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 # This does not use a dns prefix because dots are hard to escape with map(attribute=) in Jinja
labels: labels:
kubevirt.io/os: {{ cloud_image }} kubevirt.io/os: {{ cloud_image }}

38
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 # This is a list of nodes with groups for each scenario/cluster layouts
scenarios: scenarios:
separate: separate:
- ['kube_control_plane']
- ['kube_node']
- ['etcd']
- node_groups: ['kube_control_plane']
- node_groups: ['kube_node']
- node_groups: ['etcd']
ha: 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: default:
- ['kube_control_plane', 'etcd']
- ['kube_node']
- node_groups: ['kube_control_plane', 'etcd']
- node_groups: ['kube_node']
all-in-one: all-in-one:
- ['kube_control_plane', 'etcd', 'kube_node']
- node_groups: ['kube_control_plane', 'etcd', 'kube_node']
ha-recover: 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: 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: 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 # Get pod metadata / CI vars from environment

Loading…
Cancel
Save