diff --git a/.gitlab-ci/packet.yml b/.gitlab-ci/packet.yml
index bbee73905626ba25237a955aaa12a699b09d6804..a25fbd2e87698991b74fc20d4dcd5099f89ffc9e 100644
--- a/.gitlab-ci/packet.yml
+++ b/.gitlab-ci/packet.yml
@@ -41,11 +41,6 @@ packet_ubuntu20-calico-aio-ansible-2_11:
 
 # ### PR JOBS PART2
 
-packet_ubuntu18-aio-docker:
-  stage: deploy-part2
-  extends: .packet_pr
-  when: on_success
-
 packet_ubuntu20-aio-docker:
   stage: deploy-part2
   extends: .packet_pr
@@ -56,11 +51,6 @@ packet_ubuntu20-calico-aio-hardening:
   extends: .packet_pr
   when: on_success
 
-packet_ubuntu18-calico-aio:
-  stage: deploy-part2
-  extends: .packet_pr
-  when: on_success
-
 packet_ubuntu22-aio-docker:
   stage: deploy-part2
   extends: .packet_pr
@@ -81,7 +71,7 @@ packet_almalinux8-crio:
   stage: deploy-part2
   when: on_success
 
-packet_ubuntu18-crio:
+packet_ubuntu20-crio:
   extends: .packet_pr
   stage: deploy-part2
   when: manual
@@ -91,7 +81,7 @@ packet_fedora35-crio:
   stage: deploy-part2
   when: manual
 
-packet_ubuntu16-flannel-ha:
+packet_ubuntu20-flannel-ha:
   stage: deploy-part2
   extends: .packet_pr
   when: manual
@@ -175,22 +165,17 @@ packet_opensuse-docker-cilium:
 
 # ### MANUAL JOBS
 
-packet_ubuntu16-docker-weave-sep:
+packet_ubuntu20-docker-weave-sep:
   stage: deploy-part2
   extends: .packet_pr
   when: manual
 
-packet_ubuntu18-cilium-sep:
+packet_ubuntu20-cilium-sep:
   stage: deploy-special
   extends: .packet_pr
   when: manual
 
-packet_ubuntu18-flannel-ha:
-  stage: deploy-part2
-  extends: .packet_pr
-  when: manual
-
-packet_ubuntu18-flannel-ha-once:
+packet_ubuntu20-flannel-ha-once:
   stage: deploy-part2
   extends: .packet_pr
   when: manual
@@ -308,7 +293,7 @@ packet_debian11-calico-upgrade-once:
   variables:
     UPGRADE_TEST: graceful
 
-packet_ubuntu18-calico-ha-recover:
+packet_ubuntu20-calico-ha-recover:
   stage: deploy-part3
   extends: .packet_periodic
   when: on_success
@@ -316,7 +301,7 @@ packet_ubuntu18-calico-ha-recover:
     RECOVER_CONTROL_PLANE_TEST: "true"
     RECOVER_CONTROL_PLANE_TEST_GROUPS: "etcd[2:],kube_control_plane[1:]"
 
-packet_ubuntu18-calico-ha-recover-noquorum:
+packet_ubuntu20-calico-ha-recover-noquorum:
   stage: deploy-part3
   extends: .packet_periodic
   when: on_success
diff --git a/.gitlab-ci/terraform.yml b/.gitlab-ci/terraform.yml
index ffdd226ed2f6e6bb65896dc5a58293d11814444a..e72f2868de730505c618f50985ff2db7a289cd2d 100644
--- a/.gitlab-ci/terraform.yml
+++ b/.gitlab-ci/terraform.yml
@@ -100,21 +100,7 @@ tf-validate-upcloud:
     PROVIDER: upcloud
     CLUSTER: $CI_COMMIT_REF_NAME
 
-# tf-packet-ubuntu16-default:
-#   extends: .terraform_apply
-#   variables:
-#     TF_VERSION: $TERRAFORM_VERSION
-#     PROVIDER: packet
-#     CLUSTER: $CI_COMMIT_REF_NAME
-#     TF_VAR_number_of_k8s_masters: "1"
-#     TF_VAR_number_of_k8s_nodes: "1"
-#     TF_VAR_plan_k8s_masters: t1.small.x86
-#     TF_VAR_plan_k8s_nodes: t1.small.x86
-#     TF_VAR_metro: ny
-#     TF_VAR_public_key_path: ""
-#     TF_VAR_operating_system: ubuntu_16_04
-#
-# tf-packet-ubuntu18-default:
+# tf-packet-ubuntu20-default:
 #   extends: .terraform_apply
 #   variables:
 #     TF_VERSION: $TERRAFORM_VERSION
@@ -126,7 +112,7 @@ tf-validate-upcloud:
 #     TF_VAR_plan_k8s_nodes: t1.small.x86
 #     TF_VAR_metro: am
 #     TF_VAR_public_key_path: ""
-#     TF_VAR_operating_system: ubuntu_18_04
+#     TF_VAR_operating_system: ubuntu_20_04
 
 .ovh_variables: &ovh_variables
   OS_AUTH_URL: https://auth.cloud.ovh.net/v3
@@ -164,7 +150,7 @@ tf-elastx_cleanup:
   script:
     - ./scripts/openstack-cleanup/main.py
 
-tf-elastx_ubuntu18-calico:
+tf-elastx_ubuntu20-calico:
   extends: .terraform_apply
   stage: deploy-part3
   when: on_success
@@ -194,7 +180,7 @@ tf-elastx_ubuntu18-calico:
     TF_VAR_az_list_node: '["sto1"]'
     TF_VAR_flavor_k8s_master: 3f73fc93-ec61-4808-88df-2580d94c1a9b    # v1-standard-2
     TF_VAR_flavor_k8s_node: 3f73fc93-ec61-4808-88df-2580d94c1a9b      # v1-standard-2
-    TF_VAR_image: ubuntu-18.04-server-latest
+    TF_VAR_image: ubuntu-20.04-server-latest
     TF_VAR_k8s_allowed_remote_ips: '["0.0.0.0/0"]'
 
 # OVH voucher expired, commenting job until things are sorted  out
@@ -211,7 +197,7 @@ tf-elastx_ubuntu18-calico:
 #  script:
 #    - ./scripts/openstack-cleanup/main.py
 
-# tf-ovh_ubuntu18-calico:
+# tf-ovh_ubuntu20-calico:
 #  extends: .terraform_apply
 #  when: on_success
 #  environment: ovh
@@ -237,5 +223,5 @@ tf-elastx_ubuntu18-calico:
 #    TF_VAR_network_name: "Ext-Net"
 #    TF_VAR_flavor_k8s_master: "defa64c3-bd46-43b4-858a-d93bbae0a229"    # s1-8
 #    TF_VAR_flavor_k8s_node: "defa64c3-bd46-43b4-858a-d93bbae0a229"      # s1-8
-#    TF_VAR_image: "Ubuntu 18.04"
+#    TF_VAR_image: "Ubuntu 20.04"
 #    TF_VAR_k8s_allowed_remote_ips: '["0.0.0.0/0"]'
diff --git a/.gitlab-ci/vagrant.yml b/.gitlab-ci/vagrant.yml
index 52aec6c78a7db56e86209ae25f736ce867df81d6..e7dbf73ff9febd677fb6698cd63e02d97a3849b0 100644
--- a/.gitlab-ci/vagrant.yml
+++ b/.gitlab-ci/vagrant.yml
@@ -24,17 +24,12 @@
     - chronic ./tests/scripts/testcases_cleanup.sh
   allow_failure: true
 
-vagrant_ubuntu18-calico-dual-stack:
+vagrant_ubuntu20-calico-dual-stack:
   stage: deploy-part2
   extends: .vagrant
   when: on_success
 
-vagrant_ubuntu18-flannel:
-  stage: deploy-part2
-  extends: .vagrant
-  when: on_success
-
-vagrant_ubuntu18-weave-medium:
+vagrant_ubuntu20-weave-medium:
   stage: deploy-part2
   extends: .vagrant
   when: manual
@@ -50,13 +45,13 @@ vagrant_ubuntu20-flannel-collection:
   extends: .vagrant
   when: on_success
 
-vagrant_ubuntu16-kube-router-sep:
+vagrant_ubuntu20-kube-router-sep:
   stage: deploy-part2
   extends: .vagrant
   when: manual
 
 # Service proxy test fails connectivity testing
-vagrant_ubuntu16-kube-router-svc-proxy:
+vagrant_ubuntu20-kube-router-svc-proxy:
   stage: deploy-part2
   extends: .vagrant
   when: manual
diff --git a/README.md b/README.md
index a8dc76f5f5797dbdf78a9fa0b9ff4cccd842f94f..878700850ecf2a306b8fd3d589a1a11ecf2dd002 100644
--- a/README.md
+++ b/README.md
@@ -143,7 +143,7 @@ vagrant up
 
 - **Flatcar Container Linux by Kinvolk**
 - **Debian** Bullseye, Buster
-- **Ubuntu** 16.04, 18.04, 20.04, 22.04
+- **Ubuntu** 20.04, 22.04
 - **CentOS/RHEL** 7, [8, 9](docs/centos.md#centos-8)
 - **Fedora** 35, 36
 - **Fedora CoreOS** (see [fcos Note](docs/fcos.md))
diff --git a/Vagrantfile b/Vagrantfile
index a3cf28d495ccd904afe3a27cacca0868f9b7a5e1..42666b3c71fdb73fe725a1ae633c015e8430b49f 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -20,9 +20,8 @@ SUPPORTED_OS = {
   "flatcar-beta"        => {box: "flatcar-beta",               user: "core", box_url: FLATCAR_URL_TEMPLATE % ["beta"]},
   "flatcar-alpha"       => {box: "flatcar-alpha",              user: "core", box_url: FLATCAR_URL_TEMPLATE % ["alpha"]},
   "flatcar-edge"        => {box: "flatcar-edge",               user: "core", box_url: FLATCAR_URL_TEMPLATE % ["edge"]},
-  "ubuntu1604"          => {box: "generic/ubuntu1604",         user: "vagrant"},
-  "ubuntu1804"          => {box: "generic/ubuntu1804",         user: "vagrant"},
   "ubuntu2004"          => {box: "generic/ubuntu2004",         user: "vagrant"},
+  "ubuntu2204"          => {box: "generic/ubuntu2204",         user: "vagrant"},
   "centos"              => {box: "centos/7",                   user: "vagrant"},
   "centos-bento"        => {box: "bento/centos-7.6",           user: "vagrant"},
   "centos8"             => {box: "centos/8",                   user: "vagrant"},
@@ -54,7 +53,7 @@ $shared_folders ||= {}
 $forwarded_ports ||= {}
 $subnet ||= "172.18.8"
 $subnet_ipv6 ||= "fd3c:b398:0698:0756"
-$os ||= "ubuntu1804"
+$os ||= "ubuntu2004"
 $network_plugin ||= "flannel"
 # Setting multi_networking to true will install Multus: https://github.com/k8snetworkplumbingwg/multus-cni
 $multi_networking ||= "False"
@@ -219,8 +218,8 @@ Vagrant.configure("2") do |config|
       # Disable swap for each vm
       node.vm.provision "shell", inline: "swapoff -a"
 
-      # ubuntu1804 and ubuntu2004 have IPv6 explicitly disabled. This undoes that.
-      if ["ubuntu1804", "ubuntu2004"].include? $os
+      # ubuntu2004 and ubuntu2204 have IPv6 explicitly disabled. This undoes that.
+      if ["ubuntu2004", "ubuntu2204"].include? $os
         node.vm.provision "shell", inline: "rm -f /etc/modprobe.d/local.conf"
         node.vm.provision "shell", inline: "sed -i '/net.ipv6.conf.all.disable_ipv6/d' /etc/sysctl.d/99-sysctl.conf /etc/sysctl.conf"
       end
diff --git a/docs/ci.md b/docs/ci.md
index 67d87ff18b69cd0b9fd4a495a2fc06cd5bb3ef90..59fcc07882a7ac3e24bbed798bfaf06154d7fdba 100644
--- a/docs/ci.md
+++ b/docs/ci.md
@@ -16,9 +16,7 @@ fedora36 |  :x: | :x: | :x: | :x: | :white_check_mark: | :x: | :x: | :x: |
 opensuse |  :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
 rockylinux8 |  :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
 rockylinux9 |  :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: |
-ubuntu16 |  :x: | :x: | :x: | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: |
-ubuntu18 |  :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :x: | :white_check_mark: |
-ubuntu20 |  :white_check_mark: | :x: | :x: | :white_check_mark: | :x: | :x: | :x: | :x: |
+ubuntu20 |  :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :x: | :white_check_mark: | :x: | :white_check_mark: |
 ubuntu22 |  :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
 
 ## crio
@@ -35,9 +33,7 @@ fedora36 |  :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
 opensuse |  :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
 rockylinux8 |  :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
 rockylinux9 |  :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
-ubuntu16 |  :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
-ubuntu18 |  :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
-ubuntu20 |  :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
+ubuntu20 |  :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
 ubuntu22 |  :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
 
 ## docker
@@ -54,7 +50,5 @@ fedora36 |  :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :white_chec
 opensuse |  :x: | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: |
 rockylinux8 |  :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
 rockylinux9 |  :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
-ubuntu16 |  :x: | :x: | :x: | :x: | :x: | :x: | :x: | :white_check_mark: |
-ubuntu18 |  :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
-ubuntu20 |  :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
+ubuntu20 |  :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :white_check_mark: |
 ubuntu22 |  :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: |
diff --git a/roles/bootstrap-os/molecule/default/molecule.yml b/roles/bootstrap-os/molecule/default/molecule.yml
index 22e322ebe1c12e34051085e332958b5772d67c18..3e89ec26d08fb6ee2a9eb9aff4c937259053d9b6 100644
--- a/roles/bootstrap-os/molecule/default/molecule.yml
+++ b/roles/bootstrap-os/molecule/default/molecule.yml
@@ -9,18 +9,14 @@ driver:
   provider:
     name: libvirt
 platforms:
-  - name: ubuntu16
-    box: generic/ubuntu1604
-    cpus: 1
-    memory: 512
-  - name: ubuntu18
-    box: generic/ubuntu1804
-    cpus: 1
-    memory: 512
   - name: ubuntu20
     box: generic/ubuntu2004
     cpus: 1
     memory: 512
+  - name: ubuntu22
+    box: generic/ubuntu2204
+    cpus: 1
+    memory: 1024
   - name: centos7
     box: centos/7
     cpus: 1
diff --git a/roles/container-engine/kata-containers/molecule/default/molecule.yml b/roles/container-engine/kata-containers/molecule/default/molecule.yml
index 63a942b99f0e015561ce7d23c6a397e1c6513e99..dd2b24751187ad5f70391ef94436f221e592ef26 100644
--- a/roles/container-engine/kata-containers/molecule/default/molecule.yml
+++ b/roles/container-engine/kata-containers/molecule/default/molecule.yml
@@ -9,15 +9,15 @@ lint: |
   set -e
   yamllint -c ../../../.yamllint .
 platforms:
-  - name: ubuntu18
-    box: generic/ubuntu1804
+  - name: ubuntu20
+    box: generic/ubuntu2004
     cpus: 1
     memory: 1024
     nested: true
     groups:
       - kube_control_plane
-  - name: ubuntu20
-    box: generic/ubuntu2004
+  - name: ubuntu22
+    box: generic/ubuntu2204
     cpus: 1
     memory: 1024
     nested: true
diff --git a/test-infra/image-builder/roles/kubevirt-images/defaults/main.yml b/test-infra/image-builder/roles/kubevirt-images/defaults/main.yml
index 5b38495be06f8b454f1e2a17ea2c8a59698f3d02..123f3980d99f1e136bb4b85ced08f6a72ac2650c 100644
--- a/test-infra/image-builder/roles/kubevirt-images/defaults/main.yml
+++ b/test-infra/image-builder/roles/kubevirt-images/defaults/main.yml
@@ -6,20 +6,6 @@ docker_host: quay.io
 registry: quay.io/kubespray
 
 images:
-  ubuntu-1604:
-    filename: xenial-server-cloudimg-amd64-disk1.img
-    url: https://storage.googleapis.com/kubespray-images/ubuntu/xenial-server-cloudimg-amd64-disk1.img
-    checksum: sha256:c0d099383cd064390b568e20d1c39a9c68ba864764404b70f754a7b1b2f808f7
-    converted: false
-    tag: "latest"
-
-  ubuntu-1804:
-    filename: bionic-server-cloudimg-amd64.img
-    url: https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img
-    checksum: sha256:c3d0e03f4245ffaabd7647e6dabf346b944a62b9934d0a89f3a04b4236386af2
-    converted: false
-    tag: "latest"
-
   ubuntu-2004:
     filename: focal-server-cloudimg-amd64.img
     url: https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64-disk-kvm.img
diff --git a/tests/cloud_playbooks/roles/packet-ci/defaults/main.yml b/tests/cloud_playbooks/roles/packet-ci/defaults/main.yml
index f2c82368e4b3ff7efe0759b460d54a94b9088844..2c487fb2bbe816bd275d942e16d6aba5f959fcbf 100644
--- a/tests/cloud_playbooks/roles/packet-ci/defaults/main.yml
+++ b/tests/cloud_playbooks/roles/packet-ci/defaults/main.yml
@@ -36,8 +36,6 @@ cloud_init:
   opensuse-leap-15: "I2Nsb3VkLWNvbmZpZwogdXNlcnM6CiAgLSBuYW1lOiBrdWJlc3ByYXkKICAgIHN1ZG86IEFMTD0oQUxMKSBOT1BBU1NXRDpBTEwKICAgIHNoZWxsOiAvYmluL2Jhc2gKICAgIGxvY2tfcGFzc3dkOiBGYWxzZQogICAgaG9tZTogL2hvbWUva3ViZXNwcmF5CiAgICBzc2hfYXV0aG9yaXplZF9rZXlzOgogICAgICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQ2FuVGkvZUt4MCt0SFlKQWVEaHErc0ZTMk9iVVAxL0k2OWY3aVYzVXRrS2xUMjBKZlcxZjZGZVh0LzA0VmYyN1dRcStOcXM2dkdCcUQ5UVhTWXVmK3QwL3M3RVBMalRlaTltZTFtcHFyK3VUZStLRHRUUDM5cGZEMy9lVkNhZUI3MjZHUDJGa2FEMEZ6cG1FYjY2TzNOcWh4T1E5Nkd4LzlYVHV3L0szbGxqNE9WRDZHcmpSM0I3YzRYdEVCc1pjWnBwTUovb0gxbUd5R1hkaDMxbVdRU3FBUk8vUDhVOEd3dDArSEdwVXdoL2hkeTN0K1NZb1RCMkd3VmIwem95Vnd0VnZmRFF6c204ZnEzYXY0S3ZlejhrWXVOREp2MDV4NGx2VVpnUjE1WkRSWHNBbmRoUXlxb1hkQ0xBZTArZWFLWHE5QmtXeEtGYjloUGUwQVVqamE1"
   rhel-server-7: "I2Nsb3VkLWNvbmZpZwpzeXN0ZW1faW5mbzoKICBkaXN0cm86IHJoZWwKdXNlcnM6CiAtIG5hbWU6IGt1YmVzcHJheQogICBncm91cHM6IHdoZWVsCiAgIHN1ZG86ICdBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMJwogICBzaGVsbDogL2Jpbi9iYXNoCiAgIGxvY2tfcGFzc3dkOiBGYWxzZQogICBob21lOiAvaG9tZS9rdWJlc3ByYXkKICAgc3NoX2F1dGhvcml6ZWRfa2V5czoKICAgICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQ2FuVGkvZUt4MCt0SFlKQWVEaHErc0ZTMk9iVVAxL0k2OWY3aVYzVXRrS2xUMjBKZlcxZjZGZVh0LzA0VmYyN1dRcStOcXM2dkdCcUQ5UVhTWXVmK3QwL3M3RVBMalRlaTltZTFtcHFyK3VUZStLRHRUUDM5cGZEMy9lVkNhZUI3MjZHUDJGa2FEMEZ6cG1FYjY2TzNOcWh4T1E5Nkd4LzlYVHV3L0szbGxqNE9WRDZHcmpSM0I3YzRYdEVCc1pjWnBwTUovb0gxbUd5R1hkaDMxbVdRU3FBUk8vUDhVOEd3dDArSEdwVXdoL2hkeTN0K1NZb1RCMkd3VmIwem95Vnd0VnZmRFF6c204ZnEzYXY0S3ZlejhrWXVOREp2MDV4NGx2VVpnUjE1WkRSWHNBbmRoUXlxb1hkQ0xBZTArZWFLWHE5QmtXeEtGYjloUGUwQVVqamE1Cgo="
   amazon-linux-2: "I2Nsb3VkLWNvbmZpZwpzeXN0ZW1faW5mbzoKICBkaXN0cm86IHJoZWwKdXNlcnM6CiAtIG5hbWU6IGt1YmVzcHJheQogICBncm91cHM6IHdoZWVsCiAgIHN1ZG86ICdBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMJwogICBzaGVsbDogL2Jpbi9iYXNoCiAgIGxvY2tfcGFzc3dkOiBGYWxzZQogICBob21lOiAvaG9tZS9rdWJlc3ByYXkKICAgc3NoX2F1dGhvcml6ZWRfa2V5czoKICAgICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQ2FuVGkvZUt4MCt0SFlKQWVEaHErc0ZTMk9iVVAxL0k2OWY3aVYzVXRrS2xUMjBKZlcxZjZGZVh0LzA0VmYyN1dRcStOcXM2dkdCcUQ5UVhTWXVmK3QwL3M3RVBMalRlaTltZTFtcHFyK3VUZStLRHRUUDM5cGZEMy9lVkNhZUI3MjZHUDJGa2FEMEZ6cG1FYjY2TzNOcWh4T1E5Nkd4LzlYVHV3L0szbGxqNE9WRDZHcmpSM0I3YzRYdEVCc1pjWnBwTUovb0gxbUd5R1hkaDMxbVdRU3FBUk8vUDhVOEd3dDArSEdwVXdoL2hkeTN0K1NZb1RCMkd3VmIwem95Vnd0VnZmRFF6c204ZnEzYXY0S3ZlejhrWXVOREp2MDV4NGx2VVpnUjE1WkRSWHNBbmRoUXlxb1hkQ0xBZTArZWFLWHE5QmtXeEtGYjloUGUwQVVqamE1Cgo="
-  ubuntu-1604: "I2Nsb3VkLWNvbmZpZwogdXNlcnM6CiAgLSBuYW1lOiBrdWJlc3ByYXkKICAgIHN1ZG86IEFMTD0oQUxMKSBOT1BBU1NXRDpBTEwKICAgIHNoZWxsOiAvYmluL2Jhc2gKICAgIGxvY2tfcGFzc3dkOiBGYWxzZQogICAgaG9tZTogL2hvbWUva3ViZXNwcmF5CiAgICBzc2hfYXV0aG9yaXplZF9rZXlzOgogICAgICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQ2FuVGkvZUt4MCt0SFlKQWVEaHErc0ZTMk9iVVAxL0k2OWY3aVYzVXRrS2xUMjBKZlcxZjZGZVh0LzA0VmYyN1dRcStOcXM2dkdCcUQ5UVhTWXVmK3QwL3M3RVBMalRlaTltZTFtcHFyK3VUZStLRHRUUDM5cGZEMy9lVkNhZUI3MjZHUDJGa2FEMEZ6cG1FYjY2TzNOcWh4T1E5Nkd4LzlYVHV3L0szbGxqNE9WRDZHcmpSM0I3YzRYdEVCc1pjWnBwTUovb0gxbUd5R1hkaDMxbVdRU3FBUk8vUDhVOEd3dDArSEdwVXdoL2hkeTN0K1NZb1RCMkd3VmIwem95Vnd0VnZmRFF6c204ZnEzYXY0S3ZlejhrWXVOREp2MDV4NGx2VVpnUjE1WkRSWHNBbmRoUXlxb1hkQ0xBZTArZWFLWHE5QmtXeEtGYjloUGUwQVVqamE1"
-  ubuntu-1804: "I2Nsb3VkLWNvbmZpZwogdXNlcnM6CiAgLSBuYW1lOiBrdWJlc3ByYXkKICAgIHN1ZG86IEFMTD0oQUxMKSBOT1BBU1NXRDpBTEwKICAgIHNoZWxsOiAvYmluL2Jhc2gKICAgIGxvY2tfcGFzc3dkOiBGYWxzZQogICAgaG9tZTogL2hvbWUva3ViZXNwcmF5CiAgICBzc2hfYXV0aG9yaXplZF9rZXlzOgogICAgICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQ2FuVGkvZUt4MCt0SFlKQWVEaHErc0ZTMk9iVVAxL0k2OWY3aVYzVXRrS2xUMjBKZlcxZjZGZVh0LzA0VmYyN1dRcStOcXM2dkdCcUQ5UVhTWXVmK3QwL3M3RVBMalRlaTltZTFtcHFyK3VUZStLRHRUUDM5cGZEMy9lVkNhZUI3MjZHUDJGa2FEMEZ6cG1FYjY2TzNOcWh4T1E5Nkd4LzlYVHV3L0szbGxqNE9WRDZHcmpSM0I3YzRYdEVCc1pjWnBwTUovb0gxbUd5R1hkaDMxbVdRU3FBUk8vUDhVOEd3dDArSEdwVXdoL2hkeTN0K1NZb1RCMkd3VmIwem95Vnd0VnZmRFF6c204ZnEzYXY0S3ZlejhrWXVOREp2MDV4NGx2VVpnUjE1WkRSWHNBbmRoUXlxb1hkQ0xBZTArZWFLWHE5QmtXeEtGYjloUGUwQVVqamE1"
   ubuntu-2004: "I2Nsb3VkLWNvbmZpZwogdXNlcnM6CiAgLSBuYW1lOiBrdWJlc3ByYXkKICAgIHN1ZG86IEFMTD0oQUxMKSBOT1BBU1NXRDpBTEwKICAgIHNoZWxsOiAvYmluL2Jhc2gKICAgIGxvY2tfcGFzc3dkOiBGYWxzZQogICAgaG9tZTogL2hvbWUva3ViZXNwcmF5CiAgICBzc2hfYXV0aG9yaXplZF9rZXlzOgogICAgICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQ2FuVGkvZUt4MCt0SFlKQWVEaHErc0ZTMk9iVVAxL0k2OWY3aVYzVXRrS2xUMjBKZlcxZjZGZVh0LzA0VmYyN1dRcStOcXM2dkdCcUQ5UVhTWXVmK3QwL3M3RVBMalRlaTltZTFtcHFyK3VUZStLRHRUUDM5cGZEMy9lVkNhZUI3MjZHUDJGa2FEMEZ6cG1FYjY2TzNOcWh4T1E5Nkd4LzlYVHV3L0szbGxqNE9WRDZHcmpSM0I3YzRYdEVCc1pjWnBwTUovb0gxbUd5R1hkaDMxbVdRU3FBUk8vUDhVOEd3dDArSEdwVXdoL2hkeTN0K1NZb1RCMkd3VmIwem95Vnd0VnZmRFF6c204ZnEzYXY0S3ZlejhrWXVOREp2MDV4NGx2VVpnUjE1WkRSWHNBbmRoUXlxb1hkQ0xBZTArZWFLWHE5QmtXeEtGYjloUGUwQVVqamE1"
   ubuntu-2204: "I2Nsb3VkLWNvbmZpZwogdXNlcnM6CiAgLSBuYW1lOiBrdWJlc3ByYXkKICAgIHN1ZG86IEFMTD0oQUxMKSBOT1BBU1NXRDpBTEwKICAgIHNoZWxsOiAvYmluL2Jhc2gKICAgIGxvY2tfcGFzc3dkOiBGYWxzZQogICAgaG9tZTogL2hvbWUva3ViZXNwcmF5CiAgICBzc2hfYXV0aG9yaXplZF9rZXlzOgogICAgICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQ2FuVGkvZUt4MCt0SFlKQWVEaHErc0ZTMk9iVVAxL0k2OWY3aVYzVXRrS2xUMjBKZlcxZjZGZVh0LzA0VmYyN1dRcStOcXM2dkdCcUQ5UVhTWXVmK3QwL3M3RVBMalRlaTltZTFtcHFyK3VUZStLRHRUUDM5cGZEMy9lVkNhZUI3MjZHUDJGa2FEMEZ6cG1FYjY2TzNOcWh4T1E5Nkd4LzlYVHV3L0szbGxqNE9WRDZHcmpSM0I3YzRYdEVCc1pjWnBwTUovb0gxbUd5R1hkaDMxbVdRU3FBUk8vUDhVOEd3dDArSEdwVXdoL2hkeTN0K1NZb1RCMkd3VmIwem95Vnd0VnZmRFF6c204ZnEzYXY0S3ZlejhrWXVOREp2MDV4NGx2VVpnUjE1WkRSWHNBbmRoUXlxb1hkQ0xBZTArZWFLWHE5QmtXeEtGYjloUGUwQVVqamE1"
   oracle-7: "I2Nsb3VkLWNvbmZpZwpzeXN0ZW1faW5mbzoKICBkaXN0cm86IHJoZWwKdXNlcnM6CiAtIG5hbWU6IGt1YmVzcHJheQogICBncm91cHM6IHdoZWVsCiAgIHN1ZG86ICdBTEw9KEFMTCkgTk9QQVNTV0Q6QUxMJwogICBzaGVsbDogL2Jpbi9iYXNoCiAgIGxvY2tfcGFzc3dkOiBGYWxzZQogICBob21lOiAvaG9tZS9rdWJlc3ByYXkKICAgc3NoX2F1dGhvcml6ZWRfa2V5czoKICAgICAtIHNzaC1yc2EgQUFBQUIzTnphQzF5YzJFQUFBQURBUUFCQUFBQkFRQ2FuVGkvZUt4MCt0SFlKQWVEaHErc0ZTMk9iVVAxL0k2OWY3aVYzVXRrS2xUMjBKZlcxZjZGZVh0LzA0VmYyN1dRcStOcXM2dkdCcUQ5UVhTWXVmK3QwL3M3RVBMalRlaTltZTFtcHFyK3VUZStLRHRUUDM5cGZEMy9lVkNhZUI3MjZHUDJGa2FEMEZ6cG1FYjY2TzNOcWh4T1E5Nkd4LzlYVHV3L0szbGxqNE9WRDZHcmpSM0I3YzRYdEVCc1pjWnBwTUovb0gxbUd5R1hkaDMxbVdRU3FBUk8vUDhVOEd3dDArSEdwVXdoL2hkeTN0K1NZb1RCMkd3VmIwem95Vnd0VnZmRFF6c204ZnEzYXY0S3ZlejhrWXVOREp2MDV4NGx2VVpnUjE1WkRSWHNBbmRoUXlxb1hkQ0xBZTArZWFLWHE5QmtXeEtGYjloUGUwQVVqamE1Cgo="
diff --git a/tests/files/packet_ubuntu18-aio-docker.yml b/tests/files/packet_ubuntu18-aio-docker.yml
deleted file mode 100644
index 3fd06f2fa522a6c805b87bdf353ab85de7e72b25..0000000000000000000000000000000000000000
--- a/tests/files/packet_ubuntu18-aio-docker.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-# Instance settings
-cloud_image: ubuntu-1804
-mode: aio
-
-# Use docker
-container_manager: docker
-etcd_deployment_type: docker
-resolvconf_mode: docker_dns
diff --git a/tests/files/packet_ubuntu18-calico-aio.yml b/tests/files/packet_ubuntu18-calico-aio.yml
deleted file mode 100644
index df9e42809c47622f74207efbffe8453f6a6f1394..0000000000000000000000000000000000000000
--- a/tests/files/packet_ubuntu18-calico-aio.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-# Instance settings
-cloud_image: ubuntu-1804
-mode: aio
diff --git a/tests/files/packet_ubuntu18-flannel-ha.yml b/tests/files/packet_ubuntu18-flannel-ha.yml
deleted file mode 100644
index cc513d0104c51c38a081b82d907d75a5fb74c8c0..0000000000000000000000000000000000000000
--- a/tests/files/packet_ubuntu18-flannel-ha.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-# Instance settings
-cloud_image: ubuntu-1804
-mode: ha
-
-# Kubespray settings
-kubeadm_certificate_key: 3998c58db6497dd17d909394e62d515368c06ec617710d02edea31c06d741085
-kube_proxy_mode: iptables
-kube_network_plugin: flannel
-helm_enabled: true
-krew_enabled: true
-kubernetes_audit: true
-etcd_events_cluster_enabled: true
-local_volume_provisioner_enabled: true
-kube_encrypt_secret_data: true
-ingress_nginx_enabled: true
-ingress_nginx_webhook_enabled: true
-ingress_nginx_webhook_job_ttl: 30
-cert_manager_enabled: true
-# Disable as health checks are still unstable and slow to respond.
-metrics_server_enabled: false
-metrics_server_kubelet_insecure_tls: true
-kube_token_auth: true
-enable_nodelocaldns: false
diff --git a/tests/files/packet_ubuntu18-calico-ha-recover-noquorum.yml b/tests/files/packet_ubuntu20-calico-ha-recover-noquorum.yml
similarity index 66%
rename from tests/files/packet_ubuntu18-calico-ha-recover-noquorum.yml
rename to tests/files/packet_ubuntu20-calico-ha-recover-noquorum.yml
index a064392d67630a4a940dc6ba53e64d486a5678d8..2d6db360e9df3408a265cea84c418971ec7bb92f 100644
--- a/tests/files/packet_ubuntu18-calico-ha-recover-noquorum.yml
+++ b/tests/files/packet_ubuntu20-calico-ha-recover-noquorum.yml
@@ -1,4 +1,4 @@
 ---
 # Instance settings
-cloud_image: ubuntu-1804
+cloud_image: ubuntu-2004
 mode: ha-recover-noquorum
diff --git a/tests/files/packet_ubuntu18-calico-ha-recover.yml b/tests/files/packet_ubuntu20-calico-ha-recover.yml
similarity index 62%
rename from tests/files/packet_ubuntu18-calico-ha-recover.yml
rename to tests/files/packet_ubuntu20-calico-ha-recover.yml
index b1ef3b913884c1c2760b3e4cc41b77427f186b1f..a757719ad16e6e1dc245dda034c4a1c5154152ff 100644
--- a/tests/files/packet_ubuntu18-calico-ha-recover.yml
+++ b/tests/files/packet_ubuntu20-calico-ha-recover.yml
@@ -1,4 +1,4 @@
 ---
 # Instance settings
-cloud_image: ubuntu-1804
+cloud_image: ubuntu-2004
 mode: ha-recover
diff --git a/tests/files/packet_ubuntu18-cilium-sep.yml b/tests/files/packet_ubuntu20-cilium-sep.yml
similarity index 85%
rename from tests/files/packet_ubuntu18-cilium-sep.yml
rename to tests/files/packet_ubuntu20-cilium-sep.yml
index 04ed4cc80b799a995a9d37f31fde1fbe958004e2..104f7c3951ba146e94905790b8a629205edb05f7 100644
--- a/tests/files/packet_ubuntu18-cilium-sep.yml
+++ b/tests/files/packet_ubuntu20-cilium-sep.yml
@@ -1,6 +1,6 @@
 ---
 # Instance settings
-cloud_image: ubuntu-1804
+cloud_image: ubuntu-2004
 mode: separate
 
 # Kubespray settings
diff --git a/tests/files/packet_ubuntu18-crio.yml b/tests/files/packet_ubuntu20-crio.yml
similarity index 84%
rename from tests/files/packet_ubuntu18-crio.yml
rename to tests/files/packet_ubuntu20-crio.yml
index f5b7e127da9071c1d6e6168bb37031b30b8d0206..87329d0589c774f383ac6f79315d719460e98ce2 100644
--- a/tests/files/packet_ubuntu18-crio.yml
+++ b/tests/files/packet_ubuntu20-crio.yml
@@ -1,6 +1,6 @@
 ---
 # Instance settings
-cloud_image: ubuntu-1804
+cloud_image: ubuntu-2004
 mode: default
 
 # Kubespray settings
diff --git a/tests/files/packet_ubuntu16-docker-weave-sep.yml b/tests/files/packet_ubuntu20-docker-weave-sep.yml
similarity index 92%
rename from tests/files/packet_ubuntu16-docker-weave-sep.yml
rename to tests/files/packet_ubuntu20-docker-weave-sep.yml
index 9b268e77e6ea91e984bbdaf60c36c8ef4bd6c206..8c6584caa1cc39dd2909f80456faa6fc456e3fb9 100644
--- a/tests/files/packet_ubuntu16-docker-weave-sep.yml
+++ b/tests/files/packet_ubuntu20-docker-weave-sep.yml
@@ -1,6 +1,6 @@
 ---
 # Instance settings
-cloud_image: ubuntu-1604
+cloud_image: ubuntu-2004
 mode: separate
 
 # Kubespray settings
diff --git a/tests/files/packet_ubuntu18-flannel-ha-once.yml b/tests/files/packet_ubuntu20-flannel-ha-once.yml
similarity index 96%
rename from tests/files/packet_ubuntu18-flannel-ha-once.yml
rename to tests/files/packet_ubuntu20-flannel-ha-once.yml
index fe672891d74901b1ced169ec79a7f4adf1108373..4477421fdf9881513c8040cc3234a48c27b5f8bc 100644
--- a/tests/files/packet_ubuntu18-flannel-ha-once.yml
+++ b/tests/files/packet_ubuntu20-flannel-ha-once.yml
@@ -1,6 +1,6 @@
 ---
 # Instance settings
-cloud_image: ubuntu-1804
+cloud_image: ubuntu-2004
 mode: ha
 
 # Kubespray settings
diff --git a/tests/files/packet_ubuntu16-flannel-ha.yml b/tests/files/packet_ubuntu20-flannel-ha.yml
similarity index 90%
rename from tests/files/packet_ubuntu16-flannel-ha.yml
rename to tests/files/packet_ubuntu20-flannel-ha.yml
index 8df48e35a1a5005e821d7c3f0ac7548512c2b63c..06a9ffb24655f586238c93ab2fe54d1eade1d521 100644
--- a/tests/files/packet_ubuntu16-flannel-ha.yml
+++ b/tests/files/packet_ubuntu20-flannel-ha.yml
@@ -1,6 +1,6 @@
 ---
 # Instance settings
-cloud_image: ubuntu-1604
+cloud_image: ubuntu-2004
 mode: ha
 
 # Kubespray settings
diff --git a/tests/files/tf-elastx_ubuntu18-calico.yml b/tests/files/tf-elastx_ubuntu20-calico.yml
similarity index 100%
rename from tests/files/tf-elastx_ubuntu18-calico.yml
rename to tests/files/tf-elastx_ubuntu20-calico.yml
diff --git a/tests/files/tf-ovh_ubuntu18-calico.yml b/tests/files/tf-ovh_ubuntu20-calico.yml
similarity index 100%
rename from tests/files/tf-ovh_ubuntu18-calico.yml
rename to tests/files/tf-ovh_ubuntu20-calico.yml
diff --git a/tests/files/vagrant_ubuntu18-flannel.rb b/tests/files/vagrant_ubuntu18-flannel.rb
deleted file mode 100644
index ce942edbb014f3632073d37ee08493a539a5144d..0000000000000000000000000000000000000000
--- a/tests/files/vagrant_ubuntu18-flannel.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# For CI we are not worries about data persistence across reboot
-$libvirt_volume_cache = "unsafe"
-
-# Checking for box update can trigger API rate limiting
-# https://www.vagrantup.com/docs/vagrant-cloud/request-limits.html
-$box_check_update = false
-$vm_cpus = 2
diff --git a/tests/files/vagrant_ubuntu18-flannel.yml b/tests/files/vagrant_ubuntu18-flannel.yml
deleted file mode 100644
index 6f8916febcd0fa90dfc451bb41fe8d22dae0215f..0000000000000000000000000000000000000000
--- a/tests/files/vagrant_ubuntu18-flannel.yml
+++ /dev/null
@@ -1,3 +0,0 @@
----
-# Kubespray settings
-kube_network_plugin: flannel
diff --git a/tests/files/vagrant_ubuntu18-calico-dual-stack.rb b/tests/files/vagrant_ubuntu20-calico-dual-stack.rb
similarity index 100%
rename from tests/files/vagrant_ubuntu18-calico-dual-stack.rb
rename to tests/files/vagrant_ubuntu20-calico-dual-stack.rb
diff --git a/tests/files/vagrant_ubuntu18-calico-dual-stack.yml b/tests/files/vagrant_ubuntu20-calico-dual-stack.yml
similarity index 100%
rename from tests/files/vagrant_ubuntu18-calico-dual-stack.yml
rename to tests/files/vagrant_ubuntu20-calico-dual-stack.yml
diff --git a/tests/files/vagrant_ubuntu16-kube-router-sep.rb b/tests/files/vagrant_ubuntu20-kube-router-sep.rb
similarity index 95%
rename from tests/files/vagrant_ubuntu16-kube-router-sep.rb
rename to tests/files/vagrant_ubuntu20-kube-router-sep.rb
index c1009343938ed7a371fe6b63946bf92bb72b8052..999f8132e066a485a7f2a3edc881453a155b21d0 100644
--- a/tests/files/vagrant_ubuntu16-kube-router-sep.rb
+++ b/tests/files/vagrant_ubuntu20-kube-router-sep.rb
@@ -1,6 +1,6 @@
 $num_instances = 2
 $vm_memory ||= 2048
-$os = "ubuntu1604"
+$os = "ubuntu2004"
 
 $kube_master_instances = 1
 $etcd_instances = 1
diff --git a/tests/files/vagrant_ubuntu16-kube-router-sep.yml b/tests/files/vagrant_ubuntu20-kube-router-sep.yml
similarity index 82%
rename from tests/files/vagrant_ubuntu16-kube-router-sep.yml
rename to tests/files/vagrant_ubuntu20-kube-router-sep.yml
index e2c60b3cc3a785a58856dd488e70b12ac9db060f..d17b627a74a016e260ba5b72c71b28de55af783c 100644
--- a/tests/files/vagrant_ubuntu16-kube-router-sep.yml
+++ b/tests/files/vagrant_ubuntu20-kube-router-sep.yml
@@ -1,6 +1,6 @@
 ---
 # Instance settings
-cloud_image: ubuntu-1604
+cloud_image: ubuntu-2004
 mode: separate
 
 # Kubespray settings
diff --git a/tests/files/vagrant_ubuntu16-kube-router-svc-proxy.rb b/tests/files/vagrant_ubuntu20-kube-router-svc-proxy.rb
similarity index 93%
rename from tests/files/vagrant_ubuntu16-kube-router-svc-proxy.rb
rename to tests/files/vagrant_ubuntu20-kube-router-svc-proxy.rb
index 51fd024c340cb4bdec0ca2cdc0f3fd10b815adf6..29f6e8166ab9d0e63703a2608116534be5d2c0a4 100644
--- a/tests/files/vagrant_ubuntu16-kube-router-svc-proxy.rb
+++ b/tests/files/vagrant_ubuntu20-kube-router-svc-proxy.rb
@@ -1,4 +1,4 @@
-$os = "ubuntu1604"
+$os = "ubuntu2004"
 
 # For CI we are not worried about data persistence across reboot
 $libvirt_volume_cache = "unsafe"
diff --git a/tests/files/vagrant_ubuntu16-kube-router-svc-proxy.yml b/tests/files/vagrant_ubuntu20-kube-router-svc-proxy.yml
similarity index 85%
rename from tests/files/vagrant_ubuntu16-kube-router-svc-proxy.yml
rename to tests/files/vagrant_ubuntu20-kube-router-svc-proxy.yml
index 465d42da73055848f64c3148cdc39970ebaf0aee..faa30d068f5e05061946a9b53c320168ae701c2a 100644
--- a/tests/files/vagrant_ubuntu16-kube-router-svc-proxy.yml
+++ b/tests/files/vagrant_ubuntu20-kube-router-svc-proxy.yml
@@ -1,6 +1,6 @@
 ---
 # Instance settings
-cloud_image: ubuntu-1604
+cloud_image: ubuntu-2004
 mode: separate
 
 # Kubespray settings
diff --git a/tests/files/vagrant_ubuntu18-weave-medium.rb b/tests/files/vagrant_ubuntu20-weave-medium.rb
similarity index 89%
rename from tests/files/vagrant_ubuntu18-weave-medium.rb
rename to tests/files/vagrant_ubuntu20-weave-medium.rb
index be537f6453128f3049eeba0133b36f5ca9a67081..6cf49c95fd2a0c7aa0bca2c324d999db3d1598e8 100644
--- a/tests/files/vagrant_ubuntu18-weave-medium.rb
+++ b/tests/files/vagrant_ubuntu20-weave-medium.rb
@@ -1,6 +1,6 @@
 $num_instances = 16
 $vm_memory ||= 2048
-$os = "ubuntu1804"
+$os = "ubuntu2004"
 $network_plugin = "weave"
 $kube_master_instances = 1
 $etcd_instances = 1
diff --git a/tests/files/vagrant_ubuntu18-weave-medium.yml b/tests/files/vagrant_ubuntu20-weave-medium.yml
similarity index 100%
rename from tests/files/vagrant_ubuntu18-weave-medium.yml
rename to tests/files/vagrant_ubuntu20-weave-medium.yml