Vagrant는 Hashcorp에서 개발한 가상머신 관리를 위한 자동화 도구로 Ruby기반의 DSL로 작성할 수 있음.
VAGRANTFILE_API_VERSION = "2"
IMAGE_NAME = "generic/ubuntu2004"
$script = <<SCRIPT
sudo mkdir /root/.ssh
sudo chmod 600 /root/.ssh
sudo cp /vagrant/id_rsa.pub /root/.ssh/authorized_keys
#sudo sed -i 's/dhcp4: .*/dhcp4: no/g' /etc/netplan/01-netcfg.yaml
#sudo sed -i 's/dhcp6: .*/dhcp4: no/g' /etc/netplan/01-netcfg.yaml
#sudo echo ' gateway4: 192.168.77.1' >> /etc/netplan/50-vagrant.yaml
#sudo sed -i 's/^#DNS.*/DNS=8.8.8.8/g' /etc/systemd/resolved.conf
sudo reboot
SCRIPT
$override_disk_size ||= false
$disk_size ||= "30GB"
CLUSTER = {
"node-21" => { :ip => "172.30.1.21", :cpus => 8, :memory => 8192, :script => $script },
"node-22" => { :ip => "172.30.1.22", :cpus => 8, :memory => 8192, :script => $script },
"node-23" => { :ip => "172.30.1.23", :cpus => 8, :memory => 8192, :script => $script },
"node-24" => { :ip => "172.30.1.24", :cpus => 8, :memory => 8192, :script => $script }
}
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
CLUSTER.each_with_index do |(hostname, info), index|
if ($override_disk_size)
unless Vagrant.has_plugin?("vagrant-disksize")
system "vagrant plugin install vagrant-disksize"
end
config.disksize.size = $disk_size
end
config.vm.synced_folder ".", "/vagrant", disabled: false
config.vm.define hostname do |cfg|
cfg.vm.provider :virtualbox do |vb, override|
config.vm.box = IMAGE_NAME
override.vm.network :public_network, bridge: "Intel(R) Ethernet Server Adapter I340-T4 #4", ip: "#{info[:ip]}"
override.vm.hostname = hostname
vb.name = hostname
vb.customize ["modifyvm", :id, "--memory", info[:memory], "--cpus", info[:cpus], "--hwvirtex", "on"]
end # end provider
# inline shell scripts
cfg.vm.provision :shell do |s|
s.inline = info[:script]
end # end inline shell scripts
end # end config
end # end cluster
end
cd assets
VAGRANT_VAGRANTFILE=Vagrantfile-Mgmt vagrant up
VAGRANT_VAGRANTFILE=Vagrantfile-HostCluster vagrant up
VAGRANT_VAGRANTFILE=Vagrantfile-UserCluster1 vagrant up
VAGRANT_VAGRANTFILE=Vagrantfile-HostCluster vagrant destroy -f