diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 593e7625fcf2a1013888880c704f6ab0d5165e21..05877f101b050e205bbe7a2b4d96b3bd143c3b6f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -34,7 +34,7 @@ variables:
   ANSIBLE_LOG_LEVEL: "-vv"
   RECOVER_CONTROL_PLANE_TEST: "false"
   RECOVER_CONTROL_PLANE_TEST_GROUPS: "etcd[2:],kube_control_plane[1:]"
-  TERRAFORM_VERSION: 1.0.8
+  TERRAFORM_VERSION: 1.3.7
   ANSIBLE_MAJOR_VERSION: "2.11"
   PIPELINE_IMAGE: "$CI_REGISTRY_IMAGE/pipeline:${CI_PIPELINE_ID}-${CI_COMMIT_SHORT_SHA}"
 
diff --git a/.gitlab-ci/lint.yml b/.gitlab-ci/lint.yml
index c9e1bdea49e87115bc8fb52cee40d2cde5e3abd2..6d935ba38b800adbb2682fc7b33b3ba7f36606eb 100644
--- a/.gitlab-ci/lint.yml
+++ b/.gitlab-ci/lint.yml
@@ -14,7 +14,7 @@ vagrant-validate:
   stage: unit-tests
   tags: [light]
   variables:
-    VAGRANT_VERSION: 2.2.19
+    VAGRANT_VERSION: 2.3.4
   script:
     - ./tests/scripts/vagrant-validate.sh
   except: ['triggers', 'master']
diff --git a/Vagrantfile b/Vagrantfile
index 63292bd13c1c5447991ce31781452eae5f89293b..77fc4a5079e4a524e0dbc6e9b838295d5dd4f566 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -10,6 +10,7 @@ Vagrant.require_version ">= 2.0.0"
 CONFIG = File.join(File.dirname(__FILE__), ENV['KUBESPRAY_VAGRANT_CONFIG'] || 'vagrant/config.rb')
 
 FLATCAR_URL_TEMPLATE = "https://%s.release.flatcar-linux.net/amd64-usr/current/flatcar_production_vagrant.json"
+FEDORA35_MIRROR = "https://download.fedoraproject.org/pub/fedora/linux/releases/35/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-35-1.2.x86_64.vagrant-libvirt.box"
 
 # Uniq disk UUID for libvirt
 DISK_UUID = Time.now.utc.to_i
@@ -29,7 +30,7 @@ SUPPORTED_OS = {
   "almalinux8"          => {box: "almalinux/8",                user: "vagrant"},
   "almalinux8-bento"    => {box: "bento/almalinux-8",          user: "vagrant"},
   "rockylinux8"         => {box: "generic/rocky8",             user: "vagrant"},
-  "fedora35"            => {box: "fedora/35-cloud-base",       user: "vagrant"},
+  "fedora35"            => {box: "fedora/35-cloud-base",       user: "vagrant", box_url: FEDORA35_MIRROR},
   "fedora36"            => {box: "fedora/36-cloud-base",       user: "vagrant"},
   "opensuse"            => {box: "opensuse/Leap-15.4.x86_64",  user: "vagrant"},
   "opensuse-tumbleweed" => {box: "opensuse/Tumbleweed.x86_64", user: "vagrant"},
diff --git a/contrib/terraform/openstack/modules/compute/versions.tf b/contrib/terraform/openstack/modules/compute/versions.tf
index c268dceebb605780af52b26c34c5d10ae4156b39..bfcf77a5c0d96abe04023286c7b63236561df344 100644
--- a/contrib/terraform/openstack/modules/compute/versions.tf
+++ b/contrib/terraform/openstack/modules/compute/versions.tf
@@ -4,6 +4,5 @@ terraform {
       source = "terraform-provider-openstack/openstack"
     }
   }
-  experiments = [module_variable_optional_attrs]
-  required_version = ">= 0.14.0"
+  required_version = ">= 1.3.0"
 }
diff --git a/contrib/terraform/openstack/versions.tf b/contrib/terraform/openstack/versions.tf
index 54b14e38624167d777afa0f07ffb3bf492eb2936..6e4c1045bcf6f63e51798e7633de0068b8011466 100644
--- a/contrib/terraform/openstack/versions.tf
+++ b/contrib/terraform/openstack/versions.tf
@@ -5,6 +5,5 @@ terraform {
       version = "~> 1.17"
     }
   }
-  experiments      = [module_variable_optional_attrs]
-  required_version = ">= 0.14.0"
+  required_version = ">= 1.3.0"
 }
diff --git a/pipeline.Dockerfile b/pipeline.Dockerfile
index c25c24244d8f55a8b0be41f31ebd6640195ef58a..10fe1d845bc422f7606b92111c3f9f6dcc0055d9 100644
--- a/pipeline.Dockerfile
+++ b/pipeline.Dockerfile
@@ -5,7 +5,7 @@ ARG ARCH=amd64
 ARG TZ=Etc/UTC
 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
 
-ENV VAGRANT_VERSION=2.2.19
+ENV VAGRANT_VERSION=2.3.4
 ENV VAGRANT_DEFAULT_PROVIDER=libvirt
 ENV VAGRANT_ANSIBLE_TAGS=facts
 
@@ -41,9 +41,9 @@ RUN KUBE_VERSION=$(sed -n 's/^kube_version: //p' roles/kubespray-defaults/defaul
     && mv kubectl /usr/local/bin/kubectl
 
 # Install Vagrant
-RUN wget https://releases.hashicorp.com/vagrant/${VAGRANT_VERSION}/vagrant_${VAGRANT_VERSION}_x86_64.deb && \
- dpkg -i vagrant_${VAGRANT_VERSION}_x86_64.deb && \
- rm vagrant_${VAGRANT_VERSION}_x86_64.deb && \
+RUN wget https://releases.hashicorp.com/vagrant/${VAGRANT_VERSION}/vagrant_${VAGRANT_VERSION}-1_amd64.deb && \
+ dpkg -i vagrant_${VAGRANT_VERSION}-1_amd64.deb && \
+ rm vagrant_${VAGRANT_VERSION}-1_amd64.deb && \
  vagrant plugin install vagrant-libvirt
 
 # Install Kubernetes collections
diff --git a/test-infra/vagrant-docker/Dockerfile b/test-infra/vagrant-docker/Dockerfile
index f8c05e74377bf2ebe75511883e80ce062f2772f1..b78b619ec662740d5bc4eb302bc247b8814d6f90 100644
--- a/test-infra/vagrant-docker/Dockerfile
+++ b/test-infra/vagrant-docker/Dockerfile
@@ -3,14 +3,14 @@
 ARG KUBESPRAY_VERSION
 FROM quay.io/kubespray/kubespray:${KUBESPRAY_VERSION}
 
-ENV VAGRANT_VERSION=2.2.19
+ENV VAGRANT_VERSION=2.3.4
 ENV VAGRANT_DEFAULT_PROVIDER=libvirt
 ENV VAGRANT_ANSIBLE_TAGS=facts
 
 RUN apt-get update && apt-get install -y wget libvirt-dev openssh-client rsync git
 
 # Install Vagrant
-RUN wget https://releases.hashicorp.com/vagrant/${VAGRANT_VERSION}/vagrant_${VAGRANT_VERSION}_x86_64.deb && \
- dpkg -i vagrant_${VAGRANT_VERSION}_x86_64.deb && \
- rm vagrant_${VAGRANT_VERSION}_x86_64.deb && \
+RUN wget https://releases.hashicorp.com/vagrant/${VAGRANT_VERSION}/vagrant_${VAGRANT_VERSION}-1_amd64.deb && \
+ dpkg -i vagrant_${VAGRANT_VERSION}-1_amd64.deb && \
+ rm vagrant_${VAGRANT_VERSION}-1_amd64.deb && \
  vagrant plugin install vagrant-libvirt
diff --git a/tests/scripts/vagrant-validate.sh b/tests/scripts/vagrant-validate.sh
index 337782e82b466b585be4137260b2eb8248751211..0b05457df5f937195624d3eef161389265a2e606 100755
--- a/tests/scripts/vagrant-validate.sh
+++ b/tests/scripts/vagrant-validate.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
 set -euxo pipefail
 
-curl -sL "https://releases.hashicorp.com/vagrant/${VAGRANT_VERSION}/vagrant_${VAGRANT_VERSION}_x86_64.deb" -o "/tmp/vagrant_${VAGRANT_VERSION}_x86_64.deb"
-dpkg -i "/tmp/vagrant_${VAGRANT_VERSION}_x86_64.deb"
+curl -sL "https://releases.hashicorp.com/vagrant/${VAGRANT_VERSION}/vagrant_${VAGRANT_VERSION}-1_amd64.deb" -o "/tmp/vagrant_${VAGRANT_VERSION}-1_amd64.deb"
+dpkg -i "/tmp/vagrant_${VAGRANT_VERSION}-1_amd64.deb"
 vagrant validate --ignore-provider