@joaquin Virtualbox without HyperV on Win 10 Home with SMB mount. Sure. You can find the vagrantfile below (changed a few things, but you may want to customize it to make it run on your side)
# -*- mode: ruby -*-
# vi: set ft=ruby :
## PLEASE CHANGE THESE ACCORDING TO YOUR OWN NEED
BOX_BASE = "bento/ubuntu-20.04"
# Custom Name for the Vagrant box
BOX_NAME = "tc-ubuntu-workspace"
# amount of RAM for Vagrant box
BOX_RAM_MB = "6144"
# number of CPUs for Vagrant box
BOX_CPU_COUNT = "4"
# Private IP of the BOX
BOX_IP_PRIVATE = "192.168.30.10"
# Hostname of the BOX
HOSTNAME = "host.my"
# Your Email
EMAIL = "xyz@example.com"
# Your Email
FULL_NAME = "My Name"
# SMB USERNAME
SMB_USERNAME = "xyz@example.com"
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
config.vm.hostname = HOSTNAME
config.vm.box = BOX_BASE
config.ssh.username = "vagrant"
config.vm.network "forwarded_port", guest: 22, host: 2222, host_ip: "127.0.0.1", id: 'ssh'
# Create a private network, which allows host-only access to the machine using a specific IP.
config.vm.network "private_network", ip: BOX_IP_PRIVATE
config.vm.box_check_update = true
if Vagrant::Util::Platform.windows? then
config.vm.synced_folder "../workspace", "/opt/workspace", type: "smb", smb_username: SMB_USERNAME, mount_options: ["mfsymlinks"], owner: "vagrant", group: "vagrant"
else
config.vm.synced_folder "../workspace", "/opt/workspace", owner: "vagrant", group: "vagrant"
end
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
config.vm.provider "virtualbox" do |vb|
vb.name = BOX_NAME
# Display the VirtualBox GUI when booting the machine
# vb.gui = true
vb.customize ["modifyvm", :id, "--cableconnected1", "on"]
vb.customize ["modifyvm", :id, "--cpus", BOX_CPU_COUNT]
vb.memory = BOX_RAM_MB
vb.customize ["modifyvm", :id, "--accelerate3d", "off"]
# vb.customize ["modifyvm", :id, "--vram", "128"]
# integration with host
vb.customize ["modifyvm", :id, "--clipboard", "bidirectional"]
# vb.customize ["modifyvm", :id, "--draganddrop", "bidirectional"]
# vb.customize ["modifyvm", :id, "--audio", "dsound"]
# vb.customize ["modifyvm", :id, "--audioout", "on"]
# vb.customize ["modifyvm", :id, "--audioin", "on"]
# vb.customize ["modifyvm", :id, "--graphicscontroller", "vmsvga"]
# Default host uses a USB mouse instead of PS2
#vb.customize ["modifyvm", :id, "--mouse", "usb"]
# Enable the use of hardware virtualization extensions (Intel VT-x or AMD-V) in the processor of your host system
# vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
# it is also required if you want to use more than one virtual CPU in a VM.
# vb.customize ["modifyvm", :id, "--ioapic", "on"]
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant","1"]
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/opt/workspace","1"]
end
# PROVISION SHELL SCRIPTS
# IMPORT SSH KEYS
config.vm.provision "file", source: "../my-ssh-keys/id_ed25519.pub", destination: "/home/vagrant/.ssh/id_ed25519.pub"
config.vm.provision "file", source: "../my-ssh-keys/id_ed25519", destination: "/home/vagrant/.ssh/id_ed25519"
config.vm.provision "shell", inline: "cat /home/vagrant/.ssh/id_ed25519.pub >> /home/vagrant/.ssh/authorized_keys"
# UPDATE OS, SETUP GUI, INSTALL ALL THE SOFTWARE AND TOOLS REQUIRED
# config.vm.provision "shell", path: "./scripts/initial-scripts.sh"
# config.vm.provision "shell", path: "./scripts/software-setup.sh"
# config.vm.provision "shell", path: "./scripts/docker.sh"
# config.vm.provision "shell", path: "./scripts/velero.sh"
# config.vm.provision "shell", path: "./scripts/terraform.sh"
# config.vm.provision "shell", path: "./scripts/postinstall.sh", env: {"EMAIL" => EMAIL, "FULL_NAME" => FULL_NAME}
# TRIGGERS
config.trigger.after [:provision] do |t|
t.name = "Reboot after provisioning"
t.run = { :inline => "vagrant reload" }
end
end