Skip to content

Commit

Permalink
CI: use kubevirt.core dynamic inventory
Browse files Browse the repository at this point in the history
This allows a single source of truth for the virtual machines in a
kubevirt ci-run.

`etcd_member_name` should be correctly handled in kubespray-defaults for
testing the recover cases.
  • Loading branch information
VannTen committed Oct 3, 2024
1 parent e2295ef commit 81ac78a
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 132 deletions.
2 changes: 1 addition & 1 deletion pipeline.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,4 @@ RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1 \
&& vagrant plugin install vagrant-libvirt \
# Install Kubernetes collections
&& pip install --no-compile --no-cache-dir kubernetes \
&& ansible-galaxy collection install kubernetes.core
&& ansible-galaxy collection install kubernetes.core kubevirt.core
31 changes: 8 additions & 23 deletions tests/cloud_playbooks/roles/packet-ci/tasks/create-vms.yml
Original file line number Diff line number Diff line change
@@ -1,24 +1,11 @@
---
- name: "Create temp dir /tmp/{{ test_name }} for CI files"
file:
path: "/tmp/{{ test_name }}"
state: directory
mode: "0755"

- name: Template vm files for CI job
set_fact:
vms_files: "{{ vms_files + [lookup('ansible.builtin.template', 'vm.yml.j2') | from_yaml] }}"
vars:
vms_files: []
loop: "{{ range(1, vm_count | int + 1, 1) | list }}"
loop_control:
index_var: vm_id

- name: Start vms for CI job
vars:
tvars:
kubespray_groups: "{{ item }}"
kubernetes.core.k8s:
definition: "{{ item }}"
changed_when: false
loop: "{{ vms_files }}"
definition: "{{ lookup('template', 'vm.yml.j2', template_vars=tvars) }}"
loop: "{{ scenarios[mode | d('default')] }}"

- name: Wait for vms to have ipaddress assigned
kubernetes.core.k8s_info:
Expand All @@ -32,10 +19,8 @@
type: Ready
wait_timeout: 300

- name: "Create inventory for CI test in file /tmp/{{ test_name }}/inventory"
- name: "Create inventory for CI tests"
template:
src: "inventory.j2"
dest: "{{ inventory_path }}"
src: "inv.kubevirt.yml.j2"
dest: "{{ inventory_path }}/inv.kubevirt.yml"
mode: "0644"
vars:
vms: "{{ vm_ips }}"
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
plugin: kubevirt.core.kubevirt
namespaces:
- {{ pod_namespace }}
label_selector: ci_job_id={{ ci_job_id }}
create_groups: true
compose:
ci_groups: |
group_names |
select('ansible.builtin.match', 'label_kubespray_io*') |
map('regex_replace', 'label_kubespray_io_(.*)_true', '\1')
host_format: "{name}"
keyed_groups:
- key: ci_groups
prefix: ""
separator: ""
98 changes: 0 additions & 98 deletions tests/cloud_playbooks/roles/packet-ci/templates/inventory.j2

This file was deleted.

3 changes: 3 additions & 0 deletions tests/cloud_playbooks/roles/packet-ci/templates/vm.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ metadata:
kubevirt.io/os: {{ cloud_image }}
ci_job_id: "{{ ci_job_id }}"
ci_job_name: "{{ ci_job_name }}"
{% for group in kubespray_groups -%}
kubespray.io/{{ group }}: "true"
{% endfor -%}
# leverage the Kubernetes GC for resources cleanup
ownerReferences:
- apiVersion: v1
Expand Down
38 changes: 28 additions & 10 deletions tests/cloud_playbooks/roles/packet-ci/vars/main.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,32 @@
---
_vm_count_dict:
separate: 3
ha: 3
ha-recover: 3
ha-recover-noquorum: 3
all-in-one: 1
node-etcd-client: 4
default: 2

vm_count: "{{ _vm_count_dict[mode | d('default')] }}"
# This is a list of nodes with groups for each scenario/cluster layouts
scenarios:
separate:
- ['kube_control_plane']
- ['kube_node']
- ['etcd']
ha:
- ['kube_control_plane', 'etcd']
- ['kube_control_plane', 'etcd']
- ['kube_node', 'etcd']
default:
- ['kube_control_plane', 'etcd']
- ['kube_node']
all-in-one:
- ['kube_control_plane', 'etcd', 'node']
ha-recover:
- ['kube_control_plane', 'etcd']
- ['kube_control_plane', 'etcd', 'broken_kube_control_plane', 'broken_etcd']
- ['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-etcd-client:
- ['kube-node', 'kube_control_plane', 'etcd']
- ['kube-node', 'etcd']
- ['kube_node', 'etcd']
- ['kube_node']

# Get pod metadata / CI vars from environment

Expand Down

0 comments on commit 81ac78a

Please sign in to comment.