OPNFV Fuel/ODL Build Server Setup

OpnfV Fuel/ODL
Build Demo Session
Daniel Smith
Welcome … Getting in
 Below you will find the information necessary to connect to todays session. As well, the basic requirements
for a simple build node are outlined below. note: for those of you that requested a build node VM from me,
you will receive a email from me 20 minutes prior with the login info.
 GOTO Meeting Information:
 https://global.gotomeeting.com/join/450573965
Call In Numbers:
United States (Long distance): +1 (571) 317-3129
Australia (Long distance): +61 2 8355 1020
Access Code: 450-573-965
More phone numbers: https://global.gotomeeting.com/450573965/numbersdisplay.html
 Basic Build System requirements:
 4 CPUs, 6GB RAM (8 is preferable).
 Internet Connection
 Ubuntu14.04
 *I will show on Ubuntu, however this is simply a question of my preference, the tools we will install/run the build setup can be done in
OS that supports the toolset. (outlines later)
 Additional Requirements (for Nested Environment):
 Fuel – 4GB RAM - 2 CPU 100GB HD
 Control 4GB :4CPU – 500GB HD
 Compute 4GB RAM 2 CPU
Topics for Today
 Approach to Training Sessions – Today we cover the BUILD setup.
 A step by step walkthrough starting from a base OS and going through all
the steps you will need to do to produce a FUEL/ODL ISO that is ready for
 In the next sessions, we will cover Deploying Fuel and ODL
 Starting at the end.
 I will give a short overview of the current deployed state of ODL in an
Openstack environment, showing the integration of the OVSDB to ODL a
look at DLUX and show the paths, etc
Setting up your Build Environment
 Note: this assumes you have just finished doing a basic installation of
Ubuntu 14.04 (or similar OS) and have nothing but the default setup
(OpenSSH is the only package I have added at this point).
 Other assumptions:
 You have direct or proxy so that apt, git and similar repositiory programs will
 You have sudo / root access on your machine (you will need it during the
build of Fuel).
The Big Picture
 Perhaps before we dive in.. We should look at the following “flow” of
what we will do
Setup Build
Apply Puppet
Fetch Fuel
Fetch ODL
From Repo
From Repo
Manifest, ISO &
And Build
And Build
Docker Pkg.
Release ISO
Build Environment
 On your build server you will need the following:
 Git & Gerrit Access to the Genesis Repo
 Used to fetch the OPNFV code base
 Docker
 Used to create both the Fuel ISO (From Repo) and ODL Containers
Packages for Installation
 Login to your Build server, and install the following packages via apt (or zypper or whichever flavour you like).
 Install Docker:
 Here is the simple steps (from command line):
 sudo apt-get update
 sudo apt-key adv –keyserver { ….. See the link for copy/paste … }
Answer yes if prompted
 sudo sh –c “echo deb https://get.docker.com/ubuntu docker main
> /etc/apt/source.list/docker.list”
note: the “\” should not be included
apt-get update
apt-get install docker.io ( note: Ubuntu specific cause there is already a “docker” pkg)
Add “DOCKER_OPTS=“ –dns= –dns=” in /etc/default/docker
usermod –a –G docker <userid>
Restart Docker
 service docker.io restart
 Verify Docker is working:
 sudo docker run –i –t ubuntu /bin/bash
Great! – lets take 5 minutes to let
everyone get done and Q&A
Setup Gerrit with OPNFV
 In order to access the OPNFV stuff, you need to get into the Repositories on Gerrit. The following steps need to be done in
order to get setup.
Create a Linux Foundation account (you need it for Gerrit)
Create a SSH Key (if you don’t have one already) with ssh-keygen
Select SSH Keys (on the left hand side) then Add Key
Copy Paste your key into the Text Box below and select Save
Install GIT
ssh-keygen (pick a passphrase and remember where you save the file)
cat ~<userid>/.ssh.id_rsa.pub
Login to Gerrit at https://gerrit.opnfv.org and go into Settings (its under your name in the Right Corner)
apt-get install git (should be installed by default, but you never know :P)
Clone the OPNFV Repo (Here’s where the fun starts).
git clone ssh://<you linux foundation id>@gerrit.opnfv.org:29418/genesis
If you do a “ls –l” in the directory where you cloned, you should see the following (or similar depending on changes):
--- We will examine this in greater detail
We now have all the inputs for our build…
Breakdown of FUEL in OPNFV
Discussion: All “Additions to Fuel-Vanilla” are
packaged in directory F_xyzabc.
Each package directory will contain the following:
any addition items you require for your patch
Examination of NTP.PP module
 For this part of the session, lets open the
~userid/genesis/fuel/build/f_ntp/puppet/modules/opfv/manifests/ntp.pp file.
 Lets Take about the parts:
 1st ) OPNFV::<your package name>
 This is where you declare your subclass into the OPNFV of whatever you are “adding”
(e.g, Docker, Java, some scripts you want pushed into the ISO) all puppet manifests in the
OPNFV class will be packaged and delivered and the applied to target system (based on
type) during deployment
 2nd) fuel_settings [role],[opnfv],[ntp] are used in a regex to match a target node.
You can also use controller / compute to separate what you want to install where.
 There are many directives in Puppet available (we wont go through all you can do
in a manifest, however here is a resource that I like).
 http://docs.puppetlabs.com/guides
Examination of Makefile
 For the purpose of this demo I would assume that everyone knows
what a Makefile is. I would like to highlight the following options /
switches in the Main Makefile (~/genesis/fuel/build/Makefile).
Incorporating your class into the INCLUDE statement (so its
gets built along with everything else).
Building out “build, build-clean” and other functions are available
– refer to the Main Makefile.
Examination of
 Its important that we examine ~genesis/fuel/build/f_opnfv_puppet
init.pp manifest file, since this is the TOP-Class of the OPNFV Puppet
packages (not to be confused with the ones that Fuel has of their
 Namely we want to highlight the following:
 Add your class name (not the directory = f_xyzabc) in the include section to
ensure your added subclass is picked up at runtime
Building your ISO
 Ok ok – enough talking, lets do a build….
 We need a couple more tools though first
 Install the following
 apt-get install make
 Then “make all”
 Sit back, get a coffee.. You will find your ISO in the releases/. Directory