16bfc82962
One of the goals for Pike [1] is to make each API service be able to run under web servers that support WSGI applications, such as Apache (+mod-wsgi) and Nginx (+uWSGI). Do following to address governance requirements: - Split existing manila/wsgi.py module into 3 modules: First (manila/wsgi/eventlet_server.py) is used by eventlet-based WSGI application approach. Second (manila/wsgi/wsgi.py) is used for WSGI web servers. And third (manila/wsgi/common.py) is common code for both. All three are made in cinder-like way to have alike-approach. - Reuse common code from "oslo_service/wsgi.py" module that allows us to remove code duplication. - Delete config opts that are defined by newly reused common code. - Register new entry point that will be manila wsgi app: "manila-wsgi". - Fix "manila/api/openstack/wsgi.py" module to be compatible with str/bytes handling approach used by Apache mod-wsgi plugin using different python versions (2/3). - Add web server config template "devstack/apache-manila.template" - Add devstack support where usage of this feature can be enabled or disabled using "MANILA_USE_MOD_WSGI" env var. It is set to "True" by default, because it is requirement for Pike release - to have it running in all CI jobs. Disable it only for one CI job that uses dummy driver and tests various manila core features that are not covered by other CI jobs. [1] https://governance.openstack.org/tc/goals/pike/deploy-api-in-wsgi.html Partially-Implements BluePrint wsgi-web-servers-support DocImpact Change-Id: Ibdef3c6810b65a5d6f3611e2d0079c635ee523ab
206 lines
11 KiB
Plaintext
206 lines
11 KiB
Plaintext
# Setting configuration file for manila services
|
|
# ----------------------------------------------
|
|
# 1) It is possible to set any custom opt to any config group using following:
|
|
# $ export MANILA_OPTGROUP_foo_bar=value
|
|
# where 'foo' is name of config group and 'bar' is name of option.
|
|
#
|
|
# 2) 'MANILA_CONFIGURE_GROUPS' contains list of config group names used to create
|
|
# config groups, but 'MANILA_ENABLED_BACKENDS' is used to set config groups as
|
|
# Manila share back ends. Both can be set like following:
|
|
# $ export MANILA_ENABLED_BACKENDS=foo,bar
|
|
# where 'foo' and 'bar' are names of config groups with opts for some share
|
|
# drivers. By default they are equal. Also be attentive, if you modify both,
|
|
# make sure 'MANILA_CONFIGURE_GROUPS' contains all values from
|
|
# 'MANILA_ENABLED_BACKENDS'.
|
|
# DEFAULT group is always defined, no need to specify it within 'MANILA_CONFIGURE_GROUPS'.
|
|
#
|
|
# 3) Two default backends are used for compatibility with previous approach.
|
|
# They have same configuration except name of backend. Both use generic driver.
|
|
# They can be enabled by adding values of following env vars:
|
|
# 'MANILA_BACKEND1_CONFIG_GROUP_NAME' and 'MANILA_BACKEND2_CONFIG_GROUP_NAME'
|
|
# to the env var 'MANILA_ENABLED_BACKENDS' or will be enabled
|
|
# if 'MANILA_ENABLED_BACKENDS' is empty.
|
|
#
|
|
# 4) 'CINDER_OVERSUBSCRIPTION_RATIO' - manila devstack-plugin env var that is
|
|
# useful for all share drivers that use Cinder. If it is set, then it will be
|
|
# applied for two Cinder options: 'max_over_subscription_ratio' and
|
|
# 'lvm_max_over_subscription_ratio'. Should be float. Example:
|
|
# CINDER_OVERSUBSCRIPTION_RATIO=20.0
|
|
|
|
|
|
# Defaults
|
|
# --------
|
|
MANILA_GIT_BASE=${MANILA_GIT_BASE:-https://github.com}
|
|
MANILA_REPO_ROOT=${MANILA_REPO_ROOT:-openstack}
|
|
|
|
MANILACLIENT_REPO=${MANILA_GIT_BASE}/${MANILA_REPO_ROOT}/python-manilaclient.git
|
|
MANILACLIENT_BRANCH=${MANILACLIENT_BRANCH:-master}
|
|
|
|
# Set up default directories
|
|
MANILA_DIR=${MANILA_DIR:=$DEST/manila}
|
|
MANILA_LOCK_PATH=${MANILA_LOCK_PATH:=$OSLO_LOCK_PATH}
|
|
MANILA_LOCK_PATH=${MANILA_LOCK_PATH:=$MANILA_DIR/manila_locks}
|
|
MANILACLIENT_DIR=${MANILACLIENT_DIR:=$DEST/python-manilaclient}
|
|
MANILA_STATE_PATH=${MANILA_STATE_PATH:=$DATA_DIR/manila}
|
|
MANILA_AUTH_CACHE_DIR=${MANILA_AUTH_CACHE_DIR:-/var/cache/manila}
|
|
|
|
MANILA_CONF_DIR=${MANILA_CONF_DIR:-/etc/manila}
|
|
MANILA_CONF=$MANILA_CONF_DIR/manila.conf
|
|
MANILA_API_PASTE_INI=$MANILA_CONF_DIR/api-paste.ini
|
|
|
|
MANILA_DEFAULT_SHARE_TYPE=${MANILA_DEFAULT_SHARE_TYPE:-default}
|
|
# MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS is expected to contain extra specs key-value pairs,
|
|
# that should be assigned to default share type. Both - qualified and unqualified extra specs are supported.
|
|
# Pairs are separated by spaces, value is assigned to key using sign of equality. Examples:
|
|
# MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS='foo=bar'
|
|
# MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS='foo=bar quuz=xyzzy'
|
|
# MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS='foo=bar quuz=xyzzy fakeprefix:baz=waldo'
|
|
|
|
MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS=${MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS:-''}
|
|
MANILA_DHSS_TRUE_SHARE_TYPE_EXTRA_SPECS=${MANILA_DHSS_TRUE_SHARE_TYPE_EXTRA_SPECS:-$MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS}
|
|
MANILA_DHSS_FALSE_SHARE_TYPE_EXTRA_SPECS=${MANILA_DHSS_FALSE_SHARE_TYPE_EXTRA_SPECS:-$MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS}
|
|
|
|
# Share groups and their specs
|
|
MANILA_DEFAULT_SHARE_GROUP_TYPE=${MANILA_DEFAULT_SHARE_GROUP_TYPE:-default}
|
|
# MANILA_DEFAULT_SHARE_GROUP_TYPE_SPECS is expected to contain key-value pairs,
|
|
# that should be assigned to default share group type. Both - qualified and unqualified specs are supported.
|
|
# Pairs are separated by spaces, value is assigned to key using sign of equality. Examples:
|
|
# MANILA_DEFAULT_SHARE_GROUP_TYPE_SPECS='foo=bar'
|
|
# MANILA_DEFAULT_SHARE_GROUP_TYPE_SPECS='foo=bar quuz=xyzzy'
|
|
# MANILA_DEFAULT_SHARE_GROUP_TYPE_SPECS='foo=bar quuz=xyzzy fakeprefix:baz=waldo'
|
|
MANILA_DEFAULT_SHARE_GROUP_TYPE_SPECS=${MANILA_DEFAULT_SHARE_GROUP_TYPE_SPECS:-''}
|
|
|
|
# Public facing bits
|
|
MANILA_SERVICE_HOST=${MANILA_SERVICE_HOST:-$SERVICE_HOST}
|
|
MANILA_SERVICE_PORT=${MANILA_SERVICE_PORT:-8786}
|
|
MANILA_SERVICE_PORT_INT=${MANILA_SERVICE_PORT_INT:-18786}
|
|
MANILA_SERVICE_PROTOCOL=${MANILA_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
|
|
|
|
# Support entry points installation of console scripts
|
|
if [[ -d $MANILA_DIR/bin ]]; then
|
|
MANILA_BIN_DIR=$MANILA_DIR/bin
|
|
else
|
|
MANILA_BIN_DIR=$(get_python_exec_prefix)
|
|
fi
|
|
|
|
# Common opts
|
|
SHARE_NAME_PREFIX=${SHARE_NAME_PREFIX:-share-}
|
|
MANILA_ENABLED_SHARE_PROTOCOLS=${ENABLED_SHARE_PROTOCOLS:-"NFS,CIFS"}
|
|
MANILA_SCHEDULER_DRIVER=${MANILA_SCHEDULER_DRIVER:-manila.scheduler.filter_scheduler.FilterScheduler}
|
|
MANILA_SERVICE_SECGROUP="manila-service"
|
|
|
|
# Following env var defines whether to apply downgrade migrations setting up DB or not.
|
|
# If it is set to False, then only 'upgrade' migrations will be applied.
|
|
# If it is set to True, then will be applied 'upgrade', 'downgrade' and 'upgrade'
|
|
# migrations again.
|
|
MANILA_USE_DOWNGRADE_MIGRATIONS=${MANILA_USE_DOWNGRADE_MIGRATIONS:-"False"}
|
|
|
|
# Toggle for deploying manila-api service under Apache web server with enabled 'mod_wsgi' plugin.
|
|
# Disabled by default, which means running manila-api service as standalone
|
|
# eventlet-based WSGI application.
|
|
# Set it as True, because starting with Pike it is requirement from
|
|
# 'governance' project. See:
|
|
# https://governance.openstack.org/tc/goals/pike/deploy-api-in-wsgi.html#completion-criteria
|
|
MANILA_USE_MOD_WSGI=${MANILA_USE_MOD_WSGI:-True}
|
|
|
|
# Common info for Generic driver(s)
|
|
SHARE_DRIVER=${SHARE_DRIVER:-manila.share.drivers.generic.GenericShareDriver}
|
|
|
|
eval USER_HOME=~
|
|
MANILA_PATH_TO_PUBLIC_KEY=${MANILA_PATH_TO_PUBLIC_KEY:-"$USER_HOME/.ssh/id_rsa.pub"}
|
|
MANILA_PATH_TO_PRIVATE_KEY=${MANILA_PATH_TO_PRIVATE_KEY:-"$USER_HOME/.ssh/id_rsa"}
|
|
MANILA_SERVICE_KEYPAIR_NAME=${MANILA_SERVICE_KEYPAIR_NAME:-"manila-service"}
|
|
|
|
MANILA_SERVICE_INSTANCE_USER=${MANILA_SERVICE_INSTANCE_USER:-"manila"}
|
|
MANILA_SERVICE_IMAGE_URL=${MANILA_SERVICE_IMAGE_URL:-"http://tarballs.openstack.org/manila-image-elements/images/manila-service-image-master.qcow2"}
|
|
MANILA_SERVICE_IMAGE_NAME=${MANILA_SERVICE_IMAGE_NAME:-"manila-service-image-master"}
|
|
|
|
# Third party CI Vendors should set this to false to skip the service image download
|
|
MANILA_SERVICE_IMAGE_ENABLED=$(trueorfalse True MANILA_SERVICE_IMAGE_ENABLED)
|
|
|
|
MANILA_USE_SERVICE_INSTANCE_PASSWORD=${MANILA_USE_SERVICE_INSTANCE_PASSWORD:-"False"}
|
|
MANILA_SERVICE_INSTANCE_PASSWORD=${MANILA_SERVICE_INSTANCE_PASSWORD:-"manila"}
|
|
|
|
MANILA_SERVICE_VM_FLAVOR_REF=${MANILA_SERVICE_VM_FLAVOR_REF:-100}
|
|
MANILA_SERVICE_VM_FLAVOR_NAME=${MANILA_SERVICE_VM_FLAVOR_NAME:-"manila-service-flavor"}
|
|
MANILA_SERVICE_VM_FLAVOR_RAM=${MANILA_SERVICE_VM_FLAVOR_RAM:-192}
|
|
MANILA_SERVICE_VM_FLAVOR_DISK=${MANILA_SERVICE_VM_FLAVOR_DISK:-0}
|
|
MANILA_SERVICE_VM_FLAVOR_VCPUS=${MANILA_SERVICE_VM_FLAVOR_VCPUS:-1}
|
|
|
|
# Support for multi backend configuration (default is no support)
|
|
MANILA_MULTI_BACKEND=$(trueorfalse False MANILA_MULTI_BACKEND)
|
|
DEPRECATED_TEXT="$DEPRECATED_TEXT\n'MANILA_MULTI_BACKEND' is deprecated,
|
|
it makes influence only when is set to True and 'MANILA_ENABLED_BACKENDS' is not set.
|
|
Use 'MANILA_ENABLED_BACKENDS' instead if you want to use custom setting.
|
|
Set there a list of back end names to be enabled.\n
|
|
To configure custom back ends use (any opt in any group can be set in this way) following:
|
|
MANILA_OPTGROUP_foo_bar=value
|
|
where 'foo' is name of config group and 'bar' is name of option.\n"
|
|
|
|
# First share backend data, that will be used in any installation
|
|
MANILA_BACKEND1_CONFIG_GROUP_NAME=${MANILA_BACKEND1_CONFIG_GROUP_NAME:-generic1} # deprecated
|
|
MANILA_SHARE_BACKEND1_NAME=${MANILA_SHARE_BACKEND1_NAME:-GENERIC1} # deprecated
|
|
|
|
# Second share backend data, that will be used only with MANILA_MULTI_BACKEND=True
|
|
MANILA_BACKEND2_CONFIG_GROUP_NAME=${MANILA_BACKEND2_CONFIG_GROUP_NAME:-generic2} # deprecated
|
|
MANILA_SHARE_BACKEND2_NAME=${MANILA_SHARE_BACKEND2_NAME:-GENERIC2} # deprecated
|
|
|
|
# Options for configuration of LVM share driver
|
|
SHARE_BACKING_FILE_SIZE=${SHARE_BACKING_FILE_SIZE:-8400M}
|
|
SHARE_GROUP=${SHARE_GROUP:-lvm-shares}
|
|
MANILA_MNT_DIR=${MANILA_MNT_DIR:=$MANILA_STATE_PATH/mnt}
|
|
SMB_CONF=${SMB_CONF:-/etc/samba/smb.conf}
|
|
SMB_PRIVATE_DIR=${SMB_PRIVATE_DIR:-/var/lib/samba/private}
|
|
CONFIGURE_BACKING_FILE=${CONFIGURE_BACKING_FILE:-"True"}
|
|
MANILA_LVM_SHARE_EXPORT_IP=${MANILA_LVM_SHARE_EXPORT_IP:-$HOST_IP}
|
|
|
|
# Options for replication
|
|
MANILA_REPLICA_STATE_UPDATE_INTERVAL=${MANILA_REPLICA_STATE_UPDATE_INTERVAL:-300}
|
|
|
|
# Options for configuration of ZFSonLinux driver
|
|
# 'MANILA_ZFSONLINUX_ZPOOL_SIZE' defines size of each zpool. That value
|
|
# will be used for creation of sparse files.
|
|
MANILA_ZFSONLINUX_ZPOOL_SIZE=${MANILA_ZFSONLINUX_ZPOOL_SIZE:-"30G"}
|
|
MANILA_ZFSONLINUX_BACKEND_FILES_CONTAINER_DIR=${MANILA_ZFSONLINUX_BACKEND_FILES_CONTAINER_DIR:-"/opt/stack/data/manila/zfsonlinux"}
|
|
MANILA_ZFSONLINUX_SHARE_EXPORT_IP=${MANILA_ZFSONLINUX_SHARE_EXPORT_IP:-$HOST_IP}
|
|
MANILA_ZFSONLINUX_SERVICE_IP=${MANILA_ZFSONLINUX_SERVICE_IP:-$HOST_IP}
|
|
MANILA_ZFSONLINUX_DATASET_CREATION_OPTIONS=${MANILA_ZFSONLINUX_DATASET_CREATION_OPTIONS:-"compression=gzip"}
|
|
MANILA_ZFSONLINUX_USE_SSH=${MANILA_ZFSONLINUX_USE_SSH:-"False"}
|
|
MANILA_ZFSONLINUX_SSH_USERNAME=${MANILA_ZFSONLINUX_SSH_USERNAME:-$STACK_USER}
|
|
# If MANILA_ZFSONLINUX_REPLICATION_DOMAIN is set to empty value then
|
|
# Manila will consider replication feature as disabled for ZFSonLinux share driver.
|
|
MANILA_ZFSONLINUX_REPLICATION_DOMAIN=${MANILA_ZFSONLINUX_REPLICATION_DOMAIN:-"ZFSonLinux"}
|
|
|
|
# Container Driver
|
|
MANILA_CONTAINER_DRIVER=${MANILA_CONTAINER_DRIVER:-"manila.share.drivers.container.driver.ContainerShareDriver"}
|
|
MANILA_DOCKER_IMAGE_ALIAS=${MANILA_DOCKER_IMAGE_ALIAS:-"manila_docker_image"}
|
|
MANILA_CONTAINER_VOLUME_GROUP_NAME=${MANILA_CONTAINER_VOLUME_GROUP_NAME:-"manila_docker_volumes"}
|
|
# (aovchinnikov): This location is temporary and will be changed to a
|
|
# permanent one as soon as possible.
|
|
MANILA_DOCKER_IMAGE_URL=${MANILA_DOCKER_IMAGE_URL:-"https://github.com/a-ovchinnikov/manila-image-elements-lxd-images/releases/download/0.1.0/manila-docker-container.tar.gz"}
|
|
|
|
# Network Plugin
|
|
MANILA_NETWORK_API_CLASS=${MANILA_NETWORK_API_CLASS:-"manila.network.neutron.neutron_network_plugin.NeutronBindNetworkPlugin"}
|
|
MANILA_NEUTRON_VNIC_TYPE=${MANILA_NEUTRON_VNIC_TYPE:-"normal"}
|
|
|
|
# Admin Network setup
|
|
MANILA_ADMIN_NET_RANGE=${MANILA_ADMIN_NET_RANGE:=10.2.5.0/24}
|
|
|
|
# Data Service IP configuration
|
|
MANILA_DATA_NODE_IP=${MANILA_DATA_NODE_IP:=$MANILA_ADMIN_NET_RANGE}
|
|
|
|
# Data Service copy validation
|
|
MANILA_DATA_COPY_CHECK_HASH=${MANILA_DATA_COPY_CHECK_HASH:=True}
|
|
|
|
# Enable manila services
|
|
# ----------------------
|
|
# We have to add Manila to enabled services for screen_it to work
|
|
# It consists of 4 parts: m-api (API), m-shr (Share), m-sch (Scheduler)
|
|
# and m-dat (Data).
|
|
|
|
enable_service manila
|
|
enable_service m-api
|
|
enable_service m-shr
|
|
enable_service m-sch
|
|
enable_service m-dat
|