Merge "Added support for devstack plugin for Omni"
This commit is contained in:
commit
1710370df9
|
@ -0,0 +1,44 @@
|
|||
Overview
|
||||
===============
|
||||
|
||||
Devstack plugin to configure Omni drivers into Openstack components.
|
||||
|
||||
**As part of stack.sh:**
|
||||
|
||||
*1. Update .conf files as per the driver requirements for Glance, Cinder, Nova and Neutron*
|
||||
|
||||
*2. Copy Omni driver files into individual components*
|
||||
|
||||
*3. Restart devstack services*
|
||||
|
||||
Usage
|
||||
===============
|
||||
|
||||
Following lines need to be added in local.conf to enable Omni plugin:
|
||||
|
||||
*1. To enable plugin:*
|
||||
|
||||
- enable_plugin omni https://github.com/openstack/omni.git
|
||||
|
||||
*2. To set clouds supported by Omni:*
|
||||
|
||||
- OMNI_PROVIDER=<gce/aws/....>
|
||||
|
||||
*3. Parameters required for Omni drivers:*
|
||||
|
||||
================== =====
|
||||
---------------------------
|
||||
AWS GCE
|
||||
================== =====
|
||||
SECRET_KEY ZONE
|
||||
ACCESS_KEY PROJECT_ID
|
||||
REGION_NAME REGION
|
||||
AVAILABILITY_ZONE
|
||||
================== =====
|
||||
|
||||
Run stack.sh in your devstack tree to get started.
|
||||
|
||||
Assumptions
|
||||
===============
|
||||
|
||||
- For GCE provider, service key is available in /etc/omni.json
|
|
@ -0,0 +1,95 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Save trace setting
|
||||
XTRACE=$(set +o | grep xtrace)
|
||||
set +o xtrace
|
||||
|
||||
OMNI_DATA_DIR="/opt/stack/omni"
|
||||
DIST_PACKAGES="/usr/local/lib/python2.7/dist-packages"
|
||||
ENTRY_POINT="$DIST_PACKAGES/glance_store-*.dist-info/entry_points.txt"
|
||||
NEUTRON_ENTRY_POINT="/opt/stack/neutron/neutron.egg-info/entry_points.txt"
|
||||
|
||||
# Functions
|
||||
# ------------
|
||||
|
||||
function configure_glance {
|
||||
iniset $GLANCE_API_CONF AWS secret_key ${SECRET_KEY}
|
||||
iniset $GLANCE_API_CONF AWS access_key ${ACCESS_KEY}
|
||||
iniset $GLANCE_API_CONF AWS region_name ${REGION_NAME}
|
||||
iniset $GLANCE_API_CONF DEFAULT show_multiple_locations True
|
||||
iniset $GLANCE_API_CONF glance_store default_store aws
|
||||
iniset $GLANCE_API_CONF glance_store stores aws
|
||||
sudo crudini --set $ENTRY_POINT glance_store.drivers glance.store.aws.Store glance_store._drivers.aws:Store
|
||||
sudo crudini --set $ENTRY_POINT glance_store.drivers aws glance_store._drivers.aws:Store
|
||||
value=$(sed -n "/, 'aws'/p" $DIST_PACKAGES/glance_store/backend.py)
|
||||
if [[ $value == "" ]]; then
|
||||
sudo sed -i -e "s/, 'vsphere'/, 'vsphere', 'aws'/g" $DIST_PACKAGES/glance_store/backend.py
|
||||
fi
|
||||
sudo cp $OMNI_DATA_DIR/glance/glance_store/_drivers/aws.py /usr/local/lib/python2.7/dist-packages/glance_store/_drivers/
|
||||
sudo systemctl restart devstack@g-api.service devstack@g-reg.service
|
||||
}
|
||||
|
||||
function configure_cinder {
|
||||
iniset $CINDER_CONF AWS secret_key ${SECRET_KEY}
|
||||
iniset $CINDER_CONF AWS access_key ${ACCESS_KEY}
|
||||
iniset $CINDER_CONF AWS region_name ${REGION_NAME}
|
||||
iniset $CINDER_CONF AWS az ${AVAILABILITY_ZONE}
|
||||
iniset $CINDER_CONF AWS volume_driver ${AWS_CINDER_DRIVER}
|
||||
iniset $CINDER_CONF DEFAULT enable_force_upload ${ENABLE_FORCE_UPLOAD}
|
||||
iniset $CINDER_CONF DEFAULT enabled_backends AWS
|
||||
iniset $CINDER_CONF DEFAULT volumes_dir ${VOLUME_DIR}
|
||||
iniset $CINDER_CONF DEFAULT os_privileged_user_name ${CINDER_USER}
|
||||
iniset $CINDER_CONF DEFAULT default_volume_type AWS
|
||||
iniset $CINDER_CONF DEFAULT os_region_name AWS
|
||||
sudo cp -R $OMNI_DATA_DIR/cinder/volume/drivers/aws/ /opt/stack/cinder/cinder/volume/drivers/
|
||||
sudo systemctl restart devstack@c-sch.service devstack@c-vol.service devstack@c-api.service
|
||||
}
|
||||
|
||||
function configure_nova {
|
||||
iniset $NOVA_CONF AWS secret_key ${SECRET_KEY}
|
||||
iniset $NOVA_CONF AWS access_key ${ACCESS_KEY}
|
||||
iniset $NOVA_CONF AWS region_name ${REGION_NAME}
|
||||
iniset $NOVA_CONF DEFAULT compute_driver ${AWS_COMPUTE_DRIVER}
|
||||
iniset $NOVA_CONF DEFAULT glance_api_insecure True
|
||||
iniset $NOVA_CONF DEFAULT cinder_api_insecure True
|
||||
iniset $NOVA_CONF DEFAULT vnc_enabled True
|
||||
iniset $NOVA_CONF DEFAULT osapi_compute_extension ${COMPUTE_EXTENSION}
|
||||
iniset $NOVA_CONF DEFAULT force_dhcp_release True
|
||||
sudo cp -R $OMNI_DATA_DIR/nova/virt/ec2/ /opt/stack/nova/nova/virt/
|
||||
sudo systemctl restart devstack@n-api.service devstack@n-cauth.service devstack@n-cond.service devstack@n-cpu.service devstack@n-novnc.service devstack@n-sch.service
|
||||
}
|
||||
|
||||
function configure_neutron {
|
||||
iniset $NEUTRON_CONF AWS secret_key ${SECRET_KEY}
|
||||
iniset $NEUTRON_CONF AWS access_key ${ACCESS_KEY}
|
||||
iniset $NEUTRON_CONF AWS region_name ${REGION_NAME}
|
||||
iniset $NEUTRON_CONF AWS az ${AVAILABILITY_ZONE}
|
||||
iniset $NEUTRON_CONF DEFAULT core_plugin ${CORE_PLUGIN}
|
||||
iniset $NEUTRON_CONF DEFAULT service_plugins ${AWS_SERVICE_PLUGIN}
|
||||
iniset $NEUTRON_CONF nova region_name AWS
|
||||
|
||||
sudo rm -f /etc/neutron/plugins/ml2/ml2_conf.ini
|
||||
touch /etc/neutron/plugins/ml2/ml2_conf.ini
|
||||
sudo chown stack /etc/neutron/plugins/ml2/ml2_conf.ini
|
||||
|
||||
iniset /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers ${ML2_DRIVERS}
|
||||
iniset /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types ${ML2_TENANT}
|
||||
iniset /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks "*"
|
||||
iniset /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vlan network_vlan_ranges ${ML2_VLAN_TYPE}
|
||||
iniset /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers aws
|
||||
|
||||
sudo crudini --set $NEUTRON_ENTRY_POINT neutron.ml2.mechanism_drivers aws neutron.plugins.ml2.drivers.aws.mechanism_aws:AwsMechanismDriver
|
||||
sudo crudini --set $NEUTRON_ENTRY_POINT neutron.service_plugins aws_router neutron.services.l3_router.aws_router_plugin:AwsRouterPlugin
|
||||
|
||||
sudo cp -R $OMNI_DATA_DIR/neutron/neutron/plugins/ml2/drivers/aws/ /opt/stack/neutron/neutron/plugins/ml2/drivers/
|
||||
sudo cp $OMNI_DATA_DIR/neutron/neutron/services/l3_router/aws_router_plugin.py /opt/stack/neutron/neutron/services/l3_router/
|
||||
sudo cp $OMNI_DATA_DIR/neutron/neutron/common/* /opt/stack/neutron/neutron/common/
|
||||
sudo systemctl restart devstack@q-agt.service devstack@q-dhcp.service devstack@q-l3.service devstack@q-meta.service devstack@q-svc.service
|
||||
}
|
||||
|
||||
# Restore xtrace
|
||||
$XTRACE
|
||||
|
||||
## Local variables:
|
||||
## mode: shell-script
|
||||
## End:
|
|
@ -0,0 +1,96 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Save trace setting
|
||||
XTRACE=$(set +o | grep xtrace)
|
||||
set +o xtrace
|
||||
|
||||
OMNI_DATA_DIR="/opt/stack/omni"
|
||||
DIST_PACKAGES="/usr/local/lib/python2.7/dist-packages"
|
||||
ENTRY_POINT="$DIST_PACKAGES/glance_store-*.dist-info/entry_points.txt"
|
||||
NEUTRON_ENTRY_POINT="/opt/stack/neutron/neutron.egg-info/entry_points.txt"
|
||||
# Functions
|
||||
# ------------
|
||||
|
||||
function configure_glance {
|
||||
iniset $GLANCE_API_CONF GCE zone ${ZONE}
|
||||
iniset $GLANCE_API_CONF GCE project_id ${PROJECT}
|
||||
iniset $GLANCE_API_CONF GCE service_key_path ${SERVICE_KEY_PATH}
|
||||
iniset $GLANCE_API_CONF DEFAULT show_multiple_locations True
|
||||
iniset $GLANCE_API_CONF glance_store default_store gce
|
||||
iniset $GLANCE_API_CONF glance_store stores gce
|
||||
sudo crudini --set $ENTRY_POINT glance_store.drivers glance.store.gce.Store glance_store._drivers.gce:Store
|
||||
sudo crudini --set $ENTRY_POINT glance_store.drivers gce glance_store._drivers.gce:Store
|
||||
value=$(sed -n "/, 'gce'/p" $DIST_PACKAGES/glance_store/backend.py)
|
||||
if [[ $value == "" ]]; then
|
||||
sudo sed -i -e "s/, 'vsphere'/, 'vsphere', 'gce'/g" $DIST_PACKAGES/glance_store/backend.py
|
||||
fi
|
||||
sudo cp $OMNI_DATA_DIR/glance/gce/gceutils.py /usr/local/lib/python2.7/dist-packages/glance_store/_drivers/
|
||||
sudo cp $OMNI_DATA_DIR/glance/glance_store/_drivers/gce.py /usr/local/lib/python2.7/dist-packages/glance_store/_drivers/
|
||||
sudo systemctl restart devstack@g-api.service devstack@g-reg.service
|
||||
}
|
||||
|
||||
function configure_cinder {
|
||||
iniset $CINDER_CONF GCE zone ${ZONE}
|
||||
iniset $CINDER_CONF GCE project_id ${PROJECT}
|
||||
iniset $CINDER_CONF GCE region ${REGION}
|
||||
iniset $CINDER_CONF GCE service_key_path ${SERVICE_KEY_PATH}
|
||||
iniset $CINDER_CONF GCE gce_pool_name gce
|
||||
iniset $CINDER_CONF GCE gce_free_capacity_gb ${CAPACITY}
|
||||
iniset $CINDER_CONF gce_total_capacity_gb ${CAPACITY}
|
||||
iniset $CINDER_CONF GCE volume_driver ${GCE_CINDER_DRIVER}
|
||||
iniset $CINDER_CONF DEFAULT enable_force_upload ${ENABLE_FORCE_UPLOAD}
|
||||
iniset $CINDER_CONF DEFAULT enabled_backends GCE
|
||||
iniset $CINDER_CONF DEFAULT volumes_dir ${VOLUME_DIR}
|
||||
iniset $CINDER_CONF DEFAULT os_privileged_user_name ${CINDER_USER}
|
||||
iniset $CINDER_CONF DEFAULT default_volume_type GCE
|
||||
iniset $CINDER_CONF DEFAULT os_region_name GCE
|
||||
sudo cp -R $OMNI_DATA_DIR/cinder/volume/drivers/gce/ /opt/stack/cinder/cinder/volume/drivers/
|
||||
sudo systemctl restart devstack@c-sch.service devstack@c-vol.service devstack@c-api.service
|
||||
}
|
||||
|
||||
function configure_nova {
|
||||
iniset $NOVA_CONF GCE zone ${ZONE}
|
||||
iniset $NOVA_CONF GCE project_id ${PROJECT}
|
||||
iniset $NOVA_CONF GCE service_key_path ${SERVICE_KEY_PATH}
|
||||
iniset $NOVA_CONF DEFAULT compute_driver ${GCE_COMPUTE_DRIVER}
|
||||
iniset $NOVA_CONF DEFAULT glance_api_insecure True
|
||||
iniset $NOVA_CONF DEFAULT cinder_api_insecure True
|
||||
iniset $NOVA_CONF DEFAULT vnc_enabled True
|
||||
iniset $NOVA_CONF DEFAULT osapi_compute_extension ${COMPUTE_EXTENSION}
|
||||
iniset $NOVA_CONF DEFAULT force_dhcp_release True
|
||||
sudo cp -R $OMNI_DATA_DIR/nova/virt/gce/ /opt/stack/nova/nova/virt/
|
||||
sudo systemctl restart devstack@n-api.service devstack@n-cauth.service devstack@n-cond.service devstack@n-cpu.service devstack@n-novnc.service devstack@n-sch.service
|
||||
}
|
||||
|
||||
function configure_neutron {
|
||||
iniset $NEUTRON_CONF GCE zone ${ZONE}
|
||||
iniset $NEUTRON_CONF GCE project_id ${PROJECT}
|
||||
iniset $NEUTRON_CONF GCE region ${REGION}
|
||||
iniset $NEUTRON_CONF GCE service_key_path ${SERVICE_KEY_PATH}
|
||||
iniset $NEUTRON_CONF DEFAULT core_plugin ${CORE_PLUGIN}
|
||||
iniset $NEUTRON_CONF DEFAULT service_plugins ${GCE_SERVICE_PLUGIN}
|
||||
iniset $NEUTRON_CONF nova region_name GCE
|
||||
|
||||
sudo rm -f /etc/neutron/plugins/ml2/ml2_conf.ini
|
||||
touch /etc/neutron/plugins/ml2/ml2_conf.ini
|
||||
sudo chown stack /etc/neutron/plugins/ml2/ml2_conf.ini
|
||||
|
||||
iniset /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers ${ML2_DRIVERS}
|
||||
iniset /etc/neutron/plugins/ml2/ml2_conf.ini ml2 tenant_network_types ${ML2_TENANT}
|
||||
iniset /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_flat flat_networks "*"
|
||||
iniset /etc/neutron/plugins/ml2/ml2_conf.ini ml2_type_vlan network_vlan_ranges ${ML2_VLAN_TYPE}
|
||||
iniset /etc/neutron/plugins/ml2/ml2_conf.ini ml2 mechanism_drivers gce
|
||||
sudo crudini --set $NEUTRON_ENTRY_POINT neutron.ml2.mechanism_drivers gce neutron.plugins.ml2.drivers.gce.mech_gce:GceMechanismDriver
|
||||
sudo crudini --set $NEUTRON_ENTRY_POINT neutron.service_plugins gce_router neutron.services.l3_router.gce_router_plugin:GceRouterPlugin
|
||||
sudo cp -R $OMNI_DATA_DIR/neutron/neutron/plugins/ml2/drivers/gce/ /opt/stack/neutron/neutron/plugins/ml2/drivers/
|
||||
sudo cp $OMNI_DATA_DIR/neutron/neutron/services/l3_router/gce_router_plugin.py /opt/stack/neutron/neutron/services/l3_router/
|
||||
sudo cp $OMNI_DATA_DIR/neutron/neutron/common/* /opt/stack/neutron/neutron/common/
|
||||
sudo systemctl restart devstack@q-agt.service devstack@q-dhcp.service devstack@q-l3.service devstack@q-meta.service devstack@q-svc.service
|
||||
}
|
||||
|
||||
# Restore xtrace
|
||||
$XTRACE
|
||||
|
||||
## Local variables:
|
||||
## mode: shell-script
|
||||
## End:
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
set -x
|
||||
|
||||
cp /opt/stack/omni/devstack/lib/* $TOP_DIR/lib/
|
||||
sudo apt-get install crudini -y
|
||||
sudo pip install -r /opt/stack/omni/omni-requirements.txt
|
||||
|
||||
if [[ "$1" == "stack" && "$2" == "pre-install" ]] && [ "$OMNI_PROVIDER" != "" ]; then
|
||||
if [ "$OMNI_PROVIDER" != "gce" ] && [ "$OMNI_PROVIDER" != "aws" ]; then
|
||||
echo "$OMNI_PROVIDER is not supported"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$1" == "stack" && "$2" == "extra" ]] && [ "$OMNI_PROVIDER" != "" ]; then
|
||||
source $TOP_DIR/lib/omni_$OMNI_PROVIDER
|
||||
configure_glance
|
||||
configure_cinder
|
||||
configure_nova
|
||||
configure_neutron
|
||||
fi
|
|
@ -0,0 +1,28 @@
|
|||
# Common variables
|
||||
CAPACITY=${CAPACITY:-2048}
|
||||
ENABLE_FORCE_UPLOAD=${ENABLE_FORCE_UPLOAD:-true}
|
||||
VOLUME_DIR=${VOLUME_DIR:-/etc/cinder/volumes}
|
||||
CINDER_USER=${CINDER_USER:-cinder}
|
||||
COMPUTE_EXTENSION=${COMPUTE_EXTENSION:-nova.api.openstack.compute.contrib.standard_extensions}
|
||||
CORE_PLUGIN=${CORE_PLUGIN:-ml2}
|
||||
ML2_DRIVERS=${ML2_DRIVERS:-local,flat}
|
||||
ML2_TENANT=${ML2_TENANT:-local}
|
||||
ML2_VLAN_TYPE=${ML2_VLAN_TYPE:-external}
|
||||
|
||||
# GCE specific variables
|
||||
SERVICE_KEY_PATH=${SERVICE_KEY_PATH:-/etc/omni.json}
|
||||
ZONE=${ZONE:-us-central1-c}
|
||||
PROJECT=${PROJECT:-omni-163105}
|
||||
REGION=${REGION:-us-central1}
|
||||
GCE_CINDER_DRIVER=${GCE_CINDER_DRIVER:-cinder.volume.drivers.gce.driver.GceDriver}
|
||||
GCE_COMPUTE_DRIVER=${GCE_COMPUTE_DRIVER:-gce.GCEDriver}
|
||||
GCE_SERVICE_PLUGIN=${GCE_SERVICE_PLUGIN:-neutron.services.l3_router.gce_router_plugin.GceRouterPlugin}
|
||||
|
||||
# AWS specific variables
|
||||
SECRET_KEY=${SECRET_KEY:-}
|
||||
ACCESS_KEY=${ACCESS_KEY:-}
|
||||
REGION_NAME=${REGION_NAME:-us-east-2}
|
||||
AVAILABILITY_ZONE=${AVAILABILITY_ZONE:-us-east-2a}
|
||||
AWS_CINDER_DRIVER=${AWS_CINDER_DRIVER:-cinder.volume.drivers.aws.ebs.EBSDriver}
|
||||
AWS_COMPUTE_DRIVER=${AWS_COMPUTE_DRIVER:-ec2.EC2Driver}
|
||||
AWS_SERVICE_PLUGIN=${AWS_SERVICE_PLUGIN:-neutron.services.l3_router.aws_router_plugin.AwsRouterPlugin}
|
Loading…
Reference in New Issue