diff --git a/Vagrantfile b/Vagrantfile
index 9eef7bb..5689813 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -2,7 +2,7 @@
 # vi: set ft=ruby :
 
 Vagrant.configure(2) do |config|
-  config.vm.box = "debian/contrib-jessie64"
+  config.vm.box = "debian/buster64"
 
   config.vm.hostname = "gvamysql.local"
   config.vm.network "private_network", ip: "172.16.3.6"
@@ -10,18 +10,20 @@ Vagrant.configure(2) do |config|
   config.vm.synced_folder "../gvasalt/states/", "/srv/salt/"
   config.vm.synced_folder "../gvasalt/pillar/", "/srv/pillar/"
 
-  config.vm.provider "virtualbox" do |vb|
-     # vb.gui = true
-     vb.memory = "512"
+  config.vm.provider :libvirt do |libvirt|
+      libvirt.memory = 1024
   end
 
+  config.vm.provision :shell, path: "change-vmdebootstrap-default-dhcp.sh"
+
   config.vm.provision :salt do |salt|
-      salt.bootstrap_script = "salt/bootstrap.sh"
+      salt.bootstrap_options = "-x python3"
       salt.minion_id = "gvamysql"
       salt.masterless = true
       salt.run_highstate = true
       salt.verbose = true
       salt.colorize = true
       salt.log_level = "warning"
+      salt.grains_config = "salt/grains"
   end
-end
\ No newline at end of file
+end
diff --git a/change-vmdebootstrap-default-dhcp.sh b/change-vmdebootstrap-default-dhcp.sh
new file mode 100644
index 0000000..a5f3c38
--- /dev/null
+++ b/change-vmdebootstrap-default-dhcp.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+
+debootstrap_network=/etc/systemd/network/99-dhcp.network
+
+if grep -q '^Name=\\*' "${debootstrap_network}"; then
+  primary_nic=$(ls -1 /sys/class/net | grep -v lo |sort | head -1)
+  sed -i "s/^Name=e\\*/Name=${primary_nic}/" \
+    "${debootstrap_network}"
+  systemctl restart systemd-networkd.service
+  echo "Changed systemd network configuration"
+else
+  echo "Systemd network configuration has already been changed"
+fi
diff --git a/docs/changelog.rst b/docs/changelog.rst
index c43fc97..4e2a70d 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -1,6 +1,7 @@
 Changelog
 =========
 
+* :support:`-` update Vagrant setup to libvirt and Debian Buster
 * :support:`-` move mysqltasks to top level to keep the task names when
   using Python 3
 * :support:`-` drop old requirements files
diff --git a/salt/bootstrap.sh b/salt/bootstrap.sh
deleted file mode 100755
index db9e6d4..0000000
--- a/salt/bootstrap.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh -
-
-echo "deb http://httpredir.debian.org/debian jessie-backports main" >/etc/apt/sources.list.d/backports.list
-
-apt-get update
-apt-get install -y -t jessie-backports python-cryptography
-
-# We just download the bootstrap script by default and execute that.
-if [ -x /usr/bin/fetch ]; then
-    /usr/bin/fetch -o - https://raw.githubusercontent.com/saltstack/salt-bootstrap/stable/bootstrap-salt.sh | sh -s -- "$@"
-elif [ -x /usr/bin/curl ]; then
-    /usr/bin/curl -L https://raw.githubusercontent.com/saltstack/salt-bootstrap/stable/bootstrap-salt.sh | sh -s -- "$@"
-else
-    python \
-        -c 'import urllib; print urllib.urlopen("https://raw.githubusercontent.com/saltstack/salt-bootstrap/stable/bootstrap-salt.sh").read()' \
-        | sh -s -- "$@"
-fi
-
-cat >/etc/salt/minion <<EOF
-file_client: local
-
-file_roots:
-  base:
-    - /srv/salt/
-
-pillar_roots:
-  base:
-    - /srv/pillar
-
-log_file: file:///dev/log
-EOF
-
-umask 077
-cat >/etc/salt/grains <<EOF
-roles:
-  - mariadb-server
-  - gnuviechadmin.gvamysql
-EOF
diff --git a/salt/grains b/salt/grains
new file mode 100644
index 0000000..0cc6494
--- /dev/null
+++ b/salt/grains
@@ -0,0 +1,10 @@
+gnuviechadmin:
+  user: vagrant
+  group: vagrant
+  checkout: /vagrant
+  home: /home/vagrant
+  update_git: False
+roles:
+  - vagrant
+  - mariadb-server
+  - gnuviechadmin.gvamysql
diff --git a/salt/minion b/salt/minion
new file mode 100644
index 0000000..834f627
--- /dev/null
+++ b/salt/minion
@@ -0,0 +1,11 @@
+file_client: local
+
+file_roots:
+  base:
+    - /srv/salt/
+
+pillar_roots:
+  base:
+    - /srv/pillar
+
+log_file: file:///dev/log