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
RevLine 
[3a0f599]1VAGRANTFILE_API_VERSION = "2"
2# VM provider: Oracle VM VirtualBox.
3ENV['VAGRANT_DEFAULT_PROVIDER'] = "vmware_esxi"
4# OpenGnsys version and OGAgent version.
[85df22be]5BRANCH=ENV['BRANCH'] || "main"
6BRANCH_EXTRA=ENV['BRANCH_EXTRA'] || BRANCH
[3a0f599]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).
[a8044f7]13NCLIENTS = ENV['NUMBER_OF_CLIENTS']|| 4
[915580e]14NCLIENTS = NCLIENTS.to_i
[3a0f599]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.
[0fe1fb95]22MACPREFIX = ENV['OGN_MAC_PREFIX'] || '00:50:56:aa:aa'
[6a65c2d]23NETPREFIX = ENV['OGN_NET_PREFIX'] || "192.168.2"
[f43bbbd]24DHCPNET   = ENV['DHCPNET'] || "192.168.2.0"
[3a0f599]25# OpenGnsys Server IP address.
26SERVERIP = "#{NETPREFIX}.10"
27# Local port to access OpenGnsys Server.
28LOCALWEBPORT = 8443
[a8044f7]29# ESXI Password
[1f22729]30ESXIPASSWORD = ENV['ESXI_PASSWORD'] || 'prompt:'
[3a0f599]31
[a8044f7]32#Gitea credentials
[c5afb54]33GITEA_TOKEN = ENV['GITEA_TOKEN']
34GITEA_USER = ENV['GITEA_USER'] || 'unizar'
[bf3f1ed]35SSH_GIT_KEY_PASS = ENV['SSH_GIT_KEY_PASS'] || ''
[c5afb54]36
[3a0f599]37# OpenGnsys Server provisioning script: prepare repo disk, install OpenGnsys, change default interface, configure DHCP server.
38OGSERVERSCRIPT = <<EOT
[a8044f7]39set -eu
[19e3ffc]40ip address show
41journalctl -b 0 |grep -iE 'eth|dhcp'
[a8044f7]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
[c0b4f96]45
[85df22be]46echo Setting up SSH config and agent
[c9497e6]47mkdir -p /root/.ssh/
48cp /vagrant/config/id_rsa /root/.ssh/id_rsa
49chown root:root /root/.ssh/id_rsa
[a8044f7]50chmod 0400 /root/.ssh/id_rsa
[c9497e6]51cp /vagrant/config/ssh_config /root/.ssh/config
52chown root:root /root/.ssh/config
53chmod 0400 /root/.ssh/config
[a8044f7]54cp /vagrant/config/ask_pass.sh /root/ask_pass.sh
55chmod 755 /root/ask_pass.sh
[692e9417]56
[a8044f7]57eval `ssh-agent`
58export DISPLAY=:0
[692e9417]59export SSH_ASKPASS=/root/ask_pass.sh
[bf3f1ed]60ssh-add /root/.ssh/id_rsa <<< $SSH_GIT_KEY_PASS
[692e9417]61
[787ba5b]62
[85df22be]63echo Setting up language and locales
[c9497e6]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
[787ba5b]70
[85df22be]71
[3a0f599]72# Exit if OpenGnsys is installed.
[c9497e6]73[ -f /opt/opengnsys/doc/VERSION.json ] && echo "Cannot provision, OpenGnsys is already installed." && exit 1
74
[85df22be]75
76echo Creating a repository disk
[c9497e6]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
[85df22be]88
[c9497e6]89if [ -f /etc/netplan/01-eth1.yaml ]; then
[85df22be]90    echo "Network configured, skipping"
[c9497e6]91else
[85df22be]92    echo "Configuring eth1"
[c9497e6]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
[787ba5b]99
[726f7c0]100
[a8044f7]101# Download installer
[85df22be]102echo Downloading https://ognproject.evlt.uma.es/gitea/opengnsys/opengnsys/raw/branch/${BRANCH}/installer/opengnsys_installer_devel_esxi.sh
[12d7aa3]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
[c9497e6]104chmod 755 opengnsys_installer_devel_esxi.sh && ./opengnsys_installer_devel_esxi.sh $BRANCH
[e202670]105
[8e9456f9]106[ -e /opt/opengnsys/log/bash.log ] && mv /opt/opengnsys/log/bash.log /opt/opengnsys/log/opengnsys_installer.log
[6b2b601]107
[c9497e6]108echo y | /opt/opengnsys/bin/setserveraddr $(ip -o link show | tail -1 | cut -d: -f2)
109
[3a0f599]110# Insert DHCP data.
[7bb39840]111sed -i "/^}$/ i host modelo { hardware ethernet #{MACPREFIX}:FF; fixed-address #{NETPREFIX}.199; }" /etc/dhcp/dhcpd.conf
[c9497e6]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
[3513239]115service isc-dhcp-server restart
[e202670]116
[85df22be]117echo Creating an aula and some clients
[bc93fcc]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 "\
[7bb39840]121"('modelo', '#{NETPREFIX}.199', REPLACE('#{MACPREFIX}FF',':',''), 1, 1, 0, 0, 0, 0, '#{NETPREFIX}.1', '255.255.255.0', '00unknown', 'eth0', 'generic', 'fotoordenador.gif'),"
[c9497e6]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'),"
[3a0f599]124done
125mysql -u usuog -ppassusuog -D ogAdmBD -e "${SQL%,}"
[bc93fcc]126/opt/opengnsys/bin/setclientmode ogLiveAdmin modelo PERM
[c9497e6]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
[3a0f599]130done
[85df22be]131
[3a0f599]132echo "Notes:"
[6b2b601]133echo "- OpenGnsys Server URL: https://localhost:${LOCALWEBPORT}/opengnsys/"
[3a0f599]134exit 0
135EOT
136
137
138Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
[85df22be]139  config.vm.define "og-#{BRANCH_EXTRA}-admin", primary: true do |og|
[3a0f599]140    og.vm.provider :vmware_esxi do |esxi|
[85df22be]141      esxi.guest_name = "og-#{BRANCH_EXTRA}-admin"
[3a0f599]142      esxi.guest_memsize = SERVERMEM
143      esxi.esxi_username = 'root'
[1f22729]144      esxi.esxi_password = ESXIPASSWORD
[3a0f599]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 ]
[85df22be]151      esxi.esxi_virtual_network = [ 'vLan_742', BRANCH_EXTRA  ]
[692e9417]152      esxi.guest_mac_address = [ "#{MACPREFIX}:00", "#{MACPREFIX}:01" ]
[e994ff5]153      esxi.guest_nic_type = 'e1000'
[3a0f599]154    end
155    og.vm.box = "esxi_clone/dummy"
[85df22be]156    og.vm.hostname = "og-#{BRANCH_EXTRA}-admin"
157
[edae476]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    }
[3a0f599]172  end
173end
Note: See TracBrowser for help on using the repository browser.