https://github.com/jaymzh/scale14x-fboss-demo
https://github.com/jaymzh/scale14x-fboss-demo
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/jaymzh/scale14x-fboss-demo
- Owner: jaymzh
- Created: 2016-01-12T20:45:03.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-03-16T07:45:02.000Z (over 10 years ago)
- Last Synced: 2025-03-24T01:43:55.770Z (over 1 year ago)
- Language: HTML
- Size: 623 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FBOSS Demo
This is everything used to produce the FBOSS demo at SCALE 14X.
## Setup
### Keypairs
You will need to sets of SSH keys - one for root and one for "demo" access. Create them as id_rsa-fboss_demo (and `id_rsa-fboss_demo.pub`) and `id_rsa-fboss_root` (and `id_rsa-fboss_root`). There should be no passphrase on the `demo` key, but a passphrase on the `root` key.
### Setting up the USB key
We setup a USB key to hold the important bits to build reset the demo in case of a problem.
* Copy this all to a USB key
* Copy the SSH keys into `.ssh/` on the USB key.
### Settting up the laptop
First make sure that the `demo` user is setup and has a ~/.ssh directory.
Mount the usb key as root on the laptop, cd to the mount point as (again, as root) run `reset_laptop.sh`. This will do the following:
* Copy the relevant keys to ~demo/.ssh/
* Not provide write-access to said keys
* Update /etc/hosts with IP addresses we'll later use for the switches to be `fboss1`, `fboss2`, and `fboss3`.
* Copy over a fluxbox config - see below
What window manager you setup is up to you... if you use fluxbox the provided configs will:
* set a default resolution - you probably want to change it
* Auto-setup 4 windows on login, where 3 of them SSH to the the relevant switches
* Setup keybindings:
** alt+1 - Virtual terminal 1 (where the shells will be)
** alt+2 - Virtual terminal 2 (where the web browser will be)
** alt+t - Open a new virtual terminal
** alt+w - Open a web browser
### Setting up the switches
Follow the ONL guides to setup the latest version of FBOSS on three switches. Once they're basically functional (`fboss_route.py list_routes` works).
Now setup the netowrking so that ma1 will come up with the right address:
* Update `/mnt/flash/boot-config` to set `NETAUTO` to `static`.
* Update `/etc/network/interfaces` to add the following block:
```
auto ma1
iface ma1 inet static
address 10.1.1.1
netmask 255.255.255.0
broadcast 10.1.1.255
```
Changing `ipaddress` to update the last octet to match the switch number (10.1.1.1 for fboss1, 10.1.1.2 for fboss2, 10.1.1.3 for fboss3).
We set our laptop to be `10.1.1.250`.
Once everything has the right IP, mount the USB key as root and run `./reset_switch.sh`.
This will:
* Copy over FBOSS configs
* Update the init script for FBOSS (won't be necessary after https://github.com/opennetworklinux/fboss-package/pull/3 is merged(
* Copy over the `scaledemo.sh` script
* Restart the FBOSS agent
And that should set them up for success.
### BMC Considerations
In order for the Hardware Stats demo to work, you need to configure the `usb0` interface between the microserver and the BMC. This is done by adding this to the `interfaces` file on the microserver:
```
auto usb0
iface usb0 inet static
address 192.168.0.2
broadcast 192.168.0.255
netmask 255.255.255.0
```
And this to the `interfaces` file on the BMC:
```
auto usb0
iface usb0 inet static
address 192.168.0.1
broadcast 192.168.0.255
netmask 255.255.255.0
```
Now, doing so means that one can SSH between the two so you'll want to change the default root password on the BMC.
#### Persisting BMC Configs
By default none of these things will persist on a BMC reboot. To make these persistent you need to copy the relevant files to the persistent flash:
```
cd /mnt/data
mkdir -p etc/network
cp /etc/network/interfaces etc/network/
cp /etc/{passwd,shadow} etc
```
And then create a rc.early hook to change the real files to symlinks to your new files. Make `/mnt/data/etc/rc.early`
```
#!/bin/bash
files="network/interfaces passwd shadow"
for file in $files; do
echo "Restoring /etc/$file"
rm -f /etc/$file
ln -s /mnt/data/etc/$file /etc/$file
done
```
Now you can run that `rc.early` script to move everything around and now things should be persistent. (`/etc/init.d/rc.early` calls `/mnt/data/etc/rc.early`).
## Running the Demo
Put the html somewhere on local disk and open up a web-browser to point to it. Then open 3 windows and ssh to each switch.