# Vagrantfile for the bootstrap_windows_env integration test. # # Driven by `go run ./test/integration` on a Windows host with Hyper-V enabled # and the `vagrant` CLI installed. All tunables are read from environment # variables so the Go driver can override them without editing this file. # # Required prerequisites on the host: # - Windows 10/11 Pro/Enterprise or Windows Server with Hyper-V role enabled. # - HashiCorp Vagrant >= 2.4 in PATH. # - Host user is a member of the Hyper-V Administrators group. # # The default box `gusztavvargadr/windows-11` ships with WinRM enabled and the # `vagrant` / `vagrant` credentials hard-coded below. Vagrant.configure("2") do |config| config.vm.box = ENV.fetch("BOOTSTRAP_BOX", "gusztavvargadr/windows-11") config.vm.box_version = ENV["BOOTSTRAP_BOX_VERSION"] unless ENV["BOOTSTRAP_BOX_VERSION"].to_s.empty? config.vm.hostname = ENV.fetch("BOOTSTRAP_HOSTNAME", "bootstrap-it") config.vm.communicator = "winrm" config.vm.guest = :windows config.vm.boot_timeout = Integer(ENV.fetch("BOOTSTRAP_BOOT_TIMEOUT", "1800")) config.winrm.username = ENV.fetch("BOOTSTRAP_WINRM_USER", "vagrant") config.winrm.password = ENV.fetch("BOOTSTRAP_WINRM_PASS", "vagrant") config.winrm.timeout = Integer(ENV.fetch("BOOTSTRAP_WINRM_TIMEOUT", "3600")) config.winrm.retry_limit = Integer(ENV.fetch("BOOTSTRAP_WINRM_RETRIES", "30")) # Hyper-V cannot use the default rsync/SMB sync without prompting for # credentials; the Go driver pushes the built binary in via `vagrant upload` # instead, so disable the default synced folder. config.vm.synced_folder ".", "/vagrant", disabled: true if ENV["VAGRANT_HYPERV_VIRTUAL_SWITCH"] config.vm.network "public_network", bridge: ENV["VAGRANT_HYPERV_VIRTUAL_SWITCH"] end config.vm.provider "hyperv" do |hv| hv.cpus = Integer(ENV.fetch("BOOTSTRAP_CPUS", "8")) hv.memory = Integer(ENV.fetch("BOOTSTRAP_MEMORY", "16384")) hv.maxmemory = Integer(ENV.fetch("BOOTSTRAP_MAX_MEMORY", "16384")) hv.enable_virtualization_extensions = true hv.linked_clone = true hv.vm_integration_services = { guest_service_interface: true, heartbeat: true, shutdown: true, time_synchronization: true, vss: true, } end end