source: installer/vagrant/Vagrantfile-trunk-vbox @ 1c9ef24

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 1c9ef24 was b658596, checked in by ramon <ramongomez@…>, 9 years ago

#739: Corregir errata en URL del instalador del entorno trunk.

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

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