blob: 94460a7e00a9b5e8a64f28d4a76774ab873c7c07 [file] [log] [blame]
Luca Prete8137ffc2016-08-16 11:53:45 -07001#!/bin/bash
2# onos-setup.sh
3#
4# Runs as mininet user.
5#
6# This script sets up the desktop environment, installs ONOS in the LXC cluster,
7# then creates a user for each tutorial and runs the tutorial setup script.
8
9function create_user {
10 local name=$1
11 local description=$2
12
13 sudo /usr/sbin/useradd -c "$description" -d /home/$name -U -m -p $(openssl passwd -1 $name) -s /bin/bash $name
14 echo "$name ALL=(ALL) NOPASSWD:ALL" >> $name
15 sudo mv $name /etc/sudoers.d
16 sudo chown root:root /etc/sudoers.d/$name
17 sudo usermod -aG wireshark $name
18
19 sudo usermod -aG mininet $name
20
21 sudo mkdir /home/$name/.ssh
22 sudo chown $name:$name /home/$name/.ssh
23 sudo cp /home/mininet/.ssh/id_rsa /home/$name/.ssh/
24 sudo chown $name:$name /home/$name/.ssh/id_rsa
25
26 sudo -u $name sh -c "echo \"export ONOS_ROOT=/home/mininet/onos\" >> /home/$name/.bashrc"
27 sudo -u $name sh -c "echo \"export KARAF_ROOT=/home/mininet/apache-karaf-3.0.5\" >> /home/$name/.bashrc"
28 sudo -u $name sh -c "echo \"export M2_REPO=/home/mininet/.m2/repository\" >> /home/$name/.bashrc"
29 sudo -u $name sh -c "echo \". /home/mininet/onos/tools/dev/bash_profile\" >> /home/$name/.bashrc"
30
31 sudo -u $name ssh -o "StrictHostKeyChecking no" sdn@10.0.3.11 ls
32 sudo -u $name ssh -o "StrictHostKeyChecking no" sdn@10.0.3.12 ls
33 sudo -u $name ssh -o "StrictHostKeyChecking no" sdn@10.0.3.13 ls
34
35 sudo mkdir -p /home/$name/.wireshark/plugins
36 sudo cp /home/mininet/openflow.lua /home/$name/.wireshark/plugins
37 sudo chown -R $name:$name /home/$name/.wireshark
38}
39
40# ------------- Set up desktop environment -------------
41
42echo "Setting up desktop environment"
43
44# Remove kernel boot options that will prevent the gui from running
45sudo sed -i s/text// /etc/default/grub
46sudo sed -i s/ipv6.disable=1// /etc/default/grub
47sudo update-grub
48
49sudo apt-get install -y xorg lxde systemd-shim
50
51#TODO: add backgrounds folder
52sudo mkdir -p /usr/share/backgrounds
53#TODO: change background
54# Remove wallpaper, change background color
55sudo sed -i 's/wallpaper_mode=1/wallpaper_mode=0/g' /usr/share/lxde/pcmanfm/LXDE.conf
56sudo sed -i 's/desktop_bg=#000000/desktop_bg=#104187/g' /usr/share/lxde/pcmanfm/LXDE.conf
57
58sudo sed -i 's/lang=1/lang=0/g' /etc/lxdm/default.conf
59sudo sed -i 's/bottom_pane=1/bottom_pane=0/g' /etc/lxdm/default.conf
60sudo sed -i 's/disable=0/disable=1/g' /etc/lxdm/default.conf
61
62# Allow VM to be rebooted from GUI
63echo "session required pam_systemd.so" | sudo tee --append /etc/pam.d/lxdm
64
65wget -O onos.png "https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.6;f=onos.png"
66sudo cp onos.png /usr/share/backgrounds/default.png
67
68# Change LXTerminal default colors
69sudo sed -i 's/bgcolor=#000000000000/bgcolor=#ffffffffffff/g' /usr/share/lxterminal/lxterminal.conf
70sudo sed -i 's/fgcolor=#aaaaaaaaaaaa/fgcolor=#000000000000/g' /usr/share/lxterminal/lxterminal.conf
71
72# Disable screensaver
73sudo sed -i '/screensaver/d' /etc/xdg/lxsession/LXDE/autostart
74cat > /home/mininet/.xsessionrc << EOF
75# disable screensaver
76xset s off
77# disable dpms (standby)
78xset -dpms
79EOF
80
81echo "Enabling non-root wireshark"
82echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections
83sudo dpkg-reconfigure -f noninteractive wireshark-common
84
85# Get the wireshark dissector handy
Luca Pretef9fb74a2016-08-16 23:35:22 -070086wget -O /home/mininet/openflow.lua "https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.6;f=openflow.lua"
Luca Prete8137ffc2016-08-16 11:53:45 -070087
88# -------------- Install ONOS ----------------
89
90echo "Installing ONOS"
91
92USER=mininet
93USER_HOME=/home/${USER}
94
95cd ~
96
97# Download a local karaf so we can use the bin directory
98wget http://archive.apache.org/dist/karaf/3.0.5/apache-karaf-3.0.5.tar.gz
99tar -xzf apache-karaf-3.0.5.tar.gz
100
101
102git clone https://gerrit.onosproject.org/onos
103cd onos && git checkout 1.6.0 && cd -
104
105mkdir -p ~/Downloads
106
107
108echo "export ONOS_ROOT=${USER_HOME}/onos" >> ~/.bashrc
109echo "export KARAF_ROOT=${USER_HOME}/apache-karaf-3.0.5" >> ~/.bashrc
110echo ". ~/onos/tools/dev/bash_profile" >> ~/.bashrc
111
112export ONOS_ROOT=${USER_HOME}/onos
113export KARAF_ROOT=${USER_HOME}/apache-karaf-3.0.5
114. ~/onos/tools/dev/bash_profile
115
Luca Prete8137ffc2016-08-16 11:53:45 -0700116echo $ONOS_ROOT
117
118cd $ONOS_ROOT && mvn clean install && mvn dependency:go-offline && cd -
119
Luca Prete8137ffc2016-08-16 11:53:45 -0700120cat << EOF >> onos/tools/test/cells/3node
121export ONOS_NIC=10.0.3.*
122export OC1="10.0.3.11"
123export OC2="10.0.3.12"
124export OC3="10.0.3.13"
125export OCI="10.0.3.11"
126export ONOS_APPS="drivers,openflow"
127export ONOS_USER="sdn"
128EOF
129
130cat << EOF >> onos/tools/test/cells/1node
131export ONOS_NIC=10.0.3.*
132export OC1="10.0.3.11"
133export OCI="10.0.3.11"
134export ONOS_APPS="drivers,openflow"
135export ONOS_USER="sdn"
136EOF
137
138cell 3node
139
Luca Prete8137ffc2016-08-16 11:53:45 -0700140onos-package
141onos-group install -f
142onos-wait-for-start $OC1
143onos-wait-for-start $OC2
144onos-wait-for-start $OC3
145
146echo "ONOS install and startup complete"
147
148sleep 1
149onos-service --cell status
150
151# Prevent ONOS services from starting automatically
152sudo sh -c "echo manual >> /var/lib/lxc/onos1/rootfs/etc/init/onos.override"
153sudo sh -c "echo manual >> /var/lib/lxc/onos2/rootfs/etc/init/onos.override"
154sudo sh -c "echo manual >> /var/lib/lxc/onos3/rootfs/etc/init/onos.override"
155
156# ------------- Create reset scripts -------------
157
158cat << EOF >> ${USER_HOME}/reset-to-1.sh
159#!/bin/bash
160sudo rm -rf /tmp/*
161export ONOS_ROOT=/home/mininet/onos
162export M2_REPO=/home/mininet/.m2/repository
163export KARAF_TAR=/home/mininet/apache-karaf-3.0.5.tar.gz
164. ${ONOS_ROOT}/tools/dev/bash_profile
165. ${ONOS_ROOT}/tools/build/envDefaults
166
167sudo mn -c
168
169cell 3node
170onos-service --cell stop
171cell 1node
172
173if [ -n "\$1" ]; then
174 export ONOS_APPS=\$ONOS_APPS,\$1
175fi
176
177onos-package
178onos-install -f '$OC1'
179EOF
180
181sudo chmod 777 ${USER_HOME}/reset-to-1.sh
182
183cat << EOF >> ${USER_HOME}/reset-to-3.sh
184#!/bin/bash
185sudo rm -rf /tmp/*
186export ONOS_ROOT=/home/mininet/onos
187export M2_REPO=/home/mininet/.m2/repository
188export KARAF_TAR=/home/mininet/apache-karaf-3.0.5.tar.gz
189. ${ONOS_ROOT}/tools/dev/bash_profile
190. ${ONOS_ROOT}/tools/build/envDefaults
191
192sudo mn -c
193
194cell 3node
195
196if [ -n "\$1" ]; then
197 export ONOS_APPS=\$ONOS_APPS,\$1
198fi
199
200onos-service --cell stop
201onos-package
202onos-install -f '$OC1'
203onos-install -f '$OC2'
204onos-install -f '$OC3'
205EOF
206
207sudo chmod 777 ${USER_HOME}/reset-to-3.sh
208
209sudo apt-get clean
210sudo rm /etc/apt/apt.conf.d/02proxy
211
212# ------------- Set up each tutorial -------------
213
214create_user tutorial1 "Basic ONOS Tutorial"
215
216URL='https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.6;f=tutorial1-setup.sh'
217wget -O tutorial1-setup.sh $URL
218sudo -u tutorial1 -H sh -c 'cp tutorial1-setup.sh ~/ && cd ~/ && sh tutorial1-setup.sh'
219
220create_user sdnip "SDN-IP Tutorial"
221
222SDNIP_URL='https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.6;f=sdnip-setup.sh'
223wget -O sdnip-setup.sh $SDNIP_URL
224sudo -u sdnip -H sh -c 'cp sdnip-setup.sh ~/ && cd ~/ && sh sdnip-setup.sh'
225
226create_user distributed "Distributed Tutorial"
227
228DIST_URL='https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.6;f=dist-setup.sh'
229wget -O dist-setup.sh $DIST_URL
230sudo -u distributed -H sh -c 'cp dist-setup.sh ~/ && cd ~/ && sh dist-setup.sh'
231
232create_user optical "Optical Tutorial"
233
Luca Pretef9fb74a2016-08-16 23:35:22 -0700234OPT_URL='https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.6;f=opt-setup.sh'
Luca Prete8137ffc2016-08-16 11:53:45 -0700235wget -O opt-setup.sh $OPT_URL
236sudo -u optical -H sh -c 'cp opt-setup.sh ~/ && cd ~/ && sh opt-setup.sh'
237
238# ------------- Zero Unused Blocks -------------
239#TODO investigate zerofree
240echo "Zeroing unused blocks"
241sync
242dd if=/dev/zero of=tmp-zeros
243sync
244rm tmp-zeros
245sync