Add Fuel OVS plugin demo script

Change-Id: I558e8ade392f7649ca938f8eb841de285b69bf6b
Signed-off-by: Guo Ruijing <ruijing.guo@intel.com>
This commit is contained in:
Guo Ruijing 2016-05-31 13:37:01 +08:00
parent 10894a064c
commit 37cc96b2fa
8 changed files with 427 additions and 0 deletions

64
demo/01_setup_network.sh Executable file
View File

@ -0,0 +1,64 @@
#!/bin/sh
HTTP_PROXY=http://10.19.8.225:911
DNS_SERVER=10.248.2.1
SOCK5_IP=10.7.211.16
SOCK5_PORT=1080
cat <<EOF | sudo tee /etc/apt/apt.conf
Acquire::http::Proxy "$HTTP_PROXY";
EOF
sudo apt-get update -y
sudo apt-get install redsocks -y
cat <<EOF | sudo tee /etc/redsocks.conf
base {
log_debug = on;
log_info = on;
log = "file:/root/proxy.log";
daemon = on;
redirector = iptables;
}
redsocks {
local_ip = 0.0.0.0;
local_port = 6666;
ip = $SOCK5_IP;
port = $SOCK5_PORT;
type = socks5;
}
EOF
sudo apt-get install iptables -y
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t filter -F
sudo iptables -t mangle -F
sudo iptables -t nat -F
#DNS DNAT
sudo iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination $DNS_SERVER
#NTP DNAT
sudo iptables -t nat -A PREROUTING -p udp --dport 123 -j DNAT --to-destination 10.20.0.1
sudo iptables -t nat -A POSTROUTING -s 10.20.0.0/24 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -j MASQUERADE
sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 6666
sudo iptables -t nat -A REDSOCKS -p udp -j REDIRECT --to-ports 9999
sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS
sudo iptables -t nat -A PREROUTING -p tcp -j REDSOCKS
sudo service redsocks restart

28
demo/02_install_packages.sh Executable file
View File

@ -0,0 +1,28 @@
#!/bin/sh
cat << EOF | sudo tee /etc/sudoers.d/fuel
fuel ALL = (root) NOPASSWD:ALL
EOF
sudo apt-get update -y
sudo apt-get install openssh-server -y
sudo apt-get autoremove gnome-settings-daemon-schemas -y
sudo apt-get autoremove libmetacity-private0a metacity-common -y
sudo apt-get install gnome-session gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal -y
sudo apt-get install virt-manager libvirt-bin qemu-system -y
sudo virsh net-destroy default
sudo virsh net-undefine default
sudo rm -rf /etc/libvirt/qemu/networks/autostart/default.xml
sudo service libvirt-bin restart
sudo ifconfig virbr0 down
sudo brctl delbr virbr0
sudo apt-get install putty-tools -y
sudo service ntp stop
sudo apt-get autoremove ntp -y
sudo rm -rf /etc/ntp.conf.dpkg-old
sudo rm -rf /etc/ntp.conf
sudo apt-get install ntp -y --force-yes
sudo bash -c 'cat << EOF >> /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 10
EOF'

25
demo/03_setup_vnc.sh Executable file
View File

@ -0,0 +1,25 @@
#!/bin/sh
rm -rf ~/.vnc; mkdir ~/.vnc
echo "123456\n123456\n" | vncpasswd
cat << EOF > ~/.vnc/xstartup
#!/bin/bash
DESK_TYPE=gnome
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
vncconfig -nowin &
gnome-session &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus -n &
gnome-terminal &
EOF
chmod 755 ~/.vnc/xstartup
vnc4server -geometry 1650x950 -depth 16 &
echo "vnc password is 123456"

69
demo/04_setup_fuel.sh Executable file
View File

@ -0,0 +1,69 @@
#!/bin/bash
#setup ntp server
sudo service ntp restart
#setup network
sudo ifconfig br-eth0 down
sudo brctl delbr br-eth0
sudo brctl addbr br-eth0
sudo ifconfig br-eth0 10.20.0.1/24 up
sudo ifconfig br-eth1 down
sudo brctl delbr br-eth1
sudo brctl addbr br-eth1
sudo ifconfig br-eth1 172.16.0.1/24 up
sudo ifconfig br-dpdk down
sudo brctl delbr br-dpdk
sudo brctl addbr br-dpdk
#setup master
sudo virt-manager
sudo virsh destroy fuel-master
sudo rm -rf /var/lib/libvirt/images/fuel-master.img
sudo qemu-img create -f qcow2 /var/lib/libvirt/images/fuel-master.img 200G
mkdir -p vms
iso=`pwd`/`ls *.iso`
sed "s~ISO_FILE~$iso~g" fuel-master.xml > vms/fuel-master.xml
sudo virsh create vms/fuel-master.xml
#login fuel master
sleep 30
rm -rf ~/.ssh/known_hosts
sudo rm -rf ~/.putty
inprog=1
while [ $inprog -ne 0 ]
do
echo "y\n" | plink -ssh -pw r00tme root@10.20.0.2 "echo y" >& /dev/null
inprog=$?
sleep 20
done
#cat astute.yaml | plink -ssh -pw r00tme root@10.20.0.2 "dd of=/etc/fuel/astute.yaml"
#echo plink -ssh -pw r00tme root@10.20.0.2 "pkill fuelmenu"
inprog=1
while [ $inprog -ne 0 ]
do
echo "y\n" | plink -ssh -pw r00tme root@10.20.0.2 "grep 'Fuel node deployment complete' /var/log/puppet/bootstrap_admin_node.log " >& /dev/null
inprog=$?
sleep 20
done
#setup slave
for i in {1..4}; do
sudo virsh destroy fuel-slave-$i
sudo rm -rf /var/lib/libvirt/images/fuel-slave-${i}.img
sudo qemu-img create -f qcow2 /var/lib/libvirt/images/fuel-slave-${i}.img 200G
sed "s/FUEL_SLAVE/fuel-slave-$i/g" fuel-slave.xml > vms/fuel-slave-${i}.xml
sudo virsh create vms/fuel-slave-${i}.xml
done
#setup web browser
firefox https://10.20.0.2:8443 >& /dev/null &

13
demo/05_destroy_fuel.sh Executable file
View File

@ -0,0 +1,13 @@
#!/bin/bash
sudo virt-manager
#destroy master
sudo virsh destroy fuel-master
sudo rm -rf /var/lib/libvirt/images/fuel-master.img
#destroy slave
for i in {1..4}; do
sudo virsh destroy fuel-slave-$i
sudo rm -rf /var/lib/libvirt/images/fuel-slave-${i}.img
done

42
demo/README.md Normal file
View File

@ -0,0 +1,42 @@
Fuel OVS Plugin Demo Script
===========================
Overview
--------
This directory includes scripts to setup fuel ovs plugin demo.
The scripts are ONLY tested in new installation of Ubuntu 14.04.03 Desktop
64bit. Extra configuration or Extra packages such as virtualbox may break
functionality. All packages or network configuration are provided by the
the following scripts.
Scripts
-------
1. 01_setup_network.sh
The script is to setup socks5 proxy. You may change the script to support
NAT. The following network setting is updated before running the script:
a. HTTP_PROXY: proxy for package installation
b. DNS_SERVER: DNS for fuel VM
c. SOCK5_IP: socks5 proxy for fuel VM
d. SOCK5_PORT: socks5 proxy for fuel VM
2. 02_install_packages.sh
The script is to install all packages
3. 03_setup_vnc.sh
The script is to setup vnc. Default vnc password is 123456.
4. 04_setup_fuel.sh
The script is to create 1 master VM and 4 slave VMs. Fuel ISO is copied to this
directory before running the script.
5. 05_destroy_fuel.sh
The script is to destroy 1 master VM and 4 slave VMs.

94
demo/fuel-master.xml Normal file
View File

@ -0,0 +1,94 @@
<domain type='kvm' id='5'>
<name>fuel-master</name>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>4</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-i440fx-trusty'>hvm</type>
<boot dev='hd'/>
<boot dev='cdrom'/>
<bootmenu enable='yes'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/fuel-master.img'/>
<target dev='hda' bus='ide'/>
<alias name='ide0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='ISO_FILE' />
<target dev='hdc' bus='ide'/>
<readonly/>
<alias name='ide0-1-0'/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<controller type='usb' index='0'>
<alias name='usb0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'>
<alias name='pci.0'/>
</controller>
<controller type='ide' index='0'>
<alias name='ide0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<interface type='bridge'>
<source bridge='br-eth0'/>
<target dev='vnet0'/>
<model type='virtio'/>
<alias name='net0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<source path='/dev/pts/16'/>
<target port='0'/>
<alias name='serial0'/>
</serial>
<console type='pty' tty='/dev/pts/16'>
<source path='/dev/pts/16'/>
<target type='serial' port='0'/>
<alias name='serial0'/>
</console>
<input type='tablet' bus='usb'>
<alias name='input0'/>
</input>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>
<listen type='address' address='127.0.0.1'/>
</graphics>
<sound model='ich6'>
<alias name='sound0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<alias name='video0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<alias name='balloon0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</memballoon>
</devices>
<seclabel type='dynamic' model='apparmor' relabel='yes'>
</seclabel>
</domain>

92
demo/fuel-slave.xml Normal file
View File

@ -0,0 +1,92 @@
<domain type='kvm' id='75'>
<name>FUEL_SLAVE</name>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>4</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='x86_64' machine='pc-i440fx-trusty'>hvm</type>
<boot dev='network'/>
<boot dev='hd'/>
<bootmenu enable='no' />
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode='custom' match='exact'>
<model fallback='allow'>SandyBridge</model>
<vendor>Intel</vendor>
<feature policy='require' name='vmx'/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/FUEL_SLAVE.img'/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
<controller type='usb' index='0'>
<alias name='usb0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'>
<alias name='pci.0'/>
</controller>
<interface type='bridge'>
<source bridge='br-eth0'/>
<model type='e1000' />
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='bridge'>
<source bridge='br-eth1'/>
<model type='e1000' />
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</interface>
<interface type='bridge'>
<source bridge='br-dpdk'/>
<model type='e1000' />
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</interface>
<serial type='pty'>
<source path='/dev/pts/20'/>
<target port='0'/>
<alias name='serial0'/>
</serial>
<console type='pty' tty='/dev/pts/20'>
<source path='/dev/pts/20'/>
<target type='serial' port='0'/>
<alias name='serial0'/>
</console>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>
<listen type='address' address='127.0.0.1'/>
</graphics>
<sound model='ich6'>
<alias name='sound0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<alias name='video0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<alias name='balloon0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</memballoon>
</devices>
<seclabel type='dynamic' model='apparmor' relabel='yes'>
</seclabel>
</domain>