blob: 260d52f9b22adf019f0d1b99ce633bb173f7bfa0 [file] [log] [blame]
Luca Prete8137ffc2016-08-16 11:53:45 -07001#!/bin/bash
2# vm-setup.sh
3#
4# This script installs ONOS dependencies and installs a desktop environment on a Miniet VM.
5
6ONOS_USER=mininet
7ONOS_USER_HOME=/home/${ONOS_USER}
8
9ECLIPSE_URL=http://download.eclipse.org/technology/epp/downloads/release/luna/R/eclipse-java-luna-R-linux-gtk-x86_64.tar.gz
10
11sudo apt-get update
12=======
13oracle-java8-installer shared/accepted-oracle-license-v1-1 select true
14oracle-java8-installer shared/accepted-oracle-license-v1-1 seen true
15
16sudo add-apt-repository -y ppa:webupd8team/java
17
18sudo apt-get update
19
20sudo apt-get install -y git maven unzip curl wget lxc virtualbox-guest-utils wireshark \
21quagga erlang make gcc autoconf openssl libssl0.9.8 libssl-dev libncurses5 libncurses5-dev \
22oracle-java8-installer oracle-java8-set-default
23
24# -------------- Setup keys -------------------
25
26mkdir -p ~/.ssh
27ssh-keygen -t rsa -P "" -f .ssh/id_rsa
28
29# -------------- Setup 3-node LXC cluster ----------------
30
31sudo lxc-create --name onos1 -t download -- --dist ubuntu --release utopic --arch amd64
32
33sudo sh -c "echo lxc.start.auto=1 >> /var/lib/lxc/onos1/config"
34
35sudo sh -c "sed -i s/dhcp/static/ /var/lib/lxc/onos1/rootfs/etc/network/interfaces"
36sudo sh -c "cat << EOF >> /var/lib/lxc/onos1/rootfs/etc/network/interfaces
37 address 10.0.3.11
38 netmask 255.255.255.0
39 gateway 10.0.3.1
40 dns-nameservers 10.0.3.1
41EOF"
42
43sudo lxc-start --name onos1 --daemon
44
45sudo lxc-ls --fancy
46sleep 5
47sudo lxc-ls --fancy
48sudo lxc-attach --name onos1 -- ip a
49
50sudo lxc-attach --name onos1 -- useradd -m sdn -s /bin/bash
51sudo lxc-attach --name onos1 -- /bin/bash -c "echo sdn:rocks | chpasswd"
52sudo lxc-attach --name onos1 -- /bin/bash -c "echo \"sdn ALL=(ALL) NOPASSWD:ALL\" > /etc/sudoers.d/sdn"
53sudo lxc-attach --name onos1 -- oracle-java8-installer shared/accepted-oracle-license-v1-1 select true
54sudo lxc-attach --name onos1 -- oracle-java8-installer shared/accepted-oracle-license-v1-1 seen true
55sudo lxc-attach --name onos1 -- apt-get update
56sudo lxc-attach --name onos1 -- apt-get install -y openssh-server oracle-java8-installer oracle-java8-set-default
57
58sudo mkdir -p /var/lib/lxc/onos1/rootfs/home/sdn/.ssh
59sudo cp ~/.ssh/id_rsa.pub /var/lib/lxc/onos1/rootfs/home/sdn/.ssh/authorized_keys
60sudo lxc-attach --name onos1 -- chown sdn:sdn /home/sdn/.ssh/authorized_keys
61sudo lxc-attach --name onos1 -- chmod 600 /home/sdn/.ssh/authorized_keys
62
63sudo lxc-attach --name onos1 -- apt-get clean
64
65sudo lxc-stop --name onos1
66
67# Clone the first node to create two more nodes
68sudo lxc-clone onos1 onos2
69sudo sh -c "sed -i s/10.0.3.11/10.0.3.12/ /var/lib/lxc/onos2/rootfs/etc/network/interfaces"
70
71sudo lxc-clone onos1 onos3
72sudo sh -c "sed -i s/10.0.3.11/10.0.3.13/ /var/lib/lxc/onos3/rootfs/etc/network/interfaces"
73
74sudo lxc-start --name onos1
75sudo lxc-start --name onos2
76sudo lxc-start --name onos3
77
78sleep 10
79>>>>>>> Stashed changes
80
81# ------------- Install ONOS Dependencies -------------
82oracle-java8-installer shared/accepted-oracle-license-v1-1 select true
83oracle-java8-installer shared/accepted-oracle-license-v1-1 seen true
84sudo add-apt-repository -y ppa:webupd8team/java
85sudo apt-get update
86sudo apt-get install -y oracle-java8-installer oracle-java8-set-default
87sudo apt-get install -y maven
88
89# CLI dependencies
90sudo apt-get install -y python-flask python-cmd2 python-pyparsing
91
92# -------------- Setup Desktop ----------------
93sudo apt-get install -y xorg lxde
94
95#TODO: add backgrounds folder
96#TODO: change background
97# Remove wallpaper, change background color, and disable screensaver
98sudo sed -i 's/wallpaper_mode=1/wallpaper_mode=0/g' /usr/share/lxde/pcmanfm/LXDE.conf
99sudo sed -i 's/desktop_bg=#000000/desktop_bg=#104187/g' /usr/share/lxde/pcmanfm/LXDE.conf
100sudo sed -i '/screensaver/d' /etc/xdg/lxsession/LXDE/autostart
101
102DESKTOP=${ONOS_USER_HOME}/Desktop
103
104mkdir -p ${DESKTOP}
105
106cat > ${DESKTOP}/Eclipse << EOF
107[Desktop Entry]
108Encoding=UTF-8
109Type=Application
110Name=Eclipse
111Name[en_US]=Eclipse
112Icon=/opt/eclipse/icon.xpm
113Exec=/usr/bin/eclipse
114Comment[en_US]=
115EOF
116
117cat > ${DESKTOP}/Terminal << EOF
118[Desktop Entry]
119Encoding=UTF-8
120Type=Application
121Name=Terminal
122Name[en_US]=Terminal
123Icon=konsole
124Exec=/usr/bin/x-terminal-emulator
125Comment[en_US]=
126EOF
127
128cat > ${DESKTOP}/Gerrit << EOF
129[Desktop Entry]
130Encoding=UTF-8
131Type=Application
132Name=ONOS Gerrit
133Name[en_US]=ONOS Gerrit
134Icon=internet-web-browser
135Exec=/usr/bin/chromium-browser http://gerrit.onlab.us
136Comment[en_US]=
137EOF
138
139cat > ${DESKTOP}/Docs << EOF
140[Desktop Entry]
141Encoding=UTF-8
142Type=Application
143Name=ONOS Docs
144Name[en_US]=ONOS Docs
145Icon=internet-web-browser
146Exec=/usr/bin/chromium-browser http://docs.onos.onlab.us
147Comment[en_US]=
148EOF
149
150cat > ${DESKTOP}/Wireshark << EOF
151[Desktop Entry]
152Encoding=UTF-8
153Type=Application
154Name=Wireshark
155Name[en_US]=Wireshark
156Icon=wireshark
157Exec=/usr/bin/wireshark
158Comment[en_US]=
159EOF
160
161# ------------- Install Other Tools -------------
162sudo apt-get install -y wireshark
163# Enable root-less wireshark and add mininet
164echo "Enabling wireshark group"
165echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections
166sudo dpkg-reconfigure -f noninteractive wireshark-common
167sudo usermod -a -G wireshark mininet
168
169sudo apt-get install -y git-review
170
171wget -c -N -O /tmp/eclipse.tar.gz ${ECLIPSE_URL}
172tar xzf /tmp/eclipse.tar.gz
173sudo mv eclipse /opt
174sudo ln -s /opt/eclipse/eclipse /usr/bin/eclipse
175
176# ------------ Change username and hostname ---------------
177echo 'mininet:onos' | sudo chpasswd
178sudo mv /home/mininet /home/onos
179sudo sed -i 's/mininet/onos/g' /etc/group /etc/gshadow /etc/hosts /etc/hostname /etc/passwd /etc/shadow /etc/sudoers