===== Propositions for Joid integration in CI =====
==== Prerequisites ====
=== Jenkins install ===
Please follow HOW TO here: https://wiki.opnfv.org/wiki/jenkins#how_to_connect_servers_from_labs_to_opnfv_jenkins
=== Jump host preparation ===
The jumphost must be a flavor of Ubuntu
The following things must be set on the jumphost before starting any deploy:
* applications must be installed
* ''git''
* ''bridge-utils''
* ''vlan''
* The network must also be set to host 3 bridges (TO BE DISCUSSED)
* ''brAdm''
* ''brData''
* ''brStorage''
All those pre-requisits can be managed by Master MAAS.
Now you can launch jenkins
===== Jenkins parameters =====
Jenkins fixes those parameters:
====Jenkins defaults====
# Slave name on Jenkins
export SLAVE_NAME=orange-fr-pod2
export NODE_NAME=$SLAVE_NAME
# Git URL to use on this Jenkins Slave
export GIT_BASE=https://gerrit.opnfv.org/gerrit/$PROJECT
# Project Name
export PROJECT=joid
# Place of jenkins workspace
export WORKSPACE=$HOME/workspace/joid-deploy-/
# in case of local script testing
export WORKSPACE=$HOME/joid/
====Projects default====
The file containing installer defaults is **releng/jjb/opnfv/installer-params.yml**
# IP of the installer (Not used for Joid)
export INSTALLER_IP=192.168.Y.Y
# Installer used for deploying OPNFV on this POD
export INSTALLER_TYPE=joid
# Scenario to deploy and test
# Based on scenario naming we can get joid options
# naming convention:
# os---[-]
# With parameters:
# controller=(nosdn|odl_l3|odl_l2|onos|ocl)
# No odl_l3 today
# nfvfeature=(kvm|ovs|dpdk|nofeature)
# '_' list separated.
# mode=(ha|noha)
# extrastuff=(none)
# Optional field - Not used today
export DEPLOY_SCENARIO=none
# OpenStack release (kilo|liberty)
export OS_RELEASE=liberty
# External network to create (name;type;first ip;last ip; gateway;network)
export EXTERNAL_NETWORK="ext-net;flat;192.168.0.2;192.168.0.253;192.168.0.1;192.168.0.0/24"
# Disks to use by ceph by default (space separated list)
export CEPH_DISKS=/srv
# Disks to use by ceph by controllers (empty if same as CEPH_DISKS)
export CEPH_DISKS_CONTROLLERS=""
# Local lab config and Openstack openrc location
export LAB_CONFIG=$HOME/joid_config
# Format or not disk before using ceph [true/false] (must be done the first time)
export CEPH_REFORMAT=false
# Reinstall MAAS and Bootstrap before deploy [true/false]
export MAAS_REINSTALL=false
==== Pod defaults====
The file containing pod default is **releng/jjb/opnfv/slave-params.yml**
# Version of the installer to deploy
export INSTALLER_VERSION=latest
Those parameters shall be present in the pod default.
# Disks to use by ceph by default (space separated list)
export CEPH_DISKS=/srv
# Disks to use by ceph by controllers (empty if same as CEPH_DISKS)
export CEPH_DISKS_CONTROLLERS=/srv
===== Cleanup steps =====
The cleanup is done at each deploy in the script
===== HOW TO =====
==== Run CI deploy script without jenkins ====
* Copy all jenkins parameters (see list 'Jenkins parameters' section) in a file (~/deploy_params.sh) and set them according to your platform (**don't forget to set DEPLOY_SCENARIO value !**)
* Load this file
source ~/deploy_params.sh
* Get the script
wget https://git.opnfv.org/cgit/releng/plain/jjb/joid/joid-deploy.sh
chmod +x joid-deploy.sh
* Run the script
./joid-deploy.sh
==== Add my pod deployed by jenkins ====
- Edit Releng **jjb/joid/joid-ci-jobs.yml**
- to add your node to pod list in the project section
- to add your trigger macro at the end of the file
- Add your pod description in **jjb/opnfv/slave-params.yml**
- Setup (or not) your local config file, as described in "Set specific pod parameters".
- If your $POD_NAME is not formated like this: - as set in joid/ci/maas// subfolders, please modify section "Set Joid pod config name" in **releng/jjb/joid/joid-deploy.sh**
- Ask jenkins to deploy :)
==== Set specific pod parameters ====
The pod admin can set a few parameters
sudo -s jenkins
mkdir ~/joid_config
cat << EOF > ~/joid_config/config.sh
### Set passwords
export MAAS_USER=ubuntu
export MAAS_PASSWORD=ubuntu
export OS_ADMIN_PASSWORD=openstack
EOF
==== Deploy or not MAAS at each time ====
Testing MAAS deploy is not the core of CI tests, so to gain time, MAAS reinstall can be disabled by setting local parameter MAAS_REINSTALL=false. Juju will be cleaned and all nodes managed will return in ready mode.