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

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 a6d6d6f was 8883aa5, checked in by ramon <ramongomez@…>, 9 years ago

#739: Cambios que faltaban en revisión r4874 para configurar el teclado en consola.

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

  • Property mode set to 100644
File size: 5.7 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
16CLIENTMEM = 512
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# Unmcomment 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#/opt/opengnsys/bin/setclientmode ogAdmin ogClient01 1
54#for ((i=2; i<=#{NCLIENTS}; i++)); do
55#    /opt/opengnsys/bin/setclientmode ogClient ogClient0$i
56#done
57echo "New OpenGnsys local URL: https://localhost:#{LOCALWEBPORT}/opengnsys/"
58EOT
59
60# Client 1 OS provisioning script.
61MODELSCRIPT = <<EOT
62# Remove network configuration added by Vagrant.
63sed -i "/VAGRANT/,$ d" /etc/network/interfaces
64echo "After now, use VirtualBox GUI to disable network interface 1 and work with this VM."
65# Leave VM halted.
66sleep 2
67poweroff &
68EOT
69
70Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
71
72  # OpenGnsys Server VM definition.
73  config.vm.define "ogAdministrator", primary: true do |og|
74    # Specific VirtualBox configuration.
75    og.vm.provider "virtualbox" do |vb|
76      # VM name, memory and CPUs.
77      vb.name = "ogAdministrator"
78      vb.memory = SERVERMEM
79      vb.cpus = 1
80      # Get VM disk path
81      line = `VBoxManage list systemproperties | grep "Default machine folder"`
82      vb_machine_folder = line.split(':')[1].strip()
83      second_disk = File.join(vb_machine_folder, vb.name, REPODISK)
84      # Create repo virtual disk, if needed.
85      unless File.exist?(second_disk)
86        vb.customize ['createhd', '--filename', second_disk, '--size', REPOSIZE * 1024]
87      end
88      # Attach repo virtual disk.
89      vb.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', second_disk]
90    end
91    # VM base and host name.
92    og.vm.box = "ubuntu/trusty64"
93    og.vm.hostname = "ogAdministrator"
94    # Network configuration: forward web port and attach new interface to VMs private network.
95    og.vm.network "forwarded_port", guest: 443, host: 8443
96    og.vm.network "private_network", ip: "#{NETPREFIX}10", virtualbox__intnet: true
97    # Disable synced folder.
98    og.vm.synced_folder ".", "/vagrant", disabled: true
99    # Launch provisioning script.
100    og.vm.provision "shell", inline: OGSERVERSCRIPT
101  end
102
103  # Client 1 VM definition.
104  config.vm.define "ogClient01", autostart: false do |v1|
105    v1.vm.box = "ubuntu/trusty64"
106    v1.vm.hostname = "ogClient01"
107    v1.vm.network "private_network", mac: "#{MACPREFIX}01".tr(":",""), type: "dhcp", virtualbox__intnet: true
108    v1.vm.provider "virtualbox" do |vb|
109      vb.name = "ogClient01"
110      vb.memory = CLIENTMEM
111      vb.cpus = 1
112      vb.customize ['modifyvm', :id, '--boot1', 'net', '--boot2', 'disk']
113    end
114    v1.vm.synced_folder ".", "/vagrant", disabled: true
115    v1.vm.provision "shell", inline: MODELSCRIPT
116  end
117
118  # Clonable clients definition.
119  (2..NCLIENTS).each do |i|
120    config.vm.define "ogClient0#{i}", autostart: false do |cl|
121      cl.vm.box = "clink15/pxe"
122      cl.ssh.insert_key = false
123      cl.vm.boot_timeout = 5
124      cl.vm.network "private_network", mac: "#{MACPREFIX}".tr(":","") + "%02d" % "#{i}", type: "dhcp", virtualbox__intnet: true
125      cl.vm.provider "virtualbox" do |vb|
126        vb.name = "ogClient0#{i}"
127        vb.memory = CLIENTMEM
128        vb.cpus = 1
129        vb.customize ['modifyvm', :id, '--boot1', 'net', '--boot2', 'disk']
130        vb.customize ["modifyvm", :id, "--nic1", "none"]
131      end
132    end
133  end
134
135end
136
Note: See TracBrowser for help on using the repository browser.