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