102 lines
3.7 KiB
Plaintext
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
|
|
|