===== 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.