Vagrant.require_version ">= 2.0.0" PORT = 19022 def provisioned?(vm="default", provider="virtualbox") File.exist?(".vagrant/machines/#{vm}/#{provider}/action_provision") end Vagrant.configure(2) do |config| config.vm.network :private_network, ip: "192.168.56.10" config.vm.network :forwarded_port, guest: PORT, host: PORT config.vm.box = "ubuntu/focal64" config.vm.hostname = "datacoop" config.vm.provider :virtualbox do |v| v.cpus = 4 v.memory = 8192 end config.vm.provision :ansible do |ansible| ansible.compatibility_mode = "2.0" ansible.playbook = "playbook.yml" ansible.ask_vault_pass = true ansible.verbose = "v" # If the VM is already provisioned, we need to use the new port if provisioned? config.ssh.guest_port = PORT ansible.extra_vars = { ansible_port: PORT, from_vagrant: true } else ansible.extra_vars = { from_vagrant: true } end end end