diff --git a/tests/cloud_playbooks/roles/packet-ci/tasks/create-vms.yml b/tests/cloud_playbooks/roles/packet-ci/tasks/create-vms.yml
deleted file mode 100644
index beed40c454097c07fa12c47aa8398cb34eb03285..0000000000000000000000000000000000000000
--- a/tests/cloud_playbooks/roles/packet-ci/tasks/create-vms.yml
+++ /dev/null
@@ -1,49 +0,0 @@
----
-- name: Start vms for CI job
-  vars:
-    # Workaround for compatibility when testing upgrades with old == before e9d406ed088d4291ef1d9018c170a4deed2bf928
-    # TODO: drop after 2.27.0
-    legacy_groups: "{{ (['kube_control_plane', 'kube_node', 'calico_rr'] | intersect(item) | length > 0) | ternary(['k8s_cluster'], []) }}"
-    tvars:
-      kubespray_groups: "{{ item + legacy_groups }}"
-  kubernetes.core.k8s:
-    definition: "{{ lookup('template', 'vm.yml.j2', template_vars=tvars) }}"
-  loop: "{{ scenarios[mode | d('default')] }}"
-
-- name: Wait for vms to have IP addresses
-  kubernetes.core.k8s_info:
-    api_version: kubevirt.io/v1
-    kind: VirtualMachineInstance
-    label_selectors:
-      - "ci_job_id={{ ci_job_id }}"
-    namespace: "{{ pod_namespace }}"
-  register: vmis
-  until: vmis.resources
-          | map(attribute='status.interfaces.0')
-          | rejectattr('ipAddress', 'defined') == []
-  retries: 30
-  delay: 10
-
-- name: Massage VirtualMachineInstance data into an Ansible inventory structure
-  vars:
-    ips: "{{ vmis.resources | map(attribute='status.interfaces.0.ipAddress') }}"
-    names: "{{ vmis.resources | map(attribute='metadata.name') }}"
-    _groups: "{{ vmis.resources | map(attribute='metadata.annotations.ansible_groups') | map('split', ',') }}"
-    hosts: "{{ ips | zip(_groups, names)
-                | map('zip', ['ansible_host', 'ansible_groups', 'k8s_vmi_name'])
-                | map('map', 'reverse') | map('community.general.dict') }}"
-  loop: "{{ hosts | map(attribute='ansible_groups') | flatten | unique }}"
-  set_fact:
-    ci_inventory: "{{ ci_inventory|d({}) | combine({
-                    item: {
-                      'hosts': hosts | selectattr('ansible_groups', 'contains', item)
-                                     | rekey_on_member('k8s_vmi_name')
-                      }
-                    })
-                  }}"
-
-- name: Create inventory for CI tests
-  copy:
-    content: "{{ ci_inventory | to_yaml }}"
-    dest: "{{ inventory_path }}/ci_inventory.yml"
-    mode: "0644"
diff --git a/tests/cloud_playbooks/roles/packet-ci/tasks/main.yml b/tests/cloud_playbooks/roles/packet-ci/tasks/main.yml
index 3ab879742d9babf51f0615f0ab2ac1fba17a7f2e..de6e48821ec1fbe0b4257d222e91e2b7c290932f 100644
--- a/tests/cloud_playbooks/roles/packet-ci/tasks/main.yml
+++ b/tests/cloud_playbooks/roles/packet-ci/tasks/main.yml
@@ -1,6 +1,52 @@
 ---
-
-- name: "Include custom vars for ci job: {{ ci_job_name }}"
+- name: Include custom vars for ci job
   include_vars: "../files/{{ ci_job_name }}.yml"
-- name: Create VMs
-  import_tasks: create-vms.yml
+
+- name: Start vms for CI job
+  vars:
+    # Workaround for compatibility when testing upgrades with old == before e9d406ed088d4291ef1d9018c170a4deed2bf928
+    # TODO: drop after 2.27.0
+    legacy_groups: "{{ (['kube_control_plane', 'kube_node', 'calico_rr'] | intersect(item) | length > 0) | ternary(['k8s_cluster'], []) }}"
+    tvars:
+      kubespray_groups: "{{ item + legacy_groups }}"
+  kubernetes.core.k8s:
+    definition: "{{ lookup('template', 'vm.yml.j2', template_vars=tvars) }}"
+  loop: "{{ scenarios[mode | d('default')] }}"
+
+- name: Wait for vms to have IP addresses
+  kubernetes.core.k8s_info:
+    api_version: kubevirt.io/v1
+    kind: VirtualMachineInstance
+    label_selectors:
+      - "ci_job_id={{ ci_job_id }}"
+    namespace: "{{ pod_namespace }}"
+  register: vmis
+  until: vmis.resources
+          | map(attribute='status.interfaces.0')
+          | rejectattr('ipAddress', 'defined') == []
+  retries: 30
+  delay: 10
+
+- name: Massage VirtualMachineInstance data into an Ansible inventory structure
+  vars:
+    ips: "{{ vmis.resources | map(attribute='status.interfaces.0.ipAddress') }}"
+    names: "{{ vmis.resources | map(attribute='metadata.name') }}"
+    _groups: "{{ vmis.resources | map(attribute='metadata.annotations.ansible_groups') | map('split', ',') }}"
+    hosts: "{{ ips | zip(_groups, names)
+                | map('zip', ['ansible_host', 'ansible_groups', 'k8s_vmi_name'])
+                | map('map', 'reverse') | map('community.general.dict') }}"
+  loop: "{{ hosts | map(attribute='ansible_groups') | flatten | unique }}"
+  set_fact:
+    ci_inventory: "{{ ci_inventory|d({}) | combine({
+                    item: {
+                      'hosts': hosts | selectattr('ansible_groups', 'contains', item)
+                                     | rekey_on_member('k8s_vmi_name')
+                      }
+                    })
+                  }}"
+
+- name: Create inventory for CI tests
+  copy:
+    content: "{{ ci_inventory | to_yaml }}"
+    dest: "{{ inventory_path }}/ci_inventory.yml"
+    mode: "0644"