# -*- 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개의 머신으로 구성됩니다. 하나는 인터넷에 액세스할 수 있고 다른 하나는 첫 번째 머신에 연결되어 있지만 인터넷 + 웹 서버는 없습니다. 첫 번째 컴퓨터에서는 웹 서버에 액세스할 수 있도록 DNAT를 구성했습니다.
하지만
DNAT가 작동하려면 첫 번째 머신(DNAT가 실행되는 머신)에 이 모듈을 로드해야 합니까? :
nodo1.vm.provision "shell", inline: "sudo modprobe ip_tables",
run: "always"