User Tools

Site Tools


joid:ci_integration

This is an old revision of the document!


Propositions for Joid integration in CI

Prerequisites

Jump host preparation

The jumphost must be a flavor of Ubuntu The following things must be set on the jumphost before starting any deploy:

  • One extra repo (repository ppa:juju/stable)
  • applications must be installed
    • libvirt-bin
    • git
    • iptables-persistent
    • bridge-utils
    • vlan
  • The network must also be set to host 3 bridges (TO BE DISCUSSED)
    • brAdm
    • brData
    • brStorage

Pod parameters

The pod admin must also set a few parameters

mkdir ~/joid_config
cat << EOF > ~/joid_config/config.sh

### Set Pod name
export POD_DC=orange
export POD_NUM=pod2
export POD_NAME=\$POD_DC\$POD_NUM

### Set passwords
export MAAS_USER=ubuntu
export MAAS_PASSWORD=ubuntu
export OS_ADMIN_PASSWORD=openstack

### Set CEPH parameters
# disks to use by ceph (comma separated list)
export CEPH_DISKS=/dev/sdb,/dev/sdc
# format or not disk before using ceph (must be done the first time)
export CEPH_REFORMAT=false

EOF

Get initial joid source

cd ~/
git clone http://gerrit.opnfv.org/gerrit/joid.git

Jenkins parameters

Jenkins need to set those vars for joid installation:

        - string:
            name: INSTALLER
            default: '{installer}'
            description: "Installer to use."
        - string:
            name: JOID_MODE
            default: 'ha'
            description: "High availability mode: <ha|nonha|tip>"
        - string:
            name: JOID_OS_RELEASE
            default: 'liberty'
            description: "Openstack release: <juno|liberty>"
        - string:
            name: JOID_SDN_CONTROLLER
            default: 'odl'
            description: "Joid SDN controller: <odl|opencontrail|onos|none>"
        - string:
            name: JOID_LOCAL_CONFIG_FOLDER
            default: '~/joid_config'
            description: "Joid local pod config"
        - string:
            name: JOID_ADMIN_OPENRC
            default: '~/joid_config/admin-openrc'
            description: "Joid local pod config"

Cleanup steps

Cleanup can be on Juju only or also on the jumphost (destroying MAAS and Bootstrap VM) So we can split that step in 2 templates:

[joid-clean] Juju destroy environmnet

#!/bin/bash
set +e
cd ~/joid/ci
echo "------ Backup Juju environment ------"
cp environment.yaml $JOID_LOCAL_CONFIG_FOLDER
echo "------ Clean MAAS and Juju ------"
./clean.sh

To enhance for 'juju not deployed' case

[joid-destroy-vm] Destroy MAAS and Bootstrap VM

#!/bin/bash
set +e
echo "------ VM List ------"
virsh list
echo "------ Destroy Bootstrap ------"
VM=$(virsh list --name |grep bootstrap)
if [ "z$VM" = "z" ]
    then "echo NO Bootstrap VM"
    else {
        virsh destroy $VM
        virsh undefine $VM
        virsh vol-delete --pool default /var/lib/libvirt/images/$VM.img
    }
fi
echo "------ Destroy MAAS ------"
VM=$(virsh list --name |grep maas)
if [ "z$VM" = "z" ]
    then "echo NO MAAS VM"
    else {
        virsh destroy $VM
        virsh undefine $VM
        virsh vol-delete --pool default /var/lib/libvirt/images/$VM-root.img
        virsh vol-delete --pool default /var/lib/libvirt/images/$VM-seed.img
    }
fi

To be completed

Build

No build needed

Install

Installation can be automatically done following those steps:

  1. [joid-clean] see previous section
  2. [joid-destroy-vm] see previous section
  3. [joid-gitupdate] fetch the last version of joid
  4. [joid-configure] load local pod parameters (local login/passwords) and load jenkins parameters (ha mode, sdn controller, open stack release)
  5. [joid-prepare] prepare infra by installing maas and juju
  6. [joid-deploy] deploy joid
  7. [joid-adminrc] prepare adminrc for other jenkins jobs (functest…)

All those steps can be done in one jenkins template

  1. [joid-daily-full] this template is also destroying MAAS and Bootstrap VM
  2. [joid-daily] this one is not destroying MAAS and Bootstrap VM (no [joid-destroy-vm] and [joid-prepare])

[joid-gitupdate] fetch the last version of joid

cd ~/
source joid_local_config
rm -rf joid
git clone http://gerrit.opnfv.org/gerrit/joid.git
cd ~/joid/ci

[joid-configure] load parameters

load local pod parameters and jenkins parameters to modify joid templates

#!/bin/bash
set +e
source $JOID_LOCAL_CONFIG_FOLDER/config.sh
cd ~/joid/ci

# Get juju deployer file
if [ "$JOID_MODE" == 'nonha' ]
    then SRCBUNDLE=~/joid/ci/$JOID_SDN_CONTROLLER/juju-deployer/ovs-$JOID_SDN_CONTROLLER.yaml
    else SRCBUNDLE=~/joid/ci/$JOID_SDN_CONTROLLER/juju-deployer/ovs-$JOID_SDN_CONTROLLER-$JOID_MODE.yaml
    fi

# Get MAAS config file
MAASCONFIG=~/joid/ci/maas/$POD_DC/$POD_NUM/deployment.yaml

# Modify files

echo "------ Set MAAS password ------"
sed -i -- 's/user: ubuntu/user: $MAAS_USER/' $MAASCONFIG
sed -i -- 's/password: ubuntu/user: $MAAS_PASSWORD/' $MAASCONFIG

echo "------ Set openstack password ------"
sed -i -- "s/\"admin-password\": openstack/\"admin-password\": $OS_ADMIN_PASSWORD/" $SRCBUNDLE

echo "------ Set ceph disks ------"
sed -i -- "s/\"osd-devices: \/srv/osd-devices: $CEPH_DISKS/" $SRCBUNDLE
if [ "$CEPH_REFORMAT" == 'true' ]
    then sed -i -- "s/osd-reformat: 'no'/osd-reformat: 'yes'/" $SRCBUNDLE

[joid-prepare] install maas and juju

MAASCONFIG=~/joid/ci/maas/$POD_DC/$POD_NUM/deployment.yaml
sed -i -- 's/user: ubuntu/user: $MAAS_USER/' $MAASCONFIG
sed -i -- 's/password: ubuntu/user: $MAAS_PASSWORD/' $MAASCONFIG
./02-maasdeploy.sh $POD_NAME

[joid-deploy] Deploy joid

in the case of a non full install (without MAAS destroy) we need to recover the juju env file

#!/bin/bash
set +e
cd ~/joid/ci/
echo "------ Recover Juju environment to use MAAS ------"
cp $JOID_LOCAL_CONFIG_FOLDER/environment.yaml .
./deploy.sh -t $JOID_MODE -o $JOID_RELEASE -s $JOID_SDN_CONTROLLER -l $POD_NAME

[joid-adminrc] Set admin-openrc

cat << EOF > ~/admin-openrc
export OS_USERNAME=admin
export OS_PASSWORD=$OS_ADMIN_PASSWORD
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://192.168.2.23:5000/v2.0
export OS_REGION_NAME=Canonical
EOF
joid/ci_integration.1449683507.txt.gz · Last modified: 2015/12/09 17:51 by David Blaisonneau