我正在尝试通过流浪汉配置虚拟机,但无法弄清楚当我使用内部交换机时如何使同步文件夹(smb)正常工作。
我使用hyper-v作为管理程序,其中一个限制是无法从vagrant强制执行VM的静态IP。我有一个脚本在客户机器中设置一个静态IPv4,运行provisioning
步。
问题是在配置开始之前已挂载同步文件夹。此时主机网络无法访问,安装失败,vagrant up
以错误结束。
我想到的一个可能的解决方案(但没有工作)是弄清楚VM是否已经配置并在这种情况下启用同步文件夹。我希望插件vagrant-reload
可以帮助我,但同步文件夹不会再次重新评估。
任何能给我一些指示的人吗?
我的机器配置:
我的vagrantfile:
Vagrant.configure(2) do |config|
provisioned = File.exist?(".vagrant/machines/default/hyperv/action_provision")
config.vm.box = "centos/7"
config.vm.network "private_network", bridge: "Vagrant"
config.vm.synced_folder "./shared", "/shared", type: "smb",
disabled: provisioned == false,
smb_host: "10.0.0.3",
smb_username: "vagrant",
smb_password: "vagrant",
mount_options: ["username=vagrant","password=vagrant"]
config.vm.provision "file",
source: "./provisioning",
destination: "/tmp/provisioning"
config.vm.provision "static-ip",
type: "shell",
inline: "/bin/sh /tmp/provisioning/static-ip.sh"
config.vm.provision :reload
config.vm.provider 'hyperv' do |hv|
hv.ip_address_timeout = 240
hv.cpus = 2
hv.memory = "2048"
hv.vmname = "centos"
end
end
请注意:当我使用默认开关或外接开关时,我的工作正常。但是我想通过一个内部交换机来测试具有永远不会连接到互联网的VM的场景。