unikernels/DEPLOYMENT/deploy_unikernels.sh
Gaetan Longree 4411d5800e First commit
2018-05-11 15:51:48 +02:00

94 lines
2.6 KiB
Bash

#!/bin/bash
# NB: This script assumes you cloned the project into you HOME directory.
# If this is not the case, change the following variables accordingly
SRC_DIR=$HOME/unikernels
UNIKERELS=$SRC_DIR/SOURCE/UNIKERNEL
# build unikernels
pushd $UNIKERELS/DNS &&\
mkdir -p build &&\
pushd build &&\
cmake .. &&\
make &&\
popd &&\
pushd $UNIKERELS/WebServer &&\
mkdir -p build &&\
pushd build &&\
cmake .. &&\
sudo make &&\
popd &&\
pushd $UNIKERELS/Router &&\
mkdir -p build &&\
pushd build &&\
cmake .. &&\
make &&\
popd &&\
pushd $UNIKERELS/Firewall &&\
mkdir -p build &&\
pushd build &&\
cmake .. &&\
make &&\
popd &&\
# configure networks for QEMU
# remove default bridge created
sudo ip link del bridge43
# create the bridge interfaces
virsh net-define --file $UNIKERELS/internal.xml &&
virsh net-define --file $UNIKERELS/external.xml &&
virsh net-define --file $UNIKERELS/firewall.xml &&
virsh net-start internal &&
virsh net-start external &&
virsh net-start firewall &&
virsh net-autostart internal &&
virsh net-autostart external &&
virsh net-autostart firewall &&
# launch unikernels in QEMU (+serial output to files)
virt-install \
--virt-type qemu --name DNS \
--vcpus 1 --ram 128 \
--import --disk $UNIKERELS/DNS/build/DNS.img \
--serial file,path=/tmp/dns.log \
--network network=internal,model=virtio \
--noautoconsole &&
virt-install \
--virt-type qemu --name WebServer \
--vcpus 1 --ram 128 \
--import --disk $UNIKERELS/WebServer/build/WebServer.img \
--serial file,path=/tmp/web.log \
--network network=internal,model=virtio \
--noautoconsole &&
virt-install \
--virt-type qemu --name Router \
--vcpus 1 --ram 128 \
--import --disk $UNIKERELS/Router/build/Router.img \
--serial file,path=/tmp/router.log \
--network network=internal,model=virtio \
--network network=firewall,model=virtio \
--noautoconsole &&
virt-install \
--virt-type qemu --name Firewall \
--vcpus 1 --ram 128 \
--import --disk $UNIKERELS/Firewall/build/Firewall.img \
--serial file,path=/tmp/firewall.log \
--network network=external,model=virtio \
--network network=firewall,model=virtio \
--noautoconsole &&
echo "#############################################################################"
echo "### ###"
echo "### Unikernels successfully launched. ###"
echo "### Serial outputs are located in /tmp. ###"
echo "### ###"
echo "#############################################################################"