source: installer/vagrant/Vagrantfile-trunk-vbox @ dda6ab9

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 dda6ab9 was b32e00f, checked in by ramon <ramongomez@…>, 8 years ago

#739: Corregir errata en instalación de servidor basado en rama trunk con versión 1.0.x; actualizar algunos mensajes.

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

  • Property mode set to 100644
File size: 5.8 KB
Line 
1# Vagrantfile to install OpenGnsys Trunk 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# Mount repository disk.
26test -n "$(blkid /dev/sdb1 | grep ext4)" && exit
27echo -e "o\nn\np\n\n\n\nw" | fdisk /dev/sdb
28mkfs -t ext4 /dev/sdb1
29mkdir -p /opt/opengnsys/images
30echo "/dev/sdb1  /opt/opengnsys/images  ext4  defaults  0  0" >> /etc/fstab
31mount -a
32# Install OpenGnsys and change server address.
33wget -q http://opengnsys.es/svn/trunk/installer/opengnsys_installer.sh -O - | bash
34echo y | sudo /opt/opengnsys/bin/setserveraddr eth1
35# Insert DHCP data.
36for ((i=#{NCLIENTS}; i>0; i--)); do
37    sed -i "/^}$/ i host ogClient0${i} { hardware ethernet #{MACPREFIX}0${i}; fixed-address #{NETPREFIX}1${i}; }" /etc/dhcp/dhcpd.conf
38done
39service isc-dhcp-server restart
40# Set language.
41export LANG="#{LANGUAGE}.UTF-8"
42echo "LANG=\"$LANG\"" > /etc/default/locale
43echo "LANG=\"$LANG\"" >> /etc/environment
44locale-gen --lang #{LANGUAGE}
45sed -i "s/XKBLAYOUT=.*/XKBLAYOUT=\"${LANG%_*}\"/" /etc/default/keyboard
46dpkg-reconfigure -fnoninteractive console-setup
47# Comment out next lines for automatic data insertion.
48#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"
49#for ((i=1; i<=#{NCLIENTS}; i++)); do
50#    SQL="$SQL ('ogClient0$i', '#{NETPREFIX}1$i', REPLACE('#{MACPREFIX}0$i',':',''), 1, 1, 0, 0, 0, 0, '#{NETPREFIX}1', '255.255.255.0', '00unknown', 'eth0', 'generic', 'fotoordenador.gif'),"
51#done
52#mysql -u usuog -ppassusuog -D ogAdmBD -e "${SQL%,}"
53#if ! grep -q "1\.0" /opt/opengnsys/doc/VERSION.txt; then AUX=1; fi
54#/opt/opengnsys/bin/setclientmode ogAdmin ogClient01 $AUX
55#for ((i=2; i<=#{NCLIENTS}; i++)); do
56#    /opt/opengnsys/bin/setclientmode ogClient ogClient0$i $AUX
57#done
58echo "New OpenGnsys local URL: https://localhost:#{LOCALWEBPORT}/opengnsys/"
59EOT
60
61# Client 1 OS provisioning script.
62MODELSCRIPT = <<EOT
63# Remove network configuration added by Vagrant.
64sed -i "/VAGRANT/,$ d" /etc/network/interfaces
65echo "After now, use VirtualBox GUI to disable network interface 1 and work with this VM."
66# Leave VM halted.
67sleep 2
68poweroff &
69EOT
70
71Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
72
73  # OpenGnsys Server VM definition.
74  config.vm.define "ogAdministrator", primary: true do |og|
75    # Specific VirtualBox configuration.
76    og.vm.provider "virtualbox" do |vb|
77      # VM name, memory and CPUs.
78      vb.name = "ogAdministrator"
79      vb.memory = SERVERMEM
80      vb.cpus = 1
81      # Get VM disk path
82      line = `VBoxManage list systemproperties | grep "Default machine folder"`
83      vb_machine_folder = line.split(':')[1].strip()
84      second_disk = File.join(vb_machine_folder, vb.name, REPODISK)
85      # Create repo virtual disk, if needed.
86      unless File.exist?(second_disk)
87        vb.customize ['createhd', '--filename', second_disk, '--size', REPOSIZE * 1024]
88      end
89      # Attach repo virtual disk.
90      vb.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', second_disk]
91    end
92    # VM base and host name.
93    og.vm.box = "ubuntu/trusty64"
94    og.vm.hostname = "ogAdministrator"
95    # Network configuration: forward web port and attach new interface to VMs private network.
96    og.vm.network "forwarded_port", guest: 443, host: 8443
97    og.vm.network "private_network", ip: "#{NETPREFIX}10", virtualbox__intnet: true
98    # Comment out to disable synced folder.
99    #og.vm.synced_folder ".", "/vagrant", disabled: true
100    # Launch provisioning script.
101    og.vm.provision "shell", inline: OGSERVERSCRIPT
102  end
103
104  # Client 1 VM definition.
105  config.vm.define "ogClient01", autostart: false do |v1|
106    v1.vm.box = "ubuntu/trusty64"
107    v1.vm.hostname = "ogClient01"
108    v1.vm.network "private_network", mac: "#{MACPREFIX}01".tr(":",""), type: "dhcp", virtualbox__intnet: true
109    v1.vm.provider "virtualbox" do |vb|
110      vb.name = "ogClient01"
111      vb.memory = CLIENTMEM
112      vb.cpus = 1
113      vb.customize ['modifyvm', :id, '--boot1', 'net', '--boot2', 'disk']
114    end
115    v1.vm.synced_folder ".", "/vagrant", disabled: true
116    v1.vm.provision "shell", inline: MODELSCRIPT
117  end
118
119  # Clonable clients definition.
120  (2..NCLIENTS).each do |i|
121    config.vm.define "ogClient0#{i}", autostart: false do |cl|
122      cl.vm.box = "clink15/pxe"
123      cl.ssh.insert_key = false
124      cl.vm.boot_timeout = 5
125      cl.vm.network "private_network", mac: "#{MACPREFIX}".tr(":","") + "%02d" % "#{i}", type: "dhcp", virtualbox__intnet: true
126      cl.vm.provider "virtualbox" do |vb|
127        vb.name = "ogClient0#{i}"
128        vb.memory = CLIENTMEM
129        vb.cpus = 1
130        vb.customize ['modifyvm', :id, '--boot1', 'net', '--boot2', 'disk']
131        vb.customize ["modifyvm", :id, "--nic1", "none"]
132      end
133    end
134  end
135
136end
137
Note: See TracBrowser for help on using the repository browser.