source: installer/vagrant/Vagrantfile-esxi @ 7bb39840

configure-oglivelgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacion
Last change on this file since 7bb39840 was 7bb39840, checked in by Natalia Serrano <natalia.serrano@…>, 17 months ago

refs #133 capitalise MAC addr

  • Property mode set to 100644
File size: 6.6 KB
Line 
1VAGRANTFILE_API_VERSION = "2"
2# VM provider: Oracle VM VirtualBox.
3ENV['VAGRANT_DEFAULT_PROVIDER'] = "vmware_esxi"
4# OpenGnsys version and OGAgent version.
5BRANCH=ENV['BRANCH'] || "main"
6BRANCH_EXTRA=ENV['BRANCH_EXTRA'] || BRANCH
7# OGAgent version.
8OGAGENTVERSION="1.1.2"
9# Language (accepted values: es_ES, ca_ES, en_GB).
10LANGUAGE = "es_ES"
11ENV['LC_ALL'] = LANGUAGE + ".UTF-8"
12# Number of OpenGnsys clients (accepted values: from 2 to 9).
13NCLIENTS = ENV['NUMBER_OF_CLIENTS']|| 4
14NCLIENTS = NCLIENTS.to_i
15# Repository virtual disk: file and size (GB).
16REPODISK = "ogRepo.vdi"
17REPOSIZE = 50
18# Amount of memory for server and clients (MB)
19SERVERMEM = 2048        # Minimum: 512
20CLIENTMEM = 512         # Minimum: 256
21# Prefixes for MAC and IP addresses.
22MACPREFIX = ENV['OGN_MAC_PREFIX'] || '00:50:56:aa:aa'
23NETPREFIX = ENV['OGN_NET_PREFIX'] || "192.168.2"
24DHCPNET   = ENV['DHCPNET'] || "192.168.2.0"
25# OpenGnsys Server IP address.
26SERVERIP = "#{NETPREFIX}.10"
27# Local port to access OpenGnsys Server.
28LOCALWEBPORT = 8443
29# ESXI Password
30ESXIPASSWORD = ENV['ESXI_PASSWORD'] || 'prompt:'
31
32#Gitea credentials
33GITEA_TOKEN = ENV['GITEA_TOKEN']
34GITEA_USER = ENV['GITEA_USER'] || 'unizar'
35SSH_GIT_KEY_PASS = ENV['SSH_GIT_KEY_PASS'] || ''
36
37# OpenGnsys Server provisioning script: prepare repo disk, install OpenGnsys, change default interface, configure DHCP server.
38OGSERVERSCRIPT = <<EOT
39
40set -eu
41
42# Fix problem with gitea host
43grep -q '^150\.214\.58\.246' /etc/hosts || echo "150.214.58.246 ognproject.evlt.uma.es" >> /etc/hosts
44
45echo Setting up SSH config and agent
46mkdir -p /root/.ssh/
47cp /vagrant/config/id_rsa /root/.ssh/id_rsa
48chown root:root /root/.ssh/id_rsa
49chmod 0400 /root/.ssh/id_rsa
50cp /vagrant/config/ssh_config /root/.ssh/config
51chown root:root /root/.ssh/config
52chmod 0400 /root/.ssh/config
53cp /vagrant/config/ask_pass.sh /root/ask_pass.sh
54chmod 755 /root/ask_pass.sh
55
56eval `ssh-agent`
57export DISPLAY=:0
58export SSH_ASKPASS=/root/ask_pass.sh
59ssh-add /root/.ssh/id_rsa <<< $SSH_GIT_KEY_PASS
60
61
62echo Setting up language and locales
63export LANG="#{LANGUAGE}.UTF-8"
64echo "LANG=\\\"$LANG\\\"" > /etc/default/locale
65echo "LANG=\\\"$LANG\\\"" >> /etc/environment
66locale-gen --lang #{LANGUAGE}
67sed -i "s/XKBLAYOUT=.*/XKBLAYOUT=\\\"${LANG%_*}\\\"/" /etc/default/keyboard
68dpkg-reconfigure -fnoninteractive console-setup
69
70
71# Exit if OpenGnsys is installed.
72[ -f /opt/opengnsys/doc/VERSION.json ] && echo "Cannot provision, OpenGnsys is already installed." && exit 1
73
74
75echo Creating a repository disk
76if [ -z "$(blkid /dev/mapper/og-images | grep ext4)" ]; then
77    pvcreate /dev/sdb
78    vgcreate og /dev/sdb
79    vgchange -ay
80    lvcreate -ay -n images -l 100%VG og
81    mkfs -t ext4 /dev/mapper/og-images
82    mkdir -p /opt/opengnsys/images
83    echo "/dev/mapper/og-images  /opt/opengnsys/images  ext4  defaults  0  0" >> /etc/fstab
84    mount -a
85fi
86
87
88if [ -f /etc/netplan/01-eth1.yaml ]; then
89    echo "Network configured, skipping"
90else
91    echo "Configuring eth1"
92    sed -i "s/##ADDRESS##/${NETPREFIX}.1/g" /tmp/01-eth1.yaml
93    mv /tmp/01-eth1.yaml /etc/netplan
94    chown root:root /etc/netplan/01-eth1.yaml
95    netplan apply
96    sleep 1
97fi
98
99
100# Download installer
101echo Downloading https://ognproject.evlt.uma.es/gitea/opengnsys/opengnsys/raw/branch/${BRANCH}/installer/opengnsys_installer_devel_esxi.sh
102curl --show-error --fail --insecure --location --output opengnsys_installer_devel_esxi.sh https://$GITEA_USER:$GITEA_TOKEN@ognproject.evlt.uma.es/gitea/opengnsys/opengnsys/raw/branch/${BRANCH}/installer/opengnsys_installer_devel_esxi.sh
103chmod 755 opengnsys_installer_devel_esxi.sh && ./opengnsys_installer_devel_esxi.sh $BRANCH
104
105[ -e /opt/opengnsys/log/bash.log ] && mv /opt/opengnsys/log/bash.log /opt/opengnsys/log/opengnsys_installer.log
106
107echo y | /opt/opengnsys/bin/setserveraddr $(ip -o link show | tail -1 | cut -d: -f2)
108
109# Insert DHCP data.
110sed -i "/^}$/ i host modelo { hardware ethernet #{MACPREFIX}:FF; fixed-address #{NETPREFIX}.199; }" /etc/dhcp/dhcpd.conf
111for ((i=#{NCLIENTS+10}; i>10; i--)); do
112    sed -i "/^}$/ i host pc${i} { hardware ethernet #{MACPREFIX}:${i}; fixed-address #{NETPREFIX}.${i}; }" /etc/dhcp/dhcpd.conf
113done
114service isc-dhcp-server restart
115
116echo Creating an aula and some clients
117SQL="INSERT INTO aulas (nombreaula, idcentro, urlfoto, grupoid, ubicacion, puestos, modomul, ipmul, pormul, velmul, router, netmask, ntp, dns, proxy, modp2p, timep2p)"\
118"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); "\
119"INSERT INTO ordenadores (nombreordenador, ip, mac, idaula, idrepositorio, idperfilhard, idmenu, idproautoexec, grupoid, router, mascara, arranque, netiface, netdriver, fotoord) VALUES "\
120"('modelo', '#{NETPREFIX}.199', REPLACE('#{MACPREFIX}FF',':',''), 1, 1, 0, 0, 0, 0, '#{NETPREFIX}.1', '255.255.255.0', '00unknown', 'eth0', 'generic', 'fotoordenador.gif'),"
121for ((i=11; i<=#{NCLIENTS+10}; i++)); do
122    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'),"
123done
124mysql -u usuog -ppassusuog -D ogAdmBD -e "${SQL%,}"
125/opt/opengnsys/bin/setclientmode ogLiveAdmin modelo PERM
126/opt/opengnsys/bin/setclientmode ogLiveAdmin pc11 PERM
127for ((i=12; i<=#{NCLIENTS+10}; i++)); do
128    /opt/opengnsys/bin/setclientmode ogLive pc$i PERM
129done
130
131echo "Notes:"
132echo "- OpenGnsys Server URL: https://localhost:${LOCALWEBPORT}/opengnsys/"
133exit 0
134EOT
135
136
137Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
138  config.vm.define "og-#{BRANCH_EXTRA}-admin", primary: true do |og|
139    og.vm.provider :vmware_esxi do |esxi|
140      esxi.guest_name = "og-#{BRANCH_EXTRA}-admin"
141      esxi.guest_memsize = SERVERMEM
142      esxi.esxi_username = 'root'
143      esxi.esxi_password = ESXIPASSWORD
144      esxi.esxi_hostname = 'esxi-jenkins.evlt.uma.es'
145      esxi.clone_from_vm = 'Ubuntu-18-template-image'
146      esxi.esxi_resource_pool = "/"
147      esxi.local_allow_overwrite = 'True'
148      esxi.guest_custom_vmx_settings = [['monitor.allowLegacyCPU', 'TRUE']]
149      esxi.guest_storage = [ 10 ]
150      esxi.esxi_virtual_network = [ 'vLan_742', BRANCH_EXTRA  ]
151      esxi.guest_mac_address = [ "#{MACPREFIX}:00", "#{MACPREFIX}:01" ]
152      esxi.guest_nic_type = 'e1000'
153    end
154    og.vm.box = "esxi_clone/dummy"
155    og.vm.hostname = "og-#{BRANCH_EXTRA}-admin"
156
157    og.vm.provision "file", source: "config/01-eth1.yaml" , destination: "/tmp/"
158    og.vm.provision "shell", inline: OGSERVERSCRIPT , env: {"NETPREFIX" => NETPREFIX , "BRANCH" => BRANCH , "GITEA_TOKEN" => GITEA_TOKEN , "GITEA_USER" => GITEA_USER , "DHCPNET" => DHCPNET , "SSH_GIT_KEY_PASS" => SSH_GIT_KEY_PASS , "LOCALWEBPORT" => LOCALWEBPORT }
159  end
160end
Note: See TracBrowser for help on using the repository browser.