Jonathan Hart | 53433b5 | 2015-03-26 17:23:34 -0700 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # vm-setup.sh |
| 3 | # |
| 4 | # This script sets up the VM ready to run ONOS and tutorials, including installing an LXC cluster |
| 5 | # for ONOS to run in. |
| 6 | |
| 7 | sudo apt-get update |
| 8 | |
Jonathan Hart | 5815d9e | 2015-03-26 17:38:24 -0700 | [diff] [blame] | 9 | # TODO erlang, quagga, wireshark |
Jonathan Hart | 047c903 | 2015-03-26 20:18:40 -0700 | [diff] [blame] | 10 | #sudo apt-get install -y git openjdk-8-jdk maven unzip curl make gcc wget autoconf openssl libssl0.9.8 libssl-dev libncurses5 libncurses5-dev lxc |
Jonathan Hart | 17a0039 | 2015-03-26 22:24:25 -0700 | [diff] [blame] | 11 | #sudo apt-get install -y git openjdk-8-jdk maven unzip curl wget lxc |
| 12 | sudo apt-get install -y git wget curl lxc |
Jonathan Hart | 53433b5 | 2015-03-26 17:23:34 -0700 | [diff] [blame] | 13 | sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java |
| 14 | sudo update-alternatives --set javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac |
| 15 | |
Jonathan Hart | c397cf2 | 2015-03-27 08:04:08 -0700 | [diff] [blame^] | 16 | # -------------- Setup keys ------------------- |
| 17 | |
| 18 | mkdir -p ~/.ssh |
| 19 | ssh-keygen -t rsa -P "" -f .ssh/id_rsa |
| 20 | #cp .ssh/id_rsa.pub .ssh/authorized_keys |
| 21 | |
| 22 | # -------------- Setup 3-node LXC cluster ---------------- |
| 23 | |
Jonathan Hart | 2f4271d | 2015-03-26 18:40:57 -0700 | [diff] [blame] | 24 | sudo lxc-create --name onos1 -t download -- --dist ubuntu --release utopic --arch amd64 |
Jonathan Hart | 53433b5 | 2015-03-26 17:23:34 -0700 | [diff] [blame] | 25 | |
Jonathan Hart | c397cf2 | 2015-03-27 08:04:08 -0700 | [diff] [blame^] | 26 | sudo sh -c "echo lxc.start.auto=1 >> /var/lib/lxc/onos1/config" |
Jonathan Hart | 53433b5 | 2015-03-26 17:23:34 -0700 | [diff] [blame] | 27 | |
Jonathan Hart | 4bb029f | 2015-03-26 22:45:15 -0700 | [diff] [blame] | 28 | sudo sh -c "sed -i s/dhcp/static/ /var/lib/lxc/onos1/rootfs/etc/network/interfaces" |
| 29 | sudo sh -c "cat << EOF >> /var/lib/lxc/onos1/rootfs/etc/network/interfaces |
| 30 | address 10.0.3.11 |
| 31 | netmask 255.255.255.0 |
| 32 | gateway 10.0.3.1 |
| 33 | dns-nameservers 10.0.3.1 |
| 34 | EOF" |
| 35 | |
Jonathan Hart | 53433b5 | 2015-03-26 17:23:34 -0700 | [diff] [blame] | 36 | sudo lxc-start --name onos1 --daemon |
Jonathan Hart | c397cf2 | 2015-03-27 08:04:08 -0700 | [diff] [blame^] | 37 | |
Jonathan Hart | a897f4e | 2015-03-26 22:31:41 -0700 | [diff] [blame] | 38 | sudo lxc-ls --fancy |
Jonathan Hart | c397cf2 | 2015-03-27 08:04:08 -0700 | [diff] [blame^] | 39 | sleep 5 |
Jonathan Hart | a897f4e | 2015-03-26 22:31:41 -0700 | [diff] [blame] | 40 | sudo lxc-ls --fancy |
Jonathan Hart | 17a0039 | 2015-03-26 22:24:25 -0700 | [diff] [blame] | 41 | sudo lxc-attach --name onos1 -- ip a |
Jonathan Hart | c397cf2 | 2015-03-27 08:04:08 -0700 | [diff] [blame^] | 42 | |
Jonathan Hart | 53433b5 | 2015-03-26 17:23:34 -0700 | [diff] [blame] | 43 | sudo lxc-attach --name onos1 -- useradd -m sdn -s /bin/bash |
| 44 | sudo lxc-attach --name onos1 -- /bin/bash -c "echo sdn:rocks | chpasswd" |
| 45 | sudo lxc-attach --name onos1 -- /bin/bash -c "echo \"sdn ALL=(ALL) NOPASSWD:ALL\" > /etc/sudoers.d/sdn" |
| 46 | sudo lxc-attach --name onos1 -- apt-get update |
Jonathan Hart | c397cf2 | 2015-03-27 08:04:08 -0700 | [diff] [blame^] | 47 | sudo lxc-attach --name onos1 -- apt-get install -y openssh-server openjdk-8-jre-headless |
| 48 | |
Jonathan Hart | 53433b5 | 2015-03-26 17:23:34 -0700 | [diff] [blame] | 49 | sudo lxc-stop --name onos1 |
Jonathan Hart | c397cf2 | 2015-03-27 08:04:08 -0700 | [diff] [blame^] | 50 | |
| 51 | mkdir -p /var/lib/lxc/onos1/rootfs/home/sdn/.ssh |
| 52 | sudo cp ~/.ssh/id_rsa.pub /var/lib/lxc/onos1/rootfs/home/sdn/.ssh/authorized_keys |
| 53 | sudo chmod 666 /var/lib/lxc/onos1/rootfs/home/sdn/.ssh/authorized_keys |
| 54 | |
| 55 | sudo lxc-clone onos1 onos2 |
| 56 | sudo sh -c "sed -i s/10.0.3.11/10.0.3.12 /var/lib/lxc/onos2/rootfs/etc/network/interfaces" |
| 57 | |
| 58 | sudo lxc-clone onos1 onos3 |
| 59 | sudo sh -c "sed -i s/10.0.3.11/10.0.3.13 /var/lib/lxc/onos3/rootfs/etc/network/interfaces" |
| 60 | |
| 61 | sudo lxc-start --name onos1 |
| 62 | sudo lxc-start --name onos2 |
| 63 | sudo lxc-start --name onos3 |
| 64 | |
| 65 | sleep 5 |
| 66 | |
| 67 | sudo lxc-ls --fancy |
| 68 | |
| 69 | # -------------- Install ONOS ---------------- |
| 70 | |
| 71 | USER=mininet |
| 72 | USER_HOME=/home/${USER} |
| 73 | |
| 74 | cd ~ |
| 75 | git clone https://gerrit.onosproject.org/onos |
| 76 | cd onos && git checkout 1.1.0 && cd - |
| 77 | |
| 78 | echo $JAVA_HOME |
| 79 | export JAVA_HOME="" |
| 80 | cd $ONOS_ROOT && mvn clean install && mvn dependency:go-offline && cd - |
| 81 | |
| 82 | cat << EOF >> onos/tools/test/cells/tutorial |
| 83 | export ONOS_NIC=10.0.3.* |
| 84 | export OC1="10.0.3.11" |
| 85 | export OC1="10.0.3.12" |
| 86 | export OC1="10.0.3.13" |
| 87 | export OCI="${OC1}" |
| 88 | export ONOS_FEATURES="webconsole,onos-rest,onos-gui,onos-api,onos-core,onos-cli,onos-openflow" |
| 89 | export ONOS_USER="sdn" |
| 90 | EOF |
| 91 | |
| 92 | cell tutorial |
| 93 | |
| 94 | onos-package |
| 95 | onos-group install -f |
| 96 | onos-wait-for-start $OC1 |
| 97 | onos-wait-for-start $OC2 |
| 98 | onos-wait-for-start $OC3 |
| 99 | |
| 100 | sleep 20 |
| 101 | onos 1 "nodes" |