This is an old revision of the document!
Getting Copper sandbox ("Academy") up and running (Bryan)
This will setup a basic functional assessment platform (a learning "academy") ala Sandbox prior to getting a BGS environment that we can use. As compared to Sandbox, the goal of this activity is rather to install the actual OPNFV components as listed for BGS, under a single node (e.g. a laptop with lots of memory) or multi-node environment.
The procedure below has been used to create a 3-node OPNFV install using Intel NUC i7 nodes with 16GB RAM, 250MB SSD, and 1 TB HDD. The install uses one NUC for the Jumphost, and one each for the controller (OpenStack + ODL) and the compute nodes.
-
install Centos 7 x86_64 minimal server: CentOS-7-x86_64-Minimal-1503-01.iso
during install, add user opnfv
once active, login to opnfv account from console
ip addr
su
visudo
opnfv ALL=(ALL) ALL
sudo yum -y update
sudo shutdown -r 0
sudo vi /etc/hostname
jumphost1.opnfv.org
sudo systemctl disable NetworkManager
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s25
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR=192.168.1.201
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
NM_CONTROLLED="no"
(rest as-is)
sudo service network restart
sudo vi /etc/resolv.conf
8.8.8.8
sudo setenforce 0
sudo sed -i 's/SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo yum -y install ntp
sudo systemctl start ntpd
date
Set NUCs to PXE boot on wake-on-lan
-
In BIOS options (F2), Power tab, set "Wake on
LAN from S4/S5" to "Power On - PXE Boot" and save (F10)
Boot NUCs and note MAC addresses, so they can be included in the wakenodes.sh script referenced below
The "1"and "2" below refer to the 3-node installs ("PODS") which must be in independent networks (e.g. behind distinct internet gateway routers) so they don't conflict. Within each POD the node names and assigned IP addresses etc are the same.
NUC1 JUMPHOST1 B8:AE:ED:76:FC:WB
NUC2 OSCONTROLLER1 B8:AE:ED:76:FB:45
NUC3 OSCOMPUTE1 B8:AE:ED:76:FB:C4
NUC4 JUMPHOST2 B8:AE:ED:76:A4:E9
NUC5 OSCONTROLLER2 B8:AE:ED:76:F9:FF
NUC6 OSCOMPUTE2 B8:AE:ED:76:C5:ED
sudo yum -y install net-tools
sudo yum -y install git
cd ~
git clone https://blsaws@gerrit.opnfv.org/gerrit/genesis
curl "https://gerrit.opnfv.org/gerrit/gitweb?p=genesis.git;a=snapshot;h=756ee8c81cfac9a69e8f67811429e63da9af6480;sf=tgz" -o genesis-756ee8c.tar.gz
gzip -d genesis-756ee8c.gz
tar -xvf genesis-756ee8c.tar
modify to clone khaleesi from my fork (trozet⇒blsaws) per the patches below
note: if you want to use the wakenodes.sh script, you will need to fork my repo and mod wakenodes.sh for your MACs
vi ~/genesis-756ee8c/foreman/ci/bootstrap.sh
if ! git clone -b opnfv https://github.com/blsaws/khaleesi.git; then
vi ~/genesis-756ee8c/foreman/ci/opnfv_ksgen_settings_no_HA.yml
# Jumphost1:
# (for compute1:)
name: oscompute1.{{ domain_name }}
hostname: oscompute1.{{ domain_name }}
short_name: oscompute1
mac_address: "B8:AE:ED:76:FB:C4"
# (for controller1:)
name: oscontroller1.{{ domain_name }}
hostname: oscontroller1.{{ domain_name }}
short_name: oscontroller1
mac_address: "B8:AE:ED:76:FB:45"
private_mac: "B8:AE:ED:76:FB:45"
# Jumphost2:
# (for compute1:)
name: oscompute1.{{ domain_name }}
hostname: oscompute1.{{ domain_name }}
short_name: oscompute1
mac_address: "B8:AE:ED:76:C5:ED"
# (for controller1:)
name: oscontroller1.{{ domain_name }}
hostname: oscontroller1.{{ domain_name }}
short_name: oscontroller1
mac_address: "B8:AE:ED:76:F9:FF"
private_mac: "B8:AE:ED:76:F9:FF"
clone my fork of trozet's khaleesi, updated with patches
it will later be cloned by the foreman vm, so these patches will be available in the foreman vm
cd /opt
sudo git clone -b opnfv https://github.com/blsaws/khaleesi.git
during initial debugging, the patches were manually created as below; later they were pulled from the repo fork after being committed
patch 1: add wakenodes.sh to root of khaleesi repo
sudo vi /opt/khaleesi/wakenodes.sh
# !/bin/bash
yum -y install net-tools
ether-wake B8:AE:ED:76:FB:C4
ether-wake B8:AE:ED:76:FB:45
ether-wake B8:AE:ED:76:F9:FF
ether-wake B8:AE:ED:76:C5:ED
sudo vi /opt/khaleesi/roles/get_nodes/foreman/tasks/main.yml
- script: /opt/khaleesi/wakenodes.sh
During initial debugging main.yml was copied to the shared folder for the foreman vm and later copied to the cloned repo in the foreman vm.
patch 3: in foreman.py skip IPMI related code in node bringup
In khaleesi/library/foreman.py exit early to avoid IPMI code
change "elif ipmi_host is None:" to "if ipmi_host is None:" and add module.exit before i
sudo vi /opt/khaleesi/library/foreman.py
# bryan_att modified to skip IPMI stuff
module.exit_json(changed=True, msg="Rebuilding Node")
# change elif to if so the module.exit is outside the previous if block
if ipmi_host is None:
cd ~/genesis-756ee8c/foreman/ci/
sudo ./deploy.sh -single_baremetal_nic enp0s25 -base_config /home/opnfv/genesis-756ee8c/foreman/ci/opnfv_ksgen_settings_no_HA.yml
su
cd /var/opt/opnfv/foreman_vm
vagrant destroy -f
cd -
rm -rf /var/opt/opnfv
exit
Take 5 - OpenStack on main host and compute hosts under KVM
OpenStack running in a VM had touble being reachable from compute hosts outside the main host machine. So dropping back to running OpenStack on the host machine directly, until I figure out how to resolve the connectivity issue (maybe the bridged networking config below would help with that - it's a recent change which was needed to allow the compute hosts running in VMs to connect to OpenStack…).
Starting with Ubuntu 14.04 LTS Server
installed with SSH server, LAMP, Tomcat Java, and Virtualization as options
Get the basic server setup
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ubuntu-desktop
sudo apt-get install virtinst
sudo apt-get install virt-manager
sudo apt-get install hal-info
sudo apt-get install qemu-system
sudo apt-get install git -y
Setup bridged networking for local VMs
sudo /etc/init.d/networking restart
to be safe, reboot
Install OpenStack
-
cd devstack
customize the configurtion file that will used to setup OpemStack
cp samples/local.conf .
vi local.conf
FLAT_INTERFACE=(your ethernet interface)
ADMIN_PASSWORD=(something you will remember - you will use this to login to the Horizon UI)
MYSQL_PASSWORD=(mysql root password)
RABBIT_PASSWORD=(something you will remember)
SERVICE_PASSWORD=(something you will remember)
./stack.sh
If all goes well, you will get an output of key items at the end of the script e.g.
-
-
Examples on using novaclient command line is in exercise.sh
The default users are: admin and demo
The password: opnfv
This is your host ip: 192.168.1.132
Setup Compute controller service
Setup compute hosts to connect to OpenStack
Prerequisite: see Basic Compute Host Install below
sudo apt-get install nova-compute-kvm
Customize the nova compute config file
verify that your machine supports hardware acceleration (returns 1)
sudo rm /var/lib/nova/nova.sqlite
sudo service nova-compute restart
In Horizon, verify that your compute hosts show up in the System / Hypervisors view
After restarting your host machine
Basic KVM-Based Compute Host Install
The following assumes you will use Ubuntu 14.04 LTS Server for the VM host
Create a new Virtual Machine Manager image for the VM
If the image is not in qcow2 format already
If when you run Virtual Machine Manager, your CM is not aleady there (due to virt-install above)
Create new VM and select import existing image. Hit Forward.
browse ("local") to the qcow2 file folder
select
OS type "linux". Hit Forward
select RAM (min 1048) and CPUs (leave at 1 is OK). Hit Forward.
Select "customize configuration". Hit Finish.
Under Disk 1 select advanced options and select Storage Format qcow2. Hit Apply.
Hit Begin Installation.
Run Virtual Machine Manager
Select the VM you want to initialize, and select Run
If the VM is from an install disk (ISO), you will get the Ubuntu installer.
When install is complete, reboot the VM and login
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openssh-server
How to customize the VM with LAMP support
Cloning VMs
Use Virtual Machine Manager to clone into the desired compute hosts, e.g. I started with ubuntu-1404 and cloned into ubuntu-1404-h1 and ubuntu-1404-h2
Select "Clone" (not share disk)
Boot the VMs, and update the configs
Take 4 - OpenStack and compute hosts under KVM
To address some of the potential snags occurring due to conflicts between OpenStack, ODL, OVS, libvirt, … I am switching to running OpenStack and compute nodes under KVM VMs, with the addition of other compute nodes on other machines. At this point ODL is not in the picture as I have to figure out how the whole flat network approach works first. And the goal for this initial sandbox will be to get off the ground with policy feature assessment in OpenStack, so ODL can wait until I learn it better or get guidance on how to factor it into this setup.
At this point I have most of the above working. What is not currently working is getting the external compute node connected to OpenStack nova, likely some firewall issue with KVM that I need to fix.
I'll post details on how this was setup soon.
Take 3 - Ubuntu 14.04 host
Returning to a more direct approach, this time will ensure component independence by installing:
* OpenStack on host OS
* ODL in VM managed by OpenStack
Decided pretty quickly that as some of the earlier issues may have been with running OpenStack on the host directly, I would switch to trying it in a VM (take 4).
Take 2 - Foreman - assisted install
Trying out Foreman to see if it helps get past some of the basic issues with the manual install.
-
-
sudo yum -y install foreman-installer
-
sudo foreman-installer
-
repeat foreman-installer
…
only options seem to be bare metal install. It´s unclear how to install OpenStack in a VM, so had to return to devstack install. But ran into the same issues as found in the original Centos7 effort below (httpd for keystone fails to start due to a configuration error related to a module - no examples of how to resolve this error are found anywhere).
.
.
.
Take 1 - manual install
Here is a graphic of the concept. This is very draft and leaves many things unclear partly because I'm not sure how to do them yet.
This procedure is not being further pursued at the moment… too many undocumented things about the overall setup of OpenStack, ODL, etc…
Restart process for For sandbox based upon host OS: Unbuntu 14.04 Server LTS
devstack/rejoin-stack.sh
from Horizon, launch mininet-vm created earlier
ssh to mininet VM and enter
back in ubuntu terminal
cd distribution-karaf-0.2.1-Helium-SR1.1
./bin/karaf clean
(currently here in the debug process) install enough ODL features to get ODL UX working (ports 8080 and 8181)
feature:install odl-restconf odl-l2switch-switch odl-mdsal-apidocs odl-dlux-core
Restart process for sandbox based upon host OS: Unbuntu 14.04 Server LTS
Ensure you have enable virtualization support in your BIOS
Install Ubuntu. I selected options for SSH, LAMP, VM host.
install updates
sudo apt-get update
sudo apt-get upgrade
install ubuntu desktop: sudo apt-get install ubuntu-desktop
install Java 7
-
-
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer
sudo apt-get install oracle-java7-set-default
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
sudo vi /etc/environment
install git: sudo apt-get install git -y
Install OpenStack (DevStack)
-
cd devstack
Create local.conf: cp samples/local.conf .
Add/replace these lines: vi local.conf
FLAT_INTERFACE=(your ethernet interface)
ADMIN_PASSWORD=(something you will remember - you will use this to login to the Horizon UI)
MYSQL_PASSWORD=(mysql root password)
RABBIT_PASSWORD=(something you will remember)
SERVICE_PASSWORD=(something you will remember)
Start the devstack install: ./stack.sh
If all goes well, you will get an output of key items at the end of the script
If you hit an error related to the mysql root password, you can reset it and try again
At this point you should be able to login to Horizon at your installed server e.g.
http://192.168.1.132/ using the account "admin" and the ADMIN_PASSWORD you set above.
install and configure mininet
-
convert to QCOW2 format
unzip mininet.zip
qemu-img convert -O qcow2 mn-2.2.0-trusty64server-150106-01-30-00/mininet-vm-x86_64.vmdk mn-2.2.0-trusty64server-150106-01-30-00/mininet-vm-x86_64.qcow2
In Horizon, create image for mininet-vm
Install openvswitch: sudo apt-get install openvswitch-switch
-
-
unzip Helium-SR1.1.zip
cd distribution-karaf-0.2.1-Helium-SR1.1
./bin/karaf
You should get the OpenDaylight prompt "opendaylight-user@root>"
verify it's working with: feature:list
install the ODL components
-
In Horizon, launch mininet-vm created earlier
ssh to mininet VM and enter
Bring up a VM and validate basic functionality: this will be initially a manual sequence and eventually scripted using OpenStack APIs
Take 0
Tried CentOS 7 but continually getting errors:
-
When installing, select the "Server with
GUI" profile, leaving all options blank (it's unclear whether any are needed at this point)
As su, add your username to /etc/sudoers via "visudo"
Log out of root!
Install git: sudo yum install git
-
Create devstack/local.conf, adding/replacing these lines
FLAT_INTERFACE=(your ethernet interface)
ADMIN_PASSWORD=(random string)
MYSQL_PASSWORD=(random string)
RABBIT_PASSWORD=(random string)
SERVICE_PASSWORD=(random string)
Start the devstack install: cd devstack; ./stack.sh
A variety of errors received - no reason why, not time to debug