source: installer/vagrant/Vagrantfile-esxi @ 124657d3

configure-oglivelgromero-new-oglivemainmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineoglive-ipv6test-python-scriptsticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacion
Last change on this file since 124657d3 was edae476, checked in by Natalia Serrano <natalia.serrano@…>, 14 months ago

refs #239, also accept UDS params from the environment

  • Property mode set to 100644
File size: 7.1 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
39set -eu
40ip address show
41journalctl -b 0 |grep -iE 'eth|dhcp'
42
43# Fix problem with gitea host
44grep -q '^150\.214\.58\.246' /etc/hosts || echo "150.214.58.246 ognproject.evlt.uma.es" >> /etc/hosts
45
46echo Setting up SSH config and agent
47mkdir -p /root/.ssh/
48cp /vagrant/config/id_rsa /root/.ssh/id_rsa
49chown root:root /root/.ssh/id_rsa
50chmod 0400 /root/.ssh/id_rsa
51cp /vagrant/config/ssh_config /root/.ssh/config
52chown root:root /root/.ssh/config
53chmod 0400 /root/.ssh/config
54cp /vagrant/config/ask_pass.sh /root/ask_pass.sh
55chmod 755 /root/ask_pass.sh
56
57eval `ssh-agent`
58export DISPLAY=:0
59export SSH_ASKPASS=/root/ask_pass.sh
60ssh-add /root/.ssh/id_rsa <<< $SSH_GIT_KEY_PASS
61
62
63echo Setting up language and locales
64export LANG="#{LANGUAGE}.UTF-8"
65echo "LANG=\\\"$LANG\\\"" > /etc/default/locale
66echo "LANG=\\\"$LANG\\\"" >> /etc/environment
67locale-gen --lang #{LANGUAGE}
68sed -i "s/XKBLAYOUT=.*/XKBLAYOUT=\\\"${LANG%_*}\\\"/" /etc/default/keyboard
69dpkg-reconfigure -fnoninteractive console-setup
70
71
72# Exit if OpenGnsys is installed.
73[ -f /opt/opengnsys/doc/VERSION.json ] && echo "Cannot provision, OpenGnsys is already installed." && exit 1
74
75
76echo Creating a repository disk
77if [ -z "$(blkid /dev/mapper/og-images | grep ext4)" ]; then
78    pvcreate /dev/sdb
79    vgcreate og /dev/sdb
80    vgchange -ay
81    lvcreate -ay -n images -l 100%VG og
82    mkfs -t ext4 /dev/mapper/og-images
83    mkdir -p /opt/opengnsys/images
84    echo "/dev/mapper/og-images  /opt/opengnsys/images  ext4  defaults  0  0" >> /etc/fstab
85    mount -a
86fi
87
88
89if [ -f /etc/netplan/01-eth1.yaml ]; then
90    echo "Network configured, skipping"
91else
92    echo "Configuring eth1"
93    sed -i "s/##ADDRESS##/${NETPREFIX}.1/g" /tmp/01-eth1.yaml
94    mv /tmp/01-eth1.yaml /etc/netplan
95    chown root:root /etc/netplan/01-eth1.yaml
96    netplan apply
97    sleep 1
98fi
99
100
101# Download installer
102echo Downloading https://ognproject.evlt.uma.es/gitea/opengnsys/opengnsys/raw/branch/${BRANCH}/installer/opengnsys_installer_devel_esxi.sh
103curl --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
104chmod 755 opengnsys_installer_devel_esxi.sh && ./opengnsys_installer_devel_esxi.sh $BRANCH
105
106[ -e /opt/opengnsys/log/bash.log ] && mv /opt/opengnsys/log/bash.log /opt/opengnsys/log/opengnsys_installer.log
107
108echo y | /opt/opengnsys/bin/setserveraddr $(ip -o link show | tail -1 | cut -d: -f2)
109
110# Insert DHCP data.
111sed -i "/^}$/ i host modelo { hardware ethernet #{MACPREFIX}:FF; fixed-address #{NETPREFIX}.199; }" /etc/dhcp/dhcpd.conf
112for ((i=#{NCLIENTS+10}; i>10; i--)); do
113    sed -i "/^}$/ i host pc${i} { hardware ethernet #{MACPREFIX}:${i}; fixed-address #{NETPREFIX}.${i}; }" /etc/dhcp/dhcpd.conf
114done
115service isc-dhcp-server restart
116
117echo Creating an aula and some clients
118SQL="INSERT INTO aulas (nombreaula, idcentro, urlfoto, grupoid, ubicacion, puestos, modomul, ipmul, pormul, velmul, router, netmask, ntp, dns, proxy, modp2p, timep2p)"\
119"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); "\
120"INSERT INTO ordenadores (nombreordenador, ip, mac, idaula, idrepositorio, idperfilhard, idmenu, idproautoexec, grupoid, router, mascara, arranque, netiface, netdriver, fotoord) VALUES "\
121"('modelo', '#{NETPREFIX}.199', REPLACE('#{MACPREFIX}FF',':',''), 1, 1, 0, 0, 0, 0, '#{NETPREFIX}.1', '255.255.255.0', '00unknown', 'eth0', 'generic', 'fotoordenador.gif'),"
122for ((i=11; i<=#{NCLIENTS+10}; i++)); do
123    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'),"
124done
125mysql -u usuog -ppassusuog -D ogAdmBD -e "${SQL%,}"
126/opt/opengnsys/bin/setclientmode ogLiveAdmin modelo PERM
127/opt/opengnsys/bin/setclientmode ogLiveAdmin pc11 PERM
128for ((i=12; i<=#{NCLIENTS+10}; i++)); do
129    /opt/opengnsys/bin/setclientmode ogLive pc$i PERM
130done
131
132echo "Notes:"
133echo "- OpenGnsys Server URL: https://localhost:${LOCALWEBPORT}/opengnsys/"
134exit 0
135EOT
136
137
138Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
139  config.vm.define "og-#{BRANCH_EXTRA}-admin", primary: true do |og|
140    og.vm.provider :vmware_esxi do |esxi|
141      esxi.guest_name = "og-#{BRANCH_EXTRA}-admin"
142      esxi.guest_memsize = SERVERMEM
143      esxi.esxi_username = 'root'
144      esxi.esxi_password = ESXIPASSWORD
145      esxi.esxi_hostname = 'esxi-jenkins.evlt.uma.es'
146      esxi.clone_from_vm = 'Ubuntu-18-template-image'
147      esxi.esxi_resource_pool = "/"
148      esxi.local_allow_overwrite = 'True'
149      esxi.guest_custom_vmx_settings = [['monitor.allowLegacyCPU', 'TRUE']]
150      esxi.guest_storage = [ 10 ]
151      esxi.esxi_virtual_network = [ 'vLan_742', BRANCH_EXTRA  ]
152      esxi.guest_mac_address = [ "#{MACPREFIX}:00", "#{MACPREFIX}:01" ]
153      esxi.guest_nic_type = 'e1000'
154    end
155    og.vm.box = "esxi_clone/dummy"
156    og.vm.hostname = "og-#{BRANCH_EXTRA}-admin"
157
158    og.vm.provision "file", source: "config/01-eth1.yaml", destination: "/tmp/"
159    og.vm.provision "shell", inline: OGSERVERSCRIPT, env: {
160        "NETPREFIX"                 => NETPREFIX,
161        "BRANCH"                    => BRANCH,
162        "GITEA_TOKEN"               => GITEA_TOKEN,
163        "GITEA_USER"                => GITEA_USER,
164        "DHCPNET"                   => DHCPNET,
165        "SSH_GIT_KEY_PASS"          => SSH_GIT_KEY_PASS,
166        "LOCALWEBPORT"              => LOCALWEBPORT,
167        "DEFAULT_UDS_REST_URL"      => ENV['DEFAULT_UDS_REST_URL'],
168        "DEFAULT_UDS_AUTHENTICATOR" => ENV['DEFAULT_UDS_AUTHENTICATOR'],
169        "DEFAULT_UDS_USER"          => ENV['DEFAULT_UDS_USER'],
170        "DEFAULT_UDS_PASS"          => ENV['DEFAULT_UDS_PASS']
171    }
172  end
173end
Note: See TracBrowser for help on using the repository browser.