Skip to content
No description, website, or topics provided.
Shell Makefile Dockerfile
Branch: master
Clone or download
senthilgk1 Based on ticket CE-1217 - included contrail-test container in dev-env…
… registry

closes-jira-bug: CE-1217
Change-Id: I7a3a4bed6a833e16ac6944c2569ffeeccb3863a3
Latest commit b614b08 Aug 5, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
code Added code placeholder directory Jan 24, 2018
container fix container build failure due to new version of lighttpd Jul 16, 2019
inventory Refactor docker role Jan 24, 2018
scripts Based on ticket CE-1217 - included contrail-test container in dev-env… Aug 5, 2019
vm-dev-env contrail-dev-env: Bring your own VM Mar 30, 2018
.gitignore Add safety bash switches to Mar 12, 2018
.zuul.yaml Re-enable jobs for dev-env Sep 10, 2018
Makefile Based on ticket CE-1217 - included contrail-test container in dev-env… Aug 5, 2019 Based on ticket CE-1217 - included contrail-test container in dev-env… Aug 5, 2019
Vagrantfile Switch to use upstream repos from Juniper Feb 12, 2018 Use dev-env decoupled from ci Mar 20, 2018
common.env.tmpl Use new packaging Makefile in dev-env Mar 13, 2018
daemon.json.tmpl Use dynamic IP Addresses for containers Mar 9, 2018
dev_config.yaml.tmpl Use new packaging Makefile in dev-env Mar 13, 2018 fix container build failure due to new version of lighttpd Jul 16, 2019 update Feb 14, 2018
tpc.repo.template docker rework Feb 14, 2018
vars.yaml.tmpl Use new packaging Makefile in dev-env Mar 13, 2018

contrail-dev-env: Contrail Developer Environment

Problems? Need Help?

This repository is actively maintained via Gerrit so please let us know about any problems you find. You can ask for help on Slack but if no one replies right away, go ahead and open a bug on JIRA and label the bug with the label "dev-env" and it will get looked at soon. You can also post to the new Google Group if you're having trouble but don't know if the problem is a bug or a mistake on your part.

Documentation for dev-env components

Since dev-env uses generally available contrail components, please refer to following documentation pages:

  1. for packages generation: contrail-packages
  2. for building containers: contrail-container-builder and contrail-deployers-containers
  3. for deployments: contrail-ansible-deployer

Container-based (standard)

There are 2 official sources of containers for dev-env:

  1. Released images on docker hub opencontrail, tagged with released version.
  2. Nightly images on docker hub opencontrailnightly, tagged with corresponding development branch. Note: tag latest points to master branch.

You can also use your own image, built using container/ script.

1. Install docker

For mac:

For CentOS/RHEL/Fedora linux host:

yum install docker

For Ubuntu linux host:

apt install

NOTE (only if you hit any issues): Make sure that your docker engine supports images bigger than 10GB. For instructions, see here: Make sure that there is TCP connectivity allowed between the containers in the default docker bridge network, (for example disable firewall).

2. Clone dev setup repo

git clone
cd contrail-dev-env

3. Execute script to start 3 containers

sudo ./

Note: This command runs container opencontrailnightly/developer-sandbox:master from opencontrailnightly docker hub by default. You can specify different image and/or tag using flags, e.g.

  1. to develop on nightly R5.0 container use: sudo ./ -t R5.0
  2. to develop code based on a tagged r5.0 release, use: sudo ./ -i opencontrail/developer-sandbox -t r5.0
docker ps -a should show these 3 containers
contrail-developer-sandbox [For running scons, unit-tests etc]
contrail-dev-env-rpm-repo  [Repo server for contrail RPMs after they are build]
contrail-dev-env-registry  [Registry for contrail containers after they are built]

4. Attach to developer-sandbox container

docker attach contrail-developer-sandbox

5. Prepare developer-sandbox container

Required first steps in the container:

cd /root/contrail-dev-env
make sync           # get latest code
make fetch_packages # pull third_party dependencies
make setup          # set up docker container
make dep            # install build dependencies

The descriptions of targets:

  • make sync - sync code in ./contrail directory using repo tool
  • make fetch_packages - pull ./third_party dependencies (after code checkout)
  • make setup - initial configuration of image (required to run once)
  • make dep - installs all build dependencies
  • make dep-<pkg_name> - installs build dependencies for <pkg_name>

6. Make artifacts

RPM packages

  • make list - lists all available RPM targets
  • make rpm - builds all RPMs
  • make rpm-<pkg_name> - builds single RPM for <pkg_name>

Container images

  • make list-containers - lists all container targets
  • make containers - builds all containers' images, requires RPM packages in /root/contrail/RPMS
  • make container-<container_name> - builds single container as a target, with all docker dependencies


  • make list-deployers - lists all deployers container targets
  • make deployers - builds all deployers
  • make deployer-<container_name> - builds single deployer as a target, with all docker dependencies

Test containers

  • make test-containers - build test containers


  • make clean{-containers,-deployers,-repo,-rpm} - delete artifacts

7. Testing the deployment

See . Set CONTAINER_REGISTRY to registry:5000 to use containers built in the previous step.

Alternate build methods

Instead of step 5 above (which runs scons inside make), you can use scons directly. The steps 1-4 are still required.

cd /root/contrail
scons # ( or "scons test" etc)

NOTE: Above example build whole TungstenFabric project with default kernel headers and those are headers for running kernel (uname -r). If you want to customize your manual build and use i.e newer kernel header take a look at below examples.

In case you want to compile TungstenFabric with latest or another custom kernel headers installed in contrail-developer-sanbox container, then you have to run scons with extra arguments:

RTE_KERNELDIR=/path/to/custom_kernel_headers scons --kernel-dir=/path/to/custom_kernel_headers

To alter default behaviour and build TF without support for DPDK just provide the --without-dpdk flag:

scons --kernel-dir=/path/to/custom_kernel_headers --without-dpdk

To build only specific module like i.e vrouter:

scons --kernel-dir=/path/to/custom_kernel_headers vrouter

To build and run unit test against your code:

RTE_KERNELDIR=/path/to/custom_kernel_headers scons --kernel-dir=/path/to/custom_kernel_headers test

Bring-your-own-VM (experimental)

Note: only RedHat 7 and CentOS 7 are supported at this time!

  1. Clone this repository to a directory on a VM.
  2. Run vm-dev-env/ (you might be asked for your password as some steps require the use of sudo). a. You can also run vm-dev-env/ -n if you don't want to clone work directory on a VM. Then you have to mount sandbox to directory named contrail next to contrail-dev-env.
  3. Run make fetch_packages to pull dependencies to contrail/third_party
  4. Run sudo ./ -b to start required containers.
  5. You can use the Makefile targets described above to build contrail.
You can’t perform that action at this time.