blob: 144fbade7afc170a0dde97853715e361f07dc8da (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#!/bin/sh
NR_PEERS=8
BRIDGE_NAME=br0
CONFIG_DIR=/usr/local/gobgp
GOBGP_DOCKER_NAME=gobgp
USE_HOST=0
check_user() {
if [ `whoami` = "root" ]; then
echo "Super user cannot execute! Please execute as non super user"
exit 2
fi
}
run_quagga() {
local docker_name=q$1
docker run --privileged=true -v $CONFIG_DIR/$docker_name:/etc/quagga --name $docker_name -id osrg/quagga
sudo pipework $BRIDGE_NAME $docker_name 10.0.0.$1/16
}
stop_quagga() {
local docker_name=q$1
docker rm -f $docker_name
}
delete_bridge() {
local name=$1
local sysfs_name=/sys/class/net/$name
if [ -e $sysfs_name ]; then
sudo ifconfig $name down
sudo brctl delbr $name
fi
}
while getopts c:n:u OPT
do
case $OPT in
c) CONFIG_DIR="$OPTARG"
;;
n) NR_PEERS="$OPTARG"
;;
u) USE_HOST=1
;;
*) echo "Unknown option"
exit 1
;;
esac
done
shift $((OPTIND - 1))
case "$1" in
start)
i=1
while [ $i -le $NR_PEERS ]
do
run_quagga $i
i=$(( i+1 ))
done
if [ $USE_HOST -eq 1 ]; then
sudo ip addr add 10.0.255.1/16 dev $BRIDGE_NAME
else
docker run --privileged=true -v $CONFIG_DIR:/mnt -d --name $GOBGP_DOCKER_NAME -id osrg/gobgp
sudo pipework $BRIDGE_NAME $GOBGP_DOCKER_NAME 10.0.255.1/16
fi
;;
stop)
i=1
while [ $i -le $NR_PEERS ]
do
stop_quagga $i
i=$(( i+1 ))
done
delete_bridge $BRIDGE_NAME
docker rm -f $GOBGP_DOCKER_NAME
;;
install)
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
sudo sh -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get install -y --force-yes lxc-docker-1.3.2
sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
sudo gpasswd -a `whoami` docker
sudo apt-get install -y --force-yes emacs23-nox
sudo apt-get install -y --force-yes wireshark
sudo apt-get install -y --force-yes iputils-arping
sudo apt-get install -y --force-yes bridge-utils
sudo apt-get install -y --force-yes tcpdump
sudo apt-get install -y --force-yes lv
sudo wget https://raw.github.com/jpetazzo/pipework/master/pipework -O /usr/local/bin/pipework
sudo chmod 755 /usr/local/bin/pipework
sudo docker pull osrg/quagga
sudo docker pull osrg/gobgp
sudo mkdir /usr/local/gobgp
sudo docker run --privileged=true -v /usr/local/gobgp:/mnt --name gobgp --rm osrg/gobgp go run /root/gobgp/tools/route-server/quagga-rsconfig.go -c /mnt
;;
*)
echo $1
echo "Usage: root-server-docker {start|stop|install}"
exit 2
;;
esac
|