# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define :nodo1 do |nodo1|
nodo1.vm.box = "debian/buster64"
nodo1.vm.hostname = "nodo1"
nodo1.vm.network :public_network,:bridge=>"wlp3s0"
nodo1.vm.network :private_network, ip: "10.1.1.101"
nodo1.vm.provision "shell", inline: "sudo ip route del default",
run: "always"
nodo1.vm.provision "shell", inline: "sudo ip route add default via 192.168.1.1",
run: "always"
nodo1.vm.provision "shell", inline: "sudo sysctl -w net.ipv4.ip_forward=1",
run: "always"
nodo1.vm.provision "shell", inline: "sudo modprobe ip_tables",
run: "always"
nodo1.vm.provision "shell", inline: "iptables -t nat -A PREROUTING -p tcp -d 192.168.1.114 --dport 8080 -j DNAT --to-destination 10.1.1.102:80",
run: "always"
end
config.vm.define :nodo2 do |nodo2|
nodo2.vm.box = "debian/buster64"
nodo2.vm.hostname = "nodo2"
nodo2.vm.network :private_network, ip: "10.1.1.102"
nodo2.vm.provision "shell", inline: "sudo apt update",
run: "always"
nodo2.vm.provision "shell", inline: "sudo apt install apache2",
run: "always"
end
end
这些是我的 Vagrantfile 的内容。但整个代码对于我的问题并不重要(我只是想让你看到整个代码,这样可能会对你有所帮助),只是这些代码行:
nodo2.vm.provision "shell", inline: "sudo apt update",
run: "always"
nodo2.vm.provision "shell", inline: "sudo apt install apache2",
run: "always"
如果我执行 a vagrant up
,除了那些行之外,一切都完美。问题是,当它尝试安装 apache 时,程序会要求您写入y
来完成安装,并且它会启动计算机,但会出现错误,提示安装过程已中止。
我的问题是
我怎样才能使这个过程完全自动化并回答“是”安装?
编辑
我还有另一个与我的代码直接相关的问题。该场景由 2 台机器组成,其中一台可以访问互联网,另一台连接到第一台机器,但没有互联网 + Web 服务器。在第一台机器中,我配置 DNAT,以便可以访问 Web 服务器。
但
是否有必要在第一台机器(执行 DNAT 的机器)上加载此模块才能使 DNAT 工作?:
nodo1.vm.provision "shell", inline: "sudo modprobe ip_tables",
run: "always"