source: installer/vagrant/Vagrantfile-1.0.6b-vbox @ 9215580

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 9215580 was ec92362, checked in by ramon <ramongomez@…>, 7 years ago

#730: Integrar versión OpenGnsys 1.1.0 en rama principal.

git-svn-id: https://opengnsys.es/svn/branches/version1.1@5606 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 6.5 KB
Line 
1# Vagrantfile to install old OpenGnSys 1.0.6b virtual environment using VirtualBox provider.
2
3VAGRANTFILE_API_VERSION = "2"
4# VM provider: Oracle VM VirtualBox.
5ENV['VAGRANT_DEFAULT_PROVIDER'] = "virtualbox"
6# Language (accepted values: es_ES, ca_ES, en_GB).
7LANGUAGE = "es_ES"
8ENV['LC_ALL'] = LANGUAGE + ".UTF-8"
9# Number of OpenGnsys clients (accepted values: from 2 to 9).
10NCLIENTS = 4
11# Repository virtual disk: file and size (GB).
12REPODISK = "ogRepo.vdi"
13REPOSIZE = 50
14# Amount of memory for server and clients (MB)
15SERVERMEM = 1024        # Minimum: 512
16CLIENTMEM = 512         # Minimum: 256
17# Clients MAC address prefix.
18MACPREFIX = "08:00:27:0E:65"
19NETPREFIX = "192.168.2"
20# Local port to access OpenGnsys Server.
21LOCALWEBPORT = 8443
22
23# OpenGnsys Server provisioning script: prepare repo disk, install OpenGnsys, change default interface, configure DHCP server.
24OGSERVERSCRIPT = <<EOT
25# Exit if OpenGnsys is installed.
26[ -f /opt/opengnsys/doc/VERSION.txt ] && echo "Cannot provision, OpenGnsys is already installed." && exit 1
27# Create repository disk using LVM, if necesary.
28if [ -z "$(blkid /dev/mapper/og-images | grep ext4)" ]; then
29    if ! which vgcreate &>/dev/null; then
30        apt-get update
31        apt-get install -y lvm2
32    fi
33    pvcreate /dev/sdb
34    vgcreate og /dev/sdb
35    vgchange -ay
36    lvcreate -ay -n images -l 100%VG og
37    mkfs -t ext4 /dev/mapper/og-images
38    mkdir -p /opt/opengnsys/images
39    echo "/dev/mapper/og-images  /opt/opengnsys/images  ext4  defaults  0  0" >> /etc/fstab
40    mount -a
41fi
42# Install OpenGnsys and change server address.
43wget -q https://opengnsys.es/svn/tags/opengnsys-1.0.6b/installer/opengnsys_installer.sh -O - | bash || exit $?
44mv /opt/opengnsys/log/bash.log /opt/opengnsys/log/opengnsys_installer.log
45echo y | /opt/opengnsys/bin/setserveraddr eth1
46# Insert DHCP data.
47for ((i=#{NCLIENTS+10}; i>10; i--)); do
48    sed -i "/^}$/ i host pc${i} { hardware ethernet #{MACPREFIX}:${i}; fixed-address #{NETPREFIX}.${i}; }" /etc/dhcp/dhcpd.conf
49done
50service isc-dhcp-server restart
51# Set language.
52export LANG="#{LANGUAGE}.UTF-8"
53echo "LANG=\"$LANG\"" > /etc/default/locale
54echo "LANG=\"$LANG\"" >> /etc/environment
55locale-gen --lang #{LANGUAGE}
56sed -i "s/XKBLAYOUT=.*/XKBLAYOUT=\"${LANG%_*}\"/" /etc/default/keyboard
57dpkg-reconfigure -fnoninteractive console-setup
58# Comment out next lines for automatic data insertion.
59#SQL="INSERT INTO aulas (nombreaula, idcentro, urlfoto, grupoid, ubicacion, puestos, modomul, ipmul, pormul, velmul, router, netmask, dns, proxy, modp2p, timep2p) VALUES  ('Aula virtual', 1, 'aula.jpg', 0, 'Despliegue virtual con Vagrant.', 5, 2, '239.194.2.11', 9000, 70, '#{NETPREFIX}.1', '255.255.255.0', '', '', 'peer', 30); INSERT INTO ordenadores (nombreordenador, ip, mac, idaula, idrepositorio, idperfilhard, idmenu, idproautoexec, grupoid, router, mascara, arranque, netiface, netdriver, fotoord) VALUES"
60#for ((i=11; i<=#{NCLIENTS+10}; i++)); do
61#    SQL="$SQL ('pc$i', '#{NETPREFIX}.$i', REPLACE('#{MACPREFIX}$i',':',''), 1, 1, 0, 0, 0, 0, '#{NETPREFIX}.1', '255.255.255.0', '00unknown', 'eth0', 'generic', 'fotoordenador.gif'),"
62#done
63#mysql -u usuog -ppassusuog -D ogAdmBD -e "${SQL%,}"
64#if ! grep -q "1\.0" /opt/opengnsys/doc/VERSION.txt; then AUX=1; fi
65#/opt/opengnsys/bin/setclientmode ogAdmin pc11 $AUX
66#for ((i=12; i<=#{NCLIENTS+10}; i++)); do
67#    /opt/opengnsys/bin/setclientmode ogClient pc$i $AUX
68#done
69echo "New OpenGnsys local URL: https://localhost:#{LOCALWEBPORT}/opengnsys/"
70EOT
71
72# Client 1 OS provisioning script.
73MODELSCRIPT = <<EOT
74# Remove network configuration added by Vagrant.
75sed -i "/VAGRANT/,$ d" /etc/network/interfaces
76echo "After now, use VirtualBox GUI to disable network interface 1 and work with this VM."
77# Leave VM halted.
78sleep 2
79poweroff &
80EOT
81
82Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
83
84  # OpenGnsys Server VM definition.
85  config.vm.define "ogAdministrator", primary: true do |og|
86    # Specific VirtualBox configuration.
87    og.vm.provider "virtualbox" do |vb|
88      # VM name, memory and CPUs.
89      vb.name = "ogAdministrator"
90      vb.memory = SERVERMEM
91      vb.cpus = 1
92      # 2nd virtual disk path (current dir on Windows, VM dir on other OSes)
93      if Vagrant::Util::Platform.windows? then
94        second_disk = File.join(".", REPODISK)
95      else
96        line = `VBoxManage list systemproperties`.match("Default machine folder.*")[0]
97        vb_machine_folder = line.split(':')[1].strip()
98        second_disk = File.join(vb_machine_folder, vb.name, REPODISK)
99      end
100      # Create repo virtual disk, if needed.
101      unless File.exist?(second_disk)
102        vb.customize ['createhd', '--filename', second_disk, '--size', REPOSIZE * 1024]
103      end
104      # Attach repo virtual disk.
105      vb.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', second_disk]
106    end
107    # VM base and host name.
108    og.vm.box = "ubuntu/trusty64"
109    og.vm.hostname = "ogAdministrator"
110    # Network configuration: forward web port and attach new interface to VMs private network.
111    og.vm.network "forwarded_port", guest: 443, host: LOCALWEBPORT, host_ip: "127.0.0.1"
112    og.vm.network "private_network", mac: "#{MACPREFIX}10".tr(":",""), ip: "#{NETPREFIX}.10", virtualbox__intnet: true
113    # Comment out to disable synced folder.
114    #og.vm.synced_folder ".", "/vagrant", disabled: true
115    # Launch provisioning script.
116    og.vm.provision "shell", inline: OGSERVERSCRIPT
117  end
118
119  # Client 1 VM definition.
120  config.vm.define "pc11", autostart: false do |v1|
121    v1.vm.box = "ubuntu/trusty64"
122    v1.vm.hostname = "pc11"
123    v1.vm.network "private_network", mac: "#{MACPREFIX}11".tr(":",""), type: "dhcp", virtualbox__intnet: true
124    v1.vm.provider "virtualbox" do |vb|
125      vb.name = "pc11"
126      vb.memory = CLIENTMEM
127      vb.cpus = 1
128      vb.customize ['modifyvm', :id, '--boot1', 'net', '--boot2', 'disk']
129    end
130    v1.vm.synced_folder ".", "/vagrant", disabled: true
131    v1.vm.provision "shell", inline: MODELSCRIPT
132  end
133
134  # Clonable clients definition.
135  (2..NCLIENTS).each do |i|
136    config.vm.define "pc#{i+10}", autostart: false do |cl|
137      cl.vm.box = "clink15/pxe"
138      cl.ssh.insert_key = false
139      cl.vm.boot_timeout = 5
140      cl.vm.network "private_network", mac: "#{MACPREFIX}${i+10}".tr(":",""), type: "dhcp", virtualbox__intnet: true
141      cl.vm.provider "virtualbox" do |vb|
142        vb.name = "pc#{i+10}"
143        vb.memory = CLIENTMEM
144        vb.cpus = 1
145        vb.customize ['modifyvm', :id, '--boot1', 'net', '--boot2', 'disk']
146        vb.customize ["modifyvm", :id, "--nic1", "none"]
147      end
148    end
149  end
150
151end
152
Note: See TracBrowser for help on using the repository browser.