# -*- 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"
を実行すると、そのvagrant up
行を除くすべてが完璧です。問題は、Apacheをインストールしようとすると、プログラムがインストールy
を完了するために書き込みを要求してコンピュータを起動しますが、インストールプロセスが中断されたというエラーが発生することです。
私の質問は
このプロセスを完全に自動化し、インストールについて「はい」と答えるにはどうすればよいですか?
編集する
私のコードに直接関連する別の質問があります。シナリオは2つのマシンで構成されています。 1つはインターネットにアクセスでき、もう1つは最初のマシンに接続されていますが、インターネット+ Webサーバーはありません。最初のコンピューターでは、WebサーバーにアクセスできるようにDNATを構成しました。
しかし、
DNATを動作させるには、最初のマシン(DNATが実行されているマシン)にこのモジュールをロードする必要がありますか? :
nodo1.vm.provision "shell", inline: "sudo modprobe ip_tables",
run: "always"