source: installer/vagrant/Vagrantfile-esxi @ 6e06057

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

refs #162 restore nic_type as e1000

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