source: installer/vagrant/Vagrantfile-esxi @ f1abaf8

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 f1abaf8 was 5f551dc, checked in by Natalia Serrano <natalia.serrano@…>, 17 months ago

Pass a missing envvar to the inline shell script

  • Property mode set to 100644
File size: 6.2 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.
110for ((i=#{NCLIENTS+10}; i>10; i--)); do
111    sed -i "/^}$/ i host pc${i} { hardware ethernet #{MACPREFIX}:${i}; fixed-address #{NETPREFIX}.${i}; }" /etc/dhcp/dhcpd.conf
112done
113service isc-dhcp-server restart
114
115echo Creating an aula and some clients
116SQL="INSERT INTO aulas (nombreaula, idcentro, urlfoto, grupoid, ubicacion, puestos, modomul, ipmul, pormul, velmul, router, netmask, ntp, 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"
117for ((i=11; i<=#{NCLIENTS+10}; i++)); do
118    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'),"
119done
120mysql -u usuog -ppassusuog -D ogAdmBD -e "${SQL%,}"
121/opt/opengnsys/bin/setclientmode ogLiveAdmin pc11 PERM
122for ((i=12; i<=#{NCLIENTS+10}; i++)); do
123    /opt/opengnsys/bin/setclientmode ogLive pc$i PERM
124done
125
126echo "Notes:"
127echo "- OpenGnsys Server URL: https://localhost:${LOCALWEBPORT}/opengnsys/"
128exit 0
129EOT
130
131
132Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
133  config.vm.define "og-#{BRANCH_EXTRA}-admin", primary: true do |og|
134    og.vm.provider :vmware_esxi do |esxi|
135      esxi.guest_name = "og-#{BRANCH_EXTRA}-admin"
136      esxi.guest_memsize = SERVERMEM
137      esxi.esxi_username = 'root'
138      esxi.esxi_password = ESXIPASSWORD
139      esxi.esxi_hostname = 'esxi-jenkins.evlt.uma.es'
140      esxi.clone_from_vm = 'Ubuntu-18-template-image'
141      esxi.esxi_resource_pool = "/"
142      esxi.local_allow_overwrite = 'True'
143      esxi.guest_custom_vmx_settings = [['monitor.allowLegacyCPU', 'TRUE']]
144      esxi.guest_storage = [ 10 ]
145      esxi.esxi_virtual_network = [ 'vLan_742', BRANCH_EXTRA  ]
146      esxi.guest_mac_address = [ "#{MACPREFIX}:00", "#{MACPREFIX}:01" ]
147      esxi.guest_nic_type = 'e1000'
148    end
149    og.vm.box = "esxi_clone/dummy"
150    og.vm.hostname = "og-#{BRANCH_EXTRA}-admin"
151
152    og.vm.provision "file", source: "config/01-eth1.yaml" , destination: "/tmp/"
153    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 }
154  end
155end
Note: See TracBrowser for help on using the repository browser.