opengnsys/installer/vagrant/Vagrantfile-1.1-vbox

102 lines
3.7 KiB
Plaintext

# Vagrantfile to install OpenGnsys 1.1 virtual environment using VirtualBox provider.
VAGRANTFILE_API_VERSION = "2"
# VM provider: Oracle VM VirtualBox.
ENV['VAGRANT_DEFAULT_PROVIDER'] = "virtualbox"
# Language.
ENV['LC_ALL'] = "es_ES.UTF-8"
# Repository virtual disk: file and size (GB).
REPODISK = "repo.vdi"
REPOSIZE = 50
# Amount of memory for server and clients (MB)
SERVERMEM = 1024
CLIENTMEM = 512
# Clients MAC address prefix.
MACPREFIX = "08:00:27:0E:65:"
NETPREFIX = "192.168.50."
# Local port to access OpenGnsys Server.
LOCALWEBPORT = 8443
# OpenGnsys Server provisioning script: prepare repo disk, install OpenGnsys, change default interface, configure DHCP server.
OGSERVERSCRIPT = <<EOT
test -n "$(blkid /dev/sdb1 | grep ext4)" && exit
echo -e "o\nn\np\n\n\n\nw" | fdisk /dev/sdb
mkfs -t ext4 /dev/sdb1
mkdir -p /opt/opengnsys/images
echo "/dev/sdb1 /opt/opengnsys/images ext4 defaults 0 0" >> /etc/fstab
mount -a
wget -q http://opengnsys.es/svn/branches/version1.1/installer/opengnsys_installer.sh -O - | bash
echo y | sudo /opt/opengnsys/bin/setserveraddr eth1
echo "New OpenGnsys local URL: https://localhost:#{LOCALWEBPORT}/opengnsys/"
sed -i '/^}/d' /etc/dhcp/dhcpd.conf
echo "
host virt1 { hardware ethernet #{MACPREFIX}01; fixed-address #{NETPREFIX}101; }
host virt2 { hardware ethernet #{MACPREFIX}02; fixed-address #{NETPREFIX}102; }
}" >> /etc/dhcp/dhcpd.conf
service isc-dhcp-server restart
locale-gen --lang es_ES
EOT
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# OpenGnsys Server VM definition.
config.vm.define "opengnsys" do |og|
# Specific VirtualBox configuration.
og.vm.provider "virtualbox" do |vb|
# VM name, memory and CPUs.
vb.name = "opengnsys"
vb.memory = SERVERMEM
vb.cpus = 1
# Get VM disk path
line = `VBoxManage list systemproperties | grep "Default machine folder"`
vb_machine_folder = line.split(':')[1].strip()
second_disk = File.join(vb_machine_folder, vb.name, REPODISK)
# Create repo virtual disk, if needed.
unless File.exist?(second_disk)
vb.customize ['createhd', '--filename', second_disk, '--size', REPOSIZE * 1024]
end
# Attach repo virtual disk.
vb.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', second_disk]
end
# VM base and host name.
og.vm.box = "ubuntu/trusty64"
og.vm.hostname = "opengnsys"
# Network configuration: forward web port and attach new interface to VMs private network.
og.vm.network "forwarded_port", guest: 443, host: 8443
og.vm.network "private_network", ip: "#{NETPREFIX}10", virtualbox__intnet: true
# Launch provisioning script.
og.vm.provision "shell", inline: OGSERVERSCRIPT
end
# Client 1 VM definition.
config.vm.define "virt1" do |v1|
v1.vm.box = "ubuntu/trusty64"
v1.vm.hostname = "virt1"
v1.vm.network "private_network", mac: "#{MACPREFIX}01".tr(":",""), type: "dhcp", virtualbox__intnet: true
v1.vm.provider "virtualbox" do |vb|
vb.name = "virt1"
vb.memory = CLIENTMEM
vb.cpus = 1
vb.customize ['modifyvm', :id, '--boot1', 'net', '--boot2', 'disk']
end
end
# Client 2 VM definition.
config.vm.define "virt2" do |v2|
v2.vm.box = "clink15/pxe"
v2.ssh.insert_key = false
v2.vm.boot_timeout = 5
v2.vm.network "private_network", mac: "#{MACPREFIX}02".tr(":",""), type: "dhcp", virtualbox__intnet: true
v2.vm.provider "virtualbox" do |vb|
vb.name = "virt2"
vb.memory = CLIENTMEM
vb.cpus = 1
vb.customize ['modifyvm', :id, '--boot1', 'net', '--boot2', 'disk']
vb.customize ["modifyvm", :id, "--nic1", "none"]
end
end
end