blob: 3cf275ee3cb794442b5b626a6deba3db3c23f901 [file] [log] [blame]
Jonathan Hart7b6cfef2015-03-27 10:09:38 -07001#!/bin/bash
Jonathan Hart445aa5c2015-04-02 16:34:22 -07002# onos-setup.sh
Jonathan Harta509f472015-04-02 16:19:47 -07003#
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.
Jonathan Hart7b6cfef2015-03-27 10:09:38 -07008
Jonathan Hartb1e22112015-03-31 16:42:03 -07009function 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
Jonathan Hartf1861642015-07-14 11:00:18 -070019 sudo usermod -aG mininet $name
Jonathan Hart48f91a12015-04-02 15:04:01 -070020
Jonathan Hartb1e22112015-03-31 16:42:03 -070021 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
Jonathan Hart29649492015-07-13 16:36:22 -070026 sudo -u $name sh -c "echo \"export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\" >> /home/$name/.bashrc"
Jonathan Hartb1e22112015-03-31 16:42:03 -070027 sudo -u $name sh -c "echo \"export ONOS_ROOT=/home/mininet/onos\" >> /home/$name/.bashrc"
Jonathan Hartf648acd2015-07-07 03:16:47 -070028 sudo -u $name sh -c "echo \"export KARAF_ROOT=/home/mininet/apache-karaf-3.0.3\" >> /home/$name/.bashrc"
Jonathan Hartd8609332015-04-01 11:16:33 -070029 sudo -u $name sh -c "echo \"export M2_REPO=/home/mininet/.m2/repository\" >> /home/$name/.bashrc"
Jonathan Hartb1e22112015-03-31 16:42:03 -070030 sudo -u $name sh -c "echo \". /home/mininet/onos/tools/dev/bash_profile\" >> /home/$name/.bashrc"
31
32 sudo -u $name ssh -o "StrictHostKeyChecking no" sdn@10.0.3.11 ls
33 sudo -u $name ssh -o "StrictHostKeyChecking no" sdn@10.0.3.12 ls
34 sudo -u $name ssh -o "StrictHostKeyChecking no" sdn@10.0.3.13 ls
Jonathan Hart6ccaec82015-04-01 14:43:40 -070035
36 sudo mkdir -p /home/$name/.wireshark/plugins
37 sudo cp /home/mininet/openflow.lua /home/$name/.wireshark/plugins
38 sudo chown -R $name:$name /home/$name/.wireshark
Jonathan Hartb1e22112015-03-31 16:42:03 -070039}
40
Jonathan Hartb1e22112015-03-31 16:42:03 -070041# ------------- Set up desktop environment -------------
42
Jonathan Hartd8609332015-04-01 11:16:33 -070043echo "Setting up desktop environment"
44
Jonathan Hartb1e22112015-03-31 16:42:03 -070045# Remove kernel boot options that will prevent the gui from running
46sudo sed -i s/text// /etc/default/grub
47sudo sed -i s/ipv6.disable=1// /etc/default/grub
48sudo update-grub
49
50sudo apt-get install -y xorg lxde systemd-shim
51
52#TODO: add backgrounds folder
53sudo mkdir -p /usr/share/backgrounds
54#TODO: change background
55# Remove wallpaper, change background color
56sudo sed -i 's/wallpaper_mode=1/wallpaper_mode=0/g' /usr/share/lxde/pcmanfm/LXDE.conf
57sudo sed -i 's/desktop_bg=#000000/desktop_bg=#104187/g' /usr/share/lxde/pcmanfm/LXDE.conf
58
59sudo sed -i 's/lang=1/lang=0/g' /etc/lxdm/default.conf
60sudo sed -i 's/bottom_pane=1/bottom_pane=0/g' /etc/lxdm/default.conf
61sudo sed -i 's/disable=0/disable=1/g' /etc/lxdm/default.conf
62
63# Allow VM to be rebooted from GUI
64echo "session required pam_systemd.so" | sudo tee --append /etc/pam.d/lxdm
65
Jonathan Hartfa911cc2015-04-02 23:20:13 -070066wget -O onos.png "https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.1;f=onos.png"
Jonathan Hartb1e22112015-03-31 16:42:03 -070067sudo cp onos.png /usr/share/backgrounds/default.png
68
69# Change LXTerminal default colors
70sudo sed -i 's/bgcolor=#000000000000/bgcolor=#ffffffffffff/g' /usr/share/lxterminal/lxterminal.conf
71sudo sed -i 's/fgcolor=#aaaaaaaaaaaa/fgcolor=#000000000000/g' /usr/share/lxterminal/lxterminal.conf
72
73# Disable screensaver
74sudo sed -i '/screensaver/d' /etc/xdg/lxsession/LXDE/autostart
75cat > /home/mininet/.xsessionrc << EOF
76# disable screensaver
77xset s off
78# disable dpms (standby)
79xset -dpms
80EOF
81
Jonathan Hartd8609332015-04-01 11:16:33 -070082echo "Enabling non-root wireshark"
83echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections
84sudo dpkg-reconfigure -f noninteractive wireshark-common
Jonathan Hartf5a22f42015-03-31 17:44:40 -070085
Jonathan Hart6ccaec82015-04-01 14:43:40 -070086# Get the wireshark dissector handy
Jonathan Hartfa911cc2015-04-02 23:20:13 -070087wget -O /home/mininet/openflow.lua "https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.1;f=openflow.lua"
Jonathan Hart6ccaec82015-04-01 14:43:40 -070088
Jonathan Hartf5a22f42015-03-31 17:44:40 -070089# -------------- Install ONOS ----------------
90
Jonathan Hartd8609332015-04-01 11:16:33 -070091echo "Installing ONOS"
92
Jonathan Hartf5a22f42015-03-31 17:44:40 -070093USER=mininet
94USER_HOME=/home/${USER}
95
Jonathan Hartf5a22f42015-03-31 17:44:40 -070096cd ~
Jonathan Hartd8609332015-04-01 11:16:33 -070097
98# Download a local karaf so we can use the bin directory
Jonathan Hartf648acd2015-07-07 03:16:47 -070099wget http://archive.apache.org/dist/karaf/3.0.3/apache-karaf-3.0.3.tar.gz
100tar -xzf apache-karaf-3.0.3.tar.gz
Jonathan Hartd8609332015-04-01 11:16:33 -0700101
102
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700103git clone https://gerrit.onosproject.org/onos
Jonathan Hart783b0632015-07-14 14:01:45 -0700104cd onos && git checkout 1.2.1 && cd -
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700105
106mkdir -p ~/Downloads
107
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700108
109echo "export ONOS_ROOT=${USER_HOME}/onos" >> ~/.bashrc
Jonathan Hartf648acd2015-07-07 03:16:47 -0700110echo "export KARAF_ROOT=${USER_HOME}/apache-karaf-3.0.3" >> ~/.bashrc
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700111echo ". ~/onos/tools/dev/bash_profile" >> ~/.bashrc
112
113export ONOS_ROOT=${USER_HOME}/onos
Jonathan Hartf648acd2015-07-07 03:16:47 -0700114export KARAF_ROOT=${USER_HOME}/apache-karaf-3.0.3
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700115. ~/onos/tools/dev/bash_profile
116
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700117
118echo $ONOS_ROOT
119
120echo $JAVA_HOME
Jonathan Hart7d56cb22015-07-13 13:46:49 -0700121export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700122cd $ONOS_ROOT && mvn clean install && mvn dependency:go-offline && cd -
123
Jonathan Hart783b0632015-07-14 14:01:45 -0700124# Get the sample apps and build them for the right version
125git clone https://gerrit.onosproject.org/onos-app-samples
126cd onos-app-samples
127git checkout 52da58b5991049025ce1b599c000357500b00aef
128mvn versions:set -DnewVersion=1.2.1 versions:commit
129mvn clean install
130cd ..
131
132
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700133cat << EOF >> onos/tools/test/cells/3node
134export ONOS_NIC=10.0.3.*
135export OC1="10.0.3.11"
136export OC2="10.0.3.12"
137export OC3="10.0.3.13"
Jonathan Hart59c036f2015-04-01 16:33:33 -0700138export OCI="10.0.3.11"
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700139export ONOS_FEATURES="webconsole,onos-rest,onos-gui,onos-api,onos-core,onos-cli,onos-openflow"
Jonathan Hartf1861642015-07-14 11:00:18 -0700140export ONOS_APPS="drivers,openflow"
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700141export ONOS_USER="sdn"
142EOF
143
144cat << EOF >> onos/tools/test/cells/1node
145export ONOS_NIC=10.0.3.*
146export OC1="10.0.3.11"
Jonathan Hart59c036f2015-04-01 16:33:33 -0700147export OCI="10.0.3.11"
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700148export ONOS_FEATURES="webconsole,onos-rest,onos-gui,onos-api,onos-core,onos-cli,onos-openflow"
Jonathan Hartf1861642015-07-14 11:00:18 -0700149export ONOS_APPS="drivers,openflow"
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700150export ONOS_USER="sdn"
151EOF
152
153cell 3node
154
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700155
156onos-package
157onos-group install -f
158onos-wait-for-start $OC1
159onos-wait-for-start $OC2
160onos-wait-for-start $OC3
161
Jonathan Hartd8609332015-04-01 11:16:33 -0700162echo "ONOS install and startup complete"
163
164sleep 1
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700165onos-service --cell status
166
Jonathan Hartd8609332015-04-01 11:16:33 -0700167# Prevent ONOS services from starting automatically
168sudo sh -c "echo manual >> /var/lib/lxc/onos1/rootfs/etc/init/onos.override"
169sudo sh -c "echo manual >> /var/lib/lxc/onos2/rootfs/etc/init/onos.override"
170sudo sh -c "echo manual >> /var/lib/lxc/onos3/rootfs/etc/init/onos.override"
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700171
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700172# ------------- Create reset scripts -------------
173
174cat << EOF >> ${USER_HOME}/reset-to-1.sh
175#!/bin/bash
Jonathan Hart6b051d92015-04-01 17:04:35 -0700176sudo rm -rf /tmp/*
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700177export ONOS_ROOT=/home/mininet/onos
Jonathan Hart59c036f2015-04-01 16:33:33 -0700178export M2_REPO=/home/mininet/.m2/repository
Jonathan Hartf648acd2015-07-07 03:16:47 -0700179export KARAF_TAR=/home/mininet/apache-karaf-3.0.3.tar.gz
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700180. ${ONOS_ROOT}/tools/dev/bash_profile
181. ${ONOS_ROOT}/tools/build/envDefaults
182
Jonathan Hartf16c1222015-04-01 19:38:49 -0700183sudo mn -c
184
Jonathan Hart9cdbc422015-04-03 12:48:14 -0700185cell 3node
186onos-service --cell stop
187cell 1node
188
Jonathan Hart2f24ce22015-04-02 15:52:38 -0700189if [ -n "\$1" ]; then
Jonathan Hartf1861642015-07-14 11:00:18 -0700190 export ONOS_APPS=\$ONOS_APPS,\$1
Jonathan Hart5cf990e2015-04-02 14:47:36 -0700191fi
192
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700193onos-package
Jonathan Hart59c036f2015-04-01 16:33:33 -0700194onos-install -f '$OC1'
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700195EOF
196
Jonathan Hart59c036f2015-04-01 16:33:33 -0700197sudo chmod 777 ${USER_HOME}/reset-to-1.sh
198
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700199cat << EOF >> ${USER_HOME}/reset-to-3.sh
200#!/bin/bash
Jonathan Hart6b051d92015-04-01 17:04:35 -0700201sudo rm -rf /tmp/*
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700202export ONOS_ROOT=/home/mininet/onos
Jonathan Hart59c036f2015-04-01 16:33:33 -0700203export M2_REPO=/home/mininet/.m2/repository
Jonathan Hartf648acd2015-07-07 03:16:47 -0700204export KARAF_TAR=/home/mininet/apache-karaf-3.0.3.tar.gz
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700205. ${ONOS_ROOT}/tools/dev/bash_profile
206. ${ONOS_ROOT}/tools/build/envDefaults
207
Jonathan Hartf16c1222015-04-01 19:38:49 -0700208sudo mn -c
209
Jonathan Hart9cdbc422015-04-03 12:48:14 -0700210cell 3node
211
Jonathan Hart2f24ce22015-04-02 15:52:38 -0700212if [ -n "\$1" ]; then
Jonathan Hartf1861642015-07-14 11:00:18 -0700213 export ONOS_APPS=\$ONOS_APPS,\$1
Jonathan Hart5cf990e2015-04-02 14:47:36 -0700214fi
215
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700216onos-service --cell stop
217onos-package
Jonathan Hart59c036f2015-04-01 16:33:33 -0700218onos-install -f '$OC1'
219onos-install -f '$OC2'
220onos-install -f '$OC3'
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700221EOF
222
Jonathan Hart59c036f2015-04-01 16:33:33 -0700223sudo chmod 777 ${USER_HOME}/reset-to-3.sh
224
Jonathan Hartb64ddda2015-04-01 19:39:25 -0700225sudo apt-get clean
Jonathan Hart92cd3a82015-05-03 22:40:30 -0700226sudo rm /etc/apt/apt.conf.d/02proxy
Jonathan Hartb64ddda2015-04-01 19:39:25 -0700227
Jonathan Hartb1e22112015-03-31 16:42:03 -0700228# ------------- Set up each tutorial -------------
229
230create_user tutorial1 "Basic ONOS Tutorial"
Jonathan Hartf5a22f42015-03-31 17:44:40 -0700231
Jonathan Hartfa911cc2015-04-02 23:20:13 -0700232URL='https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.1;f=tutorial1-setup.sh'
Jonathan Hart445aa5c2015-04-02 16:34:22 -0700233wget -O tutorial1-setup.sh $URL
Jonathan Hart4f394b62015-04-03 09:13:52 -0700234sudo -u tutorial1 -H sh -c 'cp tutorial1-setup.sh ~/ && cd ~/ && sh tutorial1-setup.sh'
Jonathan Hart97b81212015-03-27 11:19:22 -0700235
Jonathan Hartd8609332015-04-01 11:16:33 -0700236create_user sdnip "SDN-IP Tutorial"
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700237
Jonathan Hartfa911cc2015-04-02 23:20:13 -0700238SDNIP_URL='https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.1;f=sdnip-setup.sh'
Jonathan Hart445aa5c2015-04-02 16:34:22 -0700239wget -O sdnip-setup.sh $SDNIP_URL
Jonathan Hart4f394b62015-04-03 09:13:52 -0700240sudo -u sdnip -H sh -c 'cp sdnip-setup.sh ~/ && cd ~/ && sh sdnip-setup.sh'
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700241
Jonathan Hartd8609332015-04-01 11:16:33 -0700242create_user distributed "Distributed Tutorial"
Jonathan Hart59c036f2015-04-01 16:33:33 -0700243
Jonathan Hartfa911cc2015-04-02 23:20:13 -0700244DIST_URL='https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.1;f=dist-setup.sh'
Jonathan Hart445aa5c2015-04-02 16:34:22 -0700245wget -O dist-setup.sh $DIST_URL
Jonathan Hart4f394b62015-04-03 09:13:52 -0700246sudo -u distributed -H sh -c 'cp dist-setup.sh ~/ && cd ~/ && sh dist-setup.sh'
Jonathan Hart59c036f2015-04-01 16:33:33 -0700247
Jonathan Hartd8609332015-04-01 11:16:33 -0700248create_user optical "Optical Tutorial"
249
Jonathan Hartfa911cc2015-04-02 23:20:13 -0700250OPT_URL='https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;hb=refs/heads/onos-tutorial-1.1;f=opt-setup.sh'
Jonathan Hart445aa5c2015-04-02 16:34:22 -0700251wget -O opt-setup.sh $OPT_URL
Jonathan Hart4f394b62015-04-03 09:13:52 -0700252sudo -u optical -H sh -c 'cp opt-setup.sh ~/ && cd ~/ && sh opt-setup.sh'
Jonathan Hart59c036f2015-04-01 16:33:33 -0700253
Jonathan Hart97b81212015-03-27 11:19:22 -0700254# ------------- Zero Unused Blocks -------------
255#TODO investigate zerofree
Jonathan Hart6ccaec82015-04-01 14:43:40 -0700256echo "Zeroing unused blocks"
257sync
258dd if=/dev/zero of=tmp-zeros
259sync
260rm tmp-zeros
261sync