Add IPv6 support to devstack infrastructure
By default, most Openstack services are bound to 0.0.0.0 and service endpoints are registered as IPv4 addresses. With this change we introduce two new variables to control this behavior: SERVICE_IP_VERSION - can either be "4" or "6". When set to "4" (default if not set) devstack will operate as today - most services will open listen sockets on 0.0.0.0 and service endpoints will be registered using HOST_IP as the address. When set to "6" devstack services will open listen sockets on :: and service endpoints will be registered using HOST_IPV6 as the address. There is no support for "4+6", more work is required for that. HOST_IPV6 - if SERVICE_IP_VERSION=6 this must be an IPv6 address configured on the system. Some existing services, like the Openvswitch agent, will continue to use IPv4 addresses for things like tunnel endpoints. This is a current restriction in the code and can be updated at a later time. This change is just a first step to supporting IPv6-only control and data planes in devstack. This change is also partly based on two previous patches, https://review.openstack.org/#/c/140519/ and https://review.openstack.org/#/c/176898/ Change-Id: I5c0b775490ce54ab104fd5e89b20fb700212ae74 Co-Authored-By: Sean Collins <sean@coreitpro.com> Co-Authored-By: Baodong Li <baoli@cisco.com> Co-Authored-By: Sridhar Gaddam <sridhar.gaddam@enovance.com> Co-Authored-By: Adam Kacmarsky <adam.kacmarsky@hp.com> Co-Authored-By: Jeremy Alvis <jeremy.alvis@hp.com>
This commit is contained in:
parent
52844a11dd
commit
180f5eb652
16
README.md
16
README.md
@ -360,6 +360,22 @@ Be aware that there are some features currently missing in cells, one notable
|
|||||||
one being security groups. The exercises have been patched to disable
|
one being security groups. The exercises have been patched to disable
|
||||||
functionality not supported by cells.
|
functionality not supported by cells.
|
||||||
|
|
||||||
|
# IPv6
|
||||||
|
|
||||||
|
By default, most Openstack services are bound to 0.0.0.0
|
||||||
|
and service endpoints are registered as IPv4 addresses.
|
||||||
|
A new variable was created to control this behavior, and to
|
||||||
|
allow for operation over IPv6 instead of IPv4.
|
||||||
|
|
||||||
|
For this, add the following to `local.conf`:
|
||||||
|
|
||||||
|
SERVICE_IP_VERSION=6
|
||||||
|
|
||||||
|
When set to "6" devstack services will open listen sockets on ::
|
||||||
|
and service endpoints will be registered using HOST_IPV6 as the
|
||||||
|
address. The default value for this setting is `4`. Dual-mode
|
||||||
|
support, for example `4+6` is not currently supported.
|
||||||
|
|
||||||
|
|
||||||
# Local Configuration
|
# Local Configuration
|
||||||
|
|
||||||
|
@ -137,6 +137,11 @@ Ethernet interface to a bridge on the host. Setting it here also makes it
|
|||||||
available for ``openrc`` to set ``OS_AUTH_URL``. ``HOST_IP`` is not set
|
available for ``openrc`` to set ``OS_AUTH_URL``. ``HOST_IP`` is not set
|
||||||
by default.
|
by default.
|
||||||
|
|
||||||
|
``HOST_IPV6`` is normally detected on the first run of ``stack.sh`` but
|
||||||
|
will not be set if there is no IPv6 address on the default Ethernet interface.
|
||||||
|
Setting it here also makes it available for ``openrc`` to set ``OS_AUTH_URL``.
|
||||||
|
``HOST_IPV6`` is not set by default.
|
||||||
|
|
||||||
Common Configuration Variables
|
Common Configuration Variables
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
@ -391,6 +396,8 @@ Multi-host DevStack
|
|||||||
ENABLED_SERVICES=n-vol,n-cpu,n-net,n-api
|
ENABLED_SERVICES=n-vol,n-cpu,n-net,n-api
|
||||||
|
|
||||||
IP Version
|
IP Version
|
||||||
|
----------
|
||||||
|
|
||||||
| Default: ``IP_VERSION=4+6``
|
| Default: ``IP_VERSION=4+6``
|
||||||
| This setting can be used to configure DevStack to create either an IPv4,
|
| This setting can be used to configure DevStack to create either an IPv4,
|
||||||
IPv6, or dual stack tenant data network by setting ``IP_VERSION`` to
|
IPv6, or dual stack tenant data network by setting ``IP_VERSION`` to
|
||||||
@ -418,6 +425,25 @@ IP Version
|
|||||||
| *Note: ``FIXED_RANGE_V6`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``
|
| *Note: ``FIXED_RANGE_V6`` and ``IPV6_PRIVATE_NETWORK_GATEWAY``
|
||||||
can be configured with any valid IPv6 prefix. The default values make
|
can be configured with any valid IPv6 prefix. The default values make
|
||||||
use of an auto-generated ``IPV6_GLOBAL_ID`` to comply with RFC 4193.*
|
use of an auto-generated ``IPV6_GLOBAL_ID`` to comply with RFC 4193.*
|
||||||
|
|
|
||||||
|
|
||||||
|
| Default: ``SERVICE_IP_VERSION=4``
|
||||||
|
| This setting can be used to configure DevStack to enable services to
|
||||||
|
operate over either IPv4 or IPv6, by setting ``SERVICE_IP_VERSION`` to
|
||||||
|
either ``SERVICE_IP_VERSION=4`` or ``SERVICE_IP_VERSION=6`` respectively.
|
||||||
|
When set to ``4`` devstack services will open listen sockets on 0.0.0.0
|
||||||
|
and service endpoints will be registered using ``HOST_IP`` as the address.
|
||||||
|
When set to ``6`` devstack services will open listen sockets on :: and
|
||||||
|
service endpoints will be registered using ``HOST_IPV6`` as the address.
|
||||||
|
The default value for this setting is ``4``. Dual-mode support, for
|
||||||
|
example ``4+6`` is not currently supported.
|
||||||
|
| The following optional variable can be used to alter the default IPv6
|
||||||
|
address used:
|
||||||
|
|
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
HOST_IPV6=${some_local_ipv6_address}
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
========
|
========
|
||||||
|
@ -46,7 +46,8 @@ TRACK_DEPENDS=${TRACK_DEPENDS:-False}
|
|||||||
# Save these variables to .stackenv
|
# Save these variables to .stackenv
|
||||||
STACK_ENV_VARS="BASE_SQL_CONN DATA_DIR DEST ENABLED_SERVICES HOST_IP \
|
STACK_ENV_VARS="BASE_SQL_CONN DATA_DIR DEST ENABLED_SERVICES HOST_IP \
|
||||||
KEYSTONE_AUTH_PROTOCOL KEYSTONE_AUTH_URI KEYSTONE_SERVICE_URI \
|
KEYSTONE_AUTH_PROTOCOL KEYSTONE_AUTH_URI KEYSTONE_SERVICE_URI \
|
||||||
LOGFILE OS_CACERT SERVICE_HOST SERVICE_PROTOCOL STACK_USER TLS_IP"
|
LOGFILE OS_CACERT SERVICE_HOST SERVICE_PROTOCOL STACK_USER TLS_IP \
|
||||||
|
HOST_IPV6"
|
||||||
|
|
||||||
|
|
||||||
# Saves significant environment variables to .stackenv for later use
|
# Saves significant environment variables to .stackenv for later use
|
||||||
@ -578,13 +579,14 @@ function get_default_host_ip {
|
|||||||
local floating_range=$2
|
local floating_range=$2
|
||||||
local host_ip_iface=$3
|
local host_ip_iface=$3
|
||||||
local host_ip=$4
|
local host_ip=$4
|
||||||
|
local af=$5
|
||||||
|
|
||||||
# Search for an IP unless an explicit is set by ``HOST_IP`` environment variable
|
# Search for an IP unless an explicit is set by ``HOST_IP`` environment variable
|
||||||
if [ -z "$host_ip" -o "$host_ip" == "dhcp" ]; then
|
if [ -z "$host_ip" -o "$host_ip" == "dhcp" ]; then
|
||||||
host_ip=""
|
host_ip=""
|
||||||
# Find the interface used for the default route
|
# Find the interface used for the default route
|
||||||
host_ip_iface=${host_ip_iface:-$(ip route | awk '/default/ {print $5}' | head -1)}
|
host_ip_iface=${host_ip_iface:-$(ip -f $af route | awk '/default/ {print $5}' | head -1)}
|
||||||
local host_ips=$(LC_ALL=C ip -f inet addr show ${host_ip_iface} | awk '/inet/ {split($2,parts,"/"); print parts[1]}')
|
local host_ips=$(LC_ALL=C ip -f $af addr show ${host_ip_iface} | awk /$af'/ {split($2,parts,"/"); print parts[1]}')
|
||||||
local ip
|
local ip
|
||||||
for ip in $host_ips; do
|
for ip in $host_ips; do
|
||||||
# Attempt to filter out IP addresses that are part of the fixed and
|
# Attempt to filter out IP addresses that are part of the fixed and
|
||||||
@ -593,6 +595,10 @@ function get_default_host_ip {
|
|||||||
# will be printed and the first IP from the interface will be used.
|
# will be printed and the first IP from the interface will be used.
|
||||||
# If that is not correct set ``HOST_IP`` in ``localrc`` to the correct
|
# If that is not correct set ``HOST_IP`` in ``localrc`` to the correct
|
||||||
# address.
|
# address.
|
||||||
|
if [[ "$af" == "inet6" ]]; then
|
||||||
|
host_ip=$ip
|
||||||
|
break;
|
||||||
|
fi
|
||||||
if ! (address_in_net $ip $fixed_range || address_in_net $ip $floating_range); then
|
if ! (address_in_net $ip $fixed_range || address_in_net $ip $floating_range); then
|
||||||
host_ip=$ip
|
host_ip=$ip
|
||||||
break;
|
break;
|
||||||
|
@ -65,6 +65,7 @@ CINDER_SERVICE_HOST=${CINDER_SERVICE_HOST:-$SERVICE_HOST}
|
|||||||
CINDER_SERVICE_PORT=${CINDER_SERVICE_PORT:-8776}
|
CINDER_SERVICE_PORT=${CINDER_SERVICE_PORT:-8776}
|
||||||
CINDER_SERVICE_PORT_INT=${CINDER_SERVICE_PORT_INT:-18776}
|
CINDER_SERVICE_PORT_INT=${CINDER_SERVICE_PORT_INT:-18776}
|
||||||
CINDER_SERVICE_PROTOCOL=${CINDER_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
|
CINDER_SERVICE_PROTOCOL=${CINDER_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
|
||||||
|
CINDER_SERVICE_LISTEN_ADDRESS=${CINDER_SERVICE_LISTEN_ADDRESS:-$SERVICE_LISTEN_ADDRESS}
|
||||||
|
|
||||||
# What type of LVM device should Cinder use for LVM backend
|
# What type of LVM device should Cinder use for LVM backend
|
||||||
# Defaults to default, which is thick, the other valid choice
|
# Defaults to default, which is thick, the other valid choice
|
||||||
@ -222,6 +223,7 @@ function configure_cinder {
|
|||||||
iniset $CINDER_CONF DEFAULT api_paste_config $CINDER_API_PASTE_INI
|
iniset $CINDER_CONF DEFAULT api_paste_config $CINDER_API_PASTE_INI
|
||||||
iniset $CINDER_CONF DEFAULT rootwrap_config "$CINDER_CONF_DIR/rootwrap.conf"
|
iniset $CINDER_CONF DEFAULT rootwrap_config "$CINDER_CONF_DIR/rootwrap.conf"
|
||||||
iniset $CINDER_CONF DEFAULT osapi_volume_extension cinder.api.contrib.standard_extensions
|
iniset $CINDER_CONF DEFAULT osapi_volume_extension cinder.api.contrib.standard_extensions
|
||||||
|
iniset $CINDER_CONF DEFAULT osapi_volume_listen $CINDER_SERVICE_LISTEN_ADDRESS
|
||||||
iniset $CINDER_CONF DEFAULT state_path $CINDER_STATE_PATH
|
iniset $CINDER_CONF DEFAULT state_path $CINDER_STATE_PATH
|
||||||
iniset $CINDER_CONF oslo_concurrency lock_path $CINDER_STATE_PATH
|
iniset $CINDER_CONF oslo_concurrency lock_path $CINDER_STATE_PATH
|
||||||
iniset $CINDER_CONF DEFAULT periodic_interval $CINDER_PERIODIC_INTERVAL
|
iniset $CINDER_CONF DEFAULT periodic_interval $CINDER_PERIODIC_INTERVAL
|
||||||
|
13
lib/database
13
lib/database
@ -70,10 +70,19 @@ function initialize_database_backends {
|
|||||||
|
|
||||||
# For backward-compatibility, read in the MYSQL_HOST/USER variables and use
|
# For backward-compatibility, read in the MYSQL_HOST/USER variables and use
|
||||||
# them as the default values for the DATABASE_HOST/USER variables.
|
# them as the default values for the DATABASE_HOST/USER variables.
|
||||||
MYSQL_HOST=${MYSQL_HOST:-127.0.0.1}
|
MYSQL_HOST=${MYSQL_HOST:-$SERVICE_LOCAL_HOST}
|
||||||
MYSQL_USER=${MYSQL_USER:-root}
|
MYSQL_USER=${MYSQL_USER:-root}
|
||||||
|
|
||||||
DATABASE_HOST=${DATABASE_HOST:-${MYSQL_HOST}}
|
# Set DATABASE_HOST equal to MYSQL_HOST. If SERVICE_IP_VERSION is equal to 6,
|
||||||
|
# set DATABASE_HOST equal to [MYSQL_HOST]. MYSQL_HOST cannot use brackets due
|
||||||
|
# to mysql not using bracketing for IPv6 addresses. DATABASE_HOST must have brackets
|
||||||
|
# due to sqlalchemy only reading IPv6 addresses with brackets.
|
||||||
|
if [[ "$SERVICE_IP_VERSION" == 6 ]]; then
|
||||||
|
DATABASE_HOST=${DATABASE_HOST:-[$MYSQL_HOST]}
|
||||||
|
else
|
||||||
|
DATABASE_HOST=${DATABASE_HOST:-${MYSQL_HOST}}
|
||||||
|
fi
|
||||||
|
|
||||||
DATABASE_USER=${DATABASE_USER:-${MYSQL_USER}}
|
DATABASE_USER=${DATABASE_USER:-${MYSQL_USER}}
|
||||||
|
|
||||||
if [ -n "$MYSQL_PASSWORD" ]; then
|
if [ -n "$MYSQL_PASSWORD" ]; then
|
||||||
|
@ -90,10 +90,10 @@ function configure_database_mysql {
|
|||||||
|
|
||||||
# Now update ``my.cnf`` for some local needs and restart the mysql service
|
# Now update ``my.cnf`` for some local needs and restart the mysql service
|
||||||
|
|
||||||
# Change ‘bind-address’ from localhost (127.0.0.1) to any (0.0.0.0) and
|
# Change ‘bind-address’ from localhost (127.0.0.1) to any (::) and
|
||||||
# set default db type to InnoDB
|
# set default db type to InnoDB
|
||||||
sudo bash -c "source $TOP_DIR/functions && \
|
sudo bash -c "source $TOP_DIR/functions && \
|
||||||
iniset $my_conf mysqld bind-address 0.0.0.0 && \
|
iniset $my_conf mysqld bind-address "$SERVICE_LISTEN_ADDRESS" && \
|
||||||
iniset $my_conf mysqld sql_mode STRICT_ALL_TABLES && \
|
iniset $my_conf mysqld sql_mode STRICT_ALL_TABLES && \
|
||||||
iniset $my_conf mysqld default-storage-engine InnoDB \
|
iniset $my_conf mysqld default-storage-engine InnoDB \
|
||||||
iniset $my_conf mysqld max_connections 1024 \
|
iniset $my_conf mysqld max_connections 1024 \
|
||||||
|
@ -64,6 +64,7 @@ fi
|
|||||||
|
|
||||||
# Glance connection info. Note the port must be specified.
|
# Glance connection info. Note the port must be specified.
|
||||||
GLANCE_SERVICE_HOST=${GLANCE_SERVICE_HOST:-$SERVICE_HOST}
|
GLANCE_SERVICE_HOST=${GLANCE_SERVICE_HOST:-$SERVICE_HOST}
|
||||||
|
GLANCE_SERVICE_LISTEN_ADDRESS=${GLANCE_SERVICE_LISTEN_ADDRESS:-$SERVICE_LISTEN_ADDRESS}
|
||||||
GLANCE_SERVICE_PORT=${GLANCE_SERVICE_PORT:-9292}
|
GLANCE_SERVICE_PORT=${GLANCE_SERVICE_PORT:-9292}
|
||||||
GLANCE_SERVICE_PORT_INT=${GLANCE_SERVICE_PORT_INT:-19292}
|
GLANCE_SERVICE_PORT_INT=${GLANCE_SERVICE_PORT_INT:-19292}
|
||||||
GLANCE_HOSTPORT=${GLANCE_HOSTPORT:-$GLANCE_SERVICE_HOST:$GLANCE_SERVICE_PORT}
|
GLANCE_HOSTPORT=${GLANCE_HOSTPORT:-$GLANCE_SERVICE_HOST:$GLANCE_SERVICE_PORT}
|
||||||
@ -106,6 +107,7 @@ function configure_glance {
|
|||||||
# Copy over our glance configurations and update them
|
# Copy over our glance configurations and update them
|
||||||
cp $GLANCE_DIR/etc/glance-registry.conf $GLANCE_REGISTRY_CONF
|
cp $GLANCE_DIR/etc/glance-registry.conf $GLANCE_REGISTRY_CONF
|
||||||
iniset $GLANCE_REGISTRY_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
iniset $GLANCE_REGISTRY_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
||||||
|
iniset $GLANCE_REGISTRY_CONF DEFAULT bind_host $GLANCE_SERVICE_LISTEN_ADDRESS
|
||||||
inicomment $GLANCE_REGISTRY_CONF DEFAULT log_file
|
inicomment $GLANCE_REGISTRY_CONF DEFAULT log_file
|
||||||
local dburl=`database_connection_url glance`
|
local dburl=`database_connection_url glance`
|
||||||
iniset $GLANCE_REGISTRY_CONF DEFAULT sql_connection $dburl
|
iniset $GLANCE_REGISTRY_CONF DEFAULT sql_connection $dburl
|
||||||
@ -118,6 +120,7 @@ function configure_glance {
|
|||||||
|
|
||||||
cp $GLANCE_DIR/etc/glance-api.conf $GLANCE_API_CONF
|
cp $GLANCE_DIR/etc/glance-api.conf $GLANCE_API_CONF
|
||||||
iniset $GLANCE_API_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
iniset $GLANCE_API_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
||||||
|
iniset $GLANCE_API_CONF DEFAULT bind_host $GLANCE_SERVICE_LISTEN_ADDRESS
|
||||||
inicomment $GLANCE_API_CONF DEFAULT log_file
|
inicomment $GLANCE_API_CONF DEFAULT log_file
|
||||||
iniset $GLANCE_API_CONF DEFAULT sql_connection $dburl
|
iniset $GLANCE_API_CONF DEFAULT sql_connection $dburl
|
||||||
iniset $GLANCE_API_CONF DEFAULT use_syslog $SYSLOG
|
iniset $GLANCE_API_CONF DEFAULT use_syslog $SYSLOG
|
||||||
@ -136,6 +139,7 @@ function configure_glance {
|
|||||||
|
|
||||||
# Store specific configs
|
# Store specific configs
|
||||||
iniset $GLANCE_API_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/
|
iniset $GLANCE_API_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/
|
||||||
|
iniset $GLANCE_API_CONF DEFAULT registry_host $GLANCE_SERVICE_HOST
|
||||||
|
|
||||||
iniset $GLANCE_API_CONF DEFAULT workers "$API_WORKERS"
|
iniset $GLANCE_API_CONF DEFAULT workers "$API_WORKERS"
|
||||||
|
|
||||||
@ -202,6 +206,7 @@ function configure_glance {
|
|||||||
iniset $GLANCE_CACHE_CONF DEFAULT admin_user glance
|
iniset $GLANCE_CACHE_CONF DEFAULT admin_user glance
|
||||||
iniuncomment $GLANCE_CACHE_CONF DEFAULT auth_password
|
iniuncomment $GLANCE_CACHE_CONF DEFAULT auth_password
|
||||||
iniset $GLANCE_CACHE_CONF DEFAULT admin_password $SERVICE_PASSWORD
|
iniset $GLANCE_CACHE_CONF DEFAULT admin_password $SERVICE_PASSWORD
|
||||||
|
iniset $GLANCE_CACHE_CONF DEFAULT registry_host $GLANCE_SERVICE_HOST
|
||||||
|
|
||||||
# Store specific confs
|
# Store specific confs
|
||||||
iniset $GLANCE_CACHE_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/
|
iniset $GLANCE_CACHE_CONF glance_store filesystem_store_datadir $GLANCE_IMAGE_DIR/
|
||||||
@ -223,6 +228,7 @@ function configure_glance {
|
|||||||
if is_service_enabled g-search; then
|
if is_service_enabled g-search; then
|
||||||
cp $GLANCE_DIR/etc/glance-search.conf $GLANCE_SEARCH_CONF
|
cp $GLANCE_DIR/etc/glance-search.conf $GLANCE_SEARCH_CONF
|
||||||
iniset $GLANCE_SEARCH_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
iniset $GLANCE_SEARCH_CONF DEFAULT debug $ENABLE_DEBUG_LOG_LEVEL
|
||||||
|
iniset $GLANCE_SEARCH_CONF DEFAULT bind_host $GLANCE_SERVICE_LISTEN_ADDRESS
|
||||||
inicomment $GLANCE_SEARCH_CONF DEFAULT log_file
|
inicomment $GLANCE_SEARCH_CONF DEFAULT log_file
|
||||||
iniset $GLANCE_SEARCH_CONF DEFAULT use_syslog $SYSLOG
|
iniset $GLANCE_SEARCH_CONF DEFAULT use_syslog $SYSLOG
|
||||||
iniset $GLANCE_SEARCH_CONF DEFAULT sql_connection $dburl
|
iniset $GLANCE_SEARCH_CONF DEFAULT sql_connection $dburl
|
||||||
|
@ -138,6 +138,8 @@ Q_PORT_INT=${Q_PORT_INT:-19696}
|
|||||||
Q_HOST=${Q_HOST:-$SERVICE_HOST}
|
Q_HOST=${Q_HOST:-$SERVICE_HOST}
|
||||||
# Default protocol
|
# Default protocol
|
||||||
Q_PROTOCOL=${Q_PROTOCOL:-$SERVICE_PROTOCOL}
|
Q_PROTOCOL=${Q_PROTOCOL:-$SERVICE_PROTOCOL}
|
||||||
|
# Default listen address
|
||||||
|
Q_LISTEN_ADDRESS=${Q_LISTEN_ADDRESS:-$SERVICE_LISTEN_ADDRESS}
|
||||||
# Default admin username
|
# Default admin username
|
||||||
Q_ADMIN_USERNAME=${Q_ADMIN_USERNAME:-neutron}
|
Q_ADMIN_USERNAME=${Q_ADMIN_USERNAME:-neutron}
|
||||||
# Default auth strategy
|
# Default auth strategy
|
||||||
@ -871,6 +873,7 @@ function _configure_neutron_common {
|
|||||||
iniset $NEUTRON_CONF database connection `database_connection_url $Q_DB_NAME`
|
iniset $NEUTRON_CONF database connection `database_connection_url $Q_DB_NAME`
|
||||||
iniset $NEUTRON_CONF DEFAULT state_path $DATA_DIR/neutron
|
iniset $NEUTRON_CONF DEFAULT state_path $DATA_DIR/neutron
|
||||||
iniset $NEUTRON_CONF DEFAULT use_syslog $SYSLOG
|
iniset $NEUTRON_CONF DEFAULT use_syslog $SYSLOG
|
||||||
|
iniset $NEUTRON_CONF DEFAULT bind_host $Q_LISTEN_ADDRESS
|
||||||
# If addition config files are set, make sure their path name is set as well
|
# If addition config files are set, make sure their path name is set as well
|
||||||
if [[ ${#Q_PLUGIN_EXTRA_CONF_FILES[@]} > 0 && $Q_PLUGIN_EXTRA_CONF_PATH == '' ]]; then
|
if [[ ${#Q_PLUGIN_EXTRA_CONF_FILES[@]} > 0 && $Q_PLUGIN_EXTRA_CONF_PATH == '' ]]; then
|
||||||
die $LINENO "Neutron additional plugin config not set.. exiting"
|
die $LINENO "Neutron additional plugin config not set.. exiting"
|
||||||
|
25
lib/nova
25
lib/nova
@ -85,6 +85,8 @@ NOVA_SERVICE_HOST=${NOVA_SERVICE_HOST:-$SERVICE_HOST}
|
|||||||
NOVA_SERVICE_PORT=${NOVA_SERVICE_PORT:-8774}
|
NOVA_SERVICE_PORT=${NOVA_SERVICE_PORT:-8774}
|
||||||
NOVA_SERVICE_PORT_INT=${NOVA_SERVICE_PORT_INT:-18774}
|
NOVA_SERVICE_PORT_INT=${NOVA_SERVICE_PORT_INT:-18774}
|
||||||
NOVA_SERVICE_PROTOCOL=${NOVA_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
|
NOVA_SERVICE_PROTOCOL=${NOVA_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
|
||||||
|
NOVA_SERVICE_LOCAL_HOST=${NOVA_SERVICE_LOCAL_HOST:-$SERVICE_LOCAL_HOST}
|
||||||
|
NOVA_SERVICE_LISTEN_ADDRESS=${NOVA_SERVICE_LISTEN_ADDRESS:-$SERVICE_LISTEN_ADDRESS}
|
||||||
EC2_SERVICE_PORT=${EC2_SERVICE_PORT:-8773}
|
EC2_SERVICE_PORT=${EC2_SERVICE_PORT:-8773}
|
||||||
EC2_SERVICE_PORT_INT=${EC2_SERVICE_PORT_INT:-18773}
|
EC2_SERVICE_PORT_INT=${EC2_SERVICE_PORT_INT:-18773}
|
||||||
|
|
||||||
@ -476,11 +478,20 @@ function create_nova_conf {
|
|||||||
iniset $NOVA_CONF DEFAULT default_floating_pool "$PUBLIC_NETWORK_NAME"
|
iniset $NOVA_CONF DEFAULT default_floating_pool "$PUBLIC_NETWORK_NAME"
|
||||||
iniset $NOVA_CONF DEFAULT s3_host "$SERVICE_HOST"
|
iniset $NOVA_CONF DEFAULT s3_host "$SERVICE_HOST"
|
||||||
iniset $NOVA_CONF DEFAULT s3_port "$S3_SERVICE_PORT"
|
iniset $NOVA_CONF DEFAULT s3_port "$S3_SERVICE_PORT"
|
||||||
iniset $NOVA_CONF DEFAULT my_ip "$HOST_IP"
|
if [[ $SERVICE_IP_VERSION == 6 ]]; then
|
||||||
|
iniset $NOVA_CONF DEFAULT my_ip "$HOST_IPV6"
|
||||||
|
iniset $NOVA_CONF DEFAULT use_ipv6 "True"
|
||||||
|
else
|
||||||
|
iniset $NOVA_CONF DEFAULT my_ip "$HOST_IP"
|
||||||
|
fi
|
||||||
iniset $NOVA_CONF database connection `database_connection_url nova`
|
iniset $NOVA_CONF database connection `database_connection_url nova`
|
||||||
iniset $NOVA_CONF api_database connection `database_connection_url nova_api`
|
iniset $NOVA_CONF api_database connection `database_connection_url nova_api`
|
||||||
iniset $NOVA_CONF DEFAULT instance_name_template "${INSTANCE_NAME_PREFIX}%08x"
|
iniset $NOVA_CONF DEFAULT instance_name_template "${INSTANCE_NAME_PREFIX}%08x"
|
||||||
iniset $NOVA_CONF osapi_v3 enabled "True"
|
iniset $NOVA_CONF osapi_v3 enabled "True"
|
||||||
|
iniset $NOVA_CONF DEFAULT osapi_compute_listen "$NOVA_SERVICE_LISTEN_ADDRESS"
|
||||||
|
iniset $NOVA_CONF DEFAULT ec2_listen "$NOVA_SERVICE_LISTEN_ADDRESS"
|
||||||
|
iniset $NOVA_CONF DEFAULT metadata_listen "$NOVA_SERVICE_LISTEN_ADDRESS"
|
||||||
|
iniset $NOVA_CONF DEFAULT s3_listen "$NOVA_SERVICE_LISTEN_ADDRESS"
|
||||||
|
|
||||||
if is_fedora || is_suse; then
|
if is_fedora || is_suse; then
|
||||||
# nova defaults to /usr/local/bin, but fedora and suse pip like to
|
# nova defaults to /usr/local/bin, but fedora and suse pip like to
|
||||||
@ -560,11 +571,13 @@ function create_nova_conf {
|
|||||||
if is_service_enabled n-novnc || is_service_enabled n-xvnc || [ "$NOVA_VNC_ENABLED" != False ]; then
|
if is_service_enabled n-novnc || is_service_enabled n-xvnc || [ "$NOVA_VNC_ENABLED" != False ]; then
|
||||||
# Address on which instance vncservers will listen on compute hosts.
|
# Address on which instance vncservers will listen on compute hosts.
|
||||||
# For multi-host, this should be the management ip of the compute host.
|
# For multi-host, this should be the management ip of the compute host.
|
||||||
VNCSERVER_LISTEN=${VNCSERVER_LISTEN=127.0.0.1}
|
VNCSERVER_LISTEN=${VNCSERVER_LISTEN=$NOVA_SERVICE_LOCAL_HOST}
|
||||||
VNCSERVER_PROXYCLIENT_ADDRESS=${VNCSERVER_PROXYCLIENT_ADDRESS=127.0.0.1}
|
VNCSERVER_PROXYCLIENT_ADDRESS=${VNCSERVER_PROXYCLIENT_ADDRESS=$NOVA_SERVICE_LOCAL_HOST}
|
||||||
iniset $NOVA_CONF DEFAULT vnc_enabled true
|
iniset $NOVA_CONF DEFAULT vnc_enabled true
|
||||||
iniset $NOVA_CONF DEFAULT vncserver_listen "$VNCSERVER_LISTEN"
|
iniset $NOVA_CONF DEFAULT vncserver_listen "$VNCSERVER_LISTEN"
|
||||||
iniset $NOVA_CONF DEFAULT vncserver_proxyclient_address "$VNCSERVER_PROXYCLIENT_ADDRESS"
|
iniset $NOVA_CONF DEFAULT vncserver_proxyclient_address "$VNCSERVER_PROXYCLIENT_ADDRESS"
|
||||||
|
iniset $NOVA_CONF DEFAULT novncproxy_host "$NOVA_SERVICE_LISTEN_ADDRESS"
|
||||||
|
iniset $NOVA_CONF DEFAULT xvpvncproxy_host "$NOVA_SERVICE_LISTEN_ADDRESS"
|
||||||
else
|
else
|
||||||
iniset $NOVA_CONF DEFAULT vnc_enabled false
|
iniset $NOVA_CONF DEFAULT vnc_enabled false
|
||||||
fi
|
fi
|
||||||
@ -572,11 +585,12 @@ function create_nova_conf {
|
|||||||
if is_service_enabled n-spice; then
|
if is_service_enabled n-spice; then
|
||||||
# Address on which instance spiceservers will listen on compute hosts.
|
# Address on which instance spiceservers will listen on compute hosts.
|
||||||
# For multi-host, this should be the management ip of the compute host.
|
# For multi-host, this should be the management ip of the compute host.
|
||||||
SPICESERVER_PROXYCLIENT_ADDRESS=${SPICESERVER_PROXYCLIENT_ADDRESS=127.0.0.1}
|
SPICESERVER_PROXYCLIENT_ADDRESS=${SPICESERVER_PROXYCLIENT_ADDRESS=$NOVA_SERVICE_LOCAL_HOST}
|
||||||
SPICESERVER_LISTEN=${SPICESERVER_LISTEN=127.0.0.1}
|
SPICESERVER_LISTEN=${SPICESERVER_LISTEN=$NOVA_SERVICE_LOCAL_HOST}
|
||||||
iniset $NOVA_CONF spice enabled true
|
iniset $NOVA_CONF spice enabled true
|
||||||
iniset $NOVA_CONF spice server_listen "$SPICESERVER_LISTEN"
|
iniset $NOVA_CONF spice server_listen "$SPICESERVER_LISTEN"
|
||||||
iniset $NOVA_CONF spice server_proxyclient_address "$SPICESERVER_PROXYCLIENT_ADDRESS"
|
iniset $NOVA_CONF spice server_proxyclient_address "$SPICESERVER_PROXYCLIENT_ADDRESS"
|
||||||
|
iniset $NOVA_CONF spice html5proxy_host "$NOVA_SERVICE_LISTEN_ADDRESS"
|
||||||
else
|
else
|
||||||
iniset $NOVA_CONF spice enabled false
|
iniset $NOVA_CONF spice enabled false
|
||||||
fi
|
fi
|
||||||
@ -616,6 +630,7 @@ function create_nova_conf {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if is_service_enabled n-sproxy; then
|
if is_service_enabled n-sproxy; then
|
||||||
|
iniset $NOVA_CONF serial_console serialproxy_host "$NOVA_SERVICE_LISTEN_ADDRESS"
|
||||||
iniset $NOVA_CONF serial_console enabled True
|
iniset $NOVA_CONF serial_console enabled True
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,7 @@ SWIFT3_DIR=$DEST/swift3
|
|||||||
|
|
||||||
SWIFT_SERVICE_PROTOCOL=${SWIFT_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
|
SWIFT_SERVICE_PROTOCOL=${SWIFT_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
|
||||||
SWIFT_DEFAULT_BIND_PORT_INT=${SWIFT_DEFAULT_BIND_PORT_INT:-8081}
|
SWIFT_DEFAULT_BIND_PORT_INT=${SWIFT_DEFAULT_BIND_PORT_INT:-8081}
|
||||||
|
SWIFT_SERVICE_LOCAL_HOST=${SWIFT_SERVICE_LOCAL_HOST:-$SERVICE_LOCAL_HOST}
|
||||||
|
|
||||||
# TODO: add logging to different location.
|
# TODO: add logging to different location.
|
||||||
|
|
||||||
@ -668,9 +669,9 @@ function init_swift {
|
|||||||
swift-ring-builder account.builder create ${SWIFT_PARTITION_POWER_SIZE} ${SWIFT_REPLICAS} 1
|
swift-ring-builder account.builder create ${SWIFT_PARTITION_POWER_SIZE} ${SWIFT_REPLICAS} 1
|
||||||
|
|
||||||
for node_number in ${SWIFT_REPLICAS_SEQ}; do
|
for node_number in ${SWIFT_REPLICAS_SEQ}; do
|
||||||
swift-ring-builder object.builder add z${node_number}-127.0.0.1:$(( OBJECT_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
|
swift-ring-builder object.builder add z${node_number}-${SWIFT_SERVICE_LOCAL_HOST}:$(( OBJECT_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
|
||||||
swift-ring-builder container.builder add z${node_number}-127.0.0.1:$(( CONTAINER_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
|
swift-ring-builder container.builder add z${node_number}-${SWIFT_SERVICE_LOCAL_HOST}:$(( CONTAINER_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
|
||||||
swift-ring-builder account.builder add z${node_number}-127.0.0.1:$(( ACCOUNT_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
|
swift-ring-builder account.builder add z${node_number}-${SWIFT_SERVICE_LOCAL_HOST}:$(( ACCOUNT_PORT_BASE + 10 * (node_number - 1) ))/sdb1 1
|
||||||
done
|
done
|
||||||
swift-ring-builder object.builder rebalance
|
swift-ring-builder object.builder rebalance
|
||||||
swift-ring-builder container.builder rebalance
|
swift-ring-builder container.builder rebalance
|
||||||
|
@ -32,14 +32,15 @@ MYSQL_PASSWORD=stackdb
|
|||||||
RABBIT_PASSWORD=stackqueue
|
RABBIT_PASSWORD=stackqueue
|
||||||
SERVICE_PASSWORD=$ADMIN_PASSWORD
|
SERVICE_PASSWORD=$ADMIN_PASSWORD
|
||||||
|
|
||||||
# ``HOST_IP`` should be set manually for best results if the NIC configuration
|
# ``HOST_IP`` and ``HOST_IPV6`` should be set manually for best results if
|
||||||
# of the host is unusual, i.e. ``eth1`` has the default route but ``eth0`` is the
|
# the NIC configuration of the host is unusual, i.e. ``eth1`` has the default
|
||||||
# public interface. It is auto-detected in ``stack.sh`` but often is indeterminate
|
# route but ``eth0`` is the public interface. They are auto-detected in
|
||||||
# on later runs due to the IP moving from an Ethernet interface to a bridge on
|
# ``stack.sh`` but often is indeterminate on later runs due to the IP moving
|
||||||
# the host. Setting it here also makes it available for ``openrc`` to include
|
# from an Ethernet interface to a bridge on the host. Setting it here also
|
||||||
# when setting ``OS_AUTH_URL``.
|
# makes it available for ``openrc`` to include when setting ``OS_AUTH_URL``.
|
||||||
# ``HOST_IP`` is not set by default.
|
# Neither is set by default.
|
||||||
#HOST_IP=w.x.y.z
|
#HOST_IP=w.x.y.z
|
||||||
|
#HOST_IPV6=2001:db8::7
|
||||||
|
|
||||||
|
|
||||||
# Logging
|
# Logging
|
||||||
|
5
stack.sh
5
stack.sh
@ -1403,7 +1403,10 @@ fi
|
|||||||
echo ""
|
echo ""
|
||||||
echo ""
|
echo ""
|
||||||
echo ""
|
echo ""
|
||||||
echo "This is your host ip: $HOST_IP"
|
echo "This is your host IP address: $HOST_IP"
|
||||||
|
if [ "$HOST_IPV6" != "" ]; then
|
||||||
|
echo "This is your host IPv6 address: $HOST_IPV6"
|
||||||
|
fi
|
||||||
|
|
||||||
# If you installed Horizon on this server you should be able
|
# If you installed Horizon on this server you should be able
|
||||||
# to access the site using your browser.
|
# to access the site using your browser.
|
||||||
|
46
stackrc
46
stackrc
@ -669,14 +669,54 @@ FIXED_RANGE=${FIXED_RANGE:-10.0.0.0/24}
|
|||||||
FIXED_NETWORK_SIZE=${FIXED_NETWORK_SIZE:-256}
|
FIXED_NETWORK_SIZE=${FIXED_NETWORK_SIZE:-256}
|
||||||
HOST_IP_IFACE=${HOST_IP_IFACE:-}
|
HOST_IP_IFACE=${HOST_IP_IFACE:-}
|
||||||
HOST_IP=${HOST_IP:-}
|
HOST_IP=${HOST_IP:-}
|
||||||
|
HOST_IPV6=${HOST_IPV6:-}
|
||||||
|
|
||||||
HOST_IP=$(get_default_host_ip $FIXED_RANGE $FLOATING_RANGE "$HOST_IP_IFACE" "$HOST_IP")
|
HOST_IP=$(get_default_host_ip "$FIXED_RANGE" "$FLOATING_RANGE" "$HOST_IP_IFACE" "$HOST_IP" "inet")
|
||||||
if [ "$HOST_IP" == "" ]; then
|
if [ "$HOST_IP" == "" ]; then
|
||||||
die $LINENO "Could not determine host ip address. See local.conf for suggestions on setting HOST_IP."
|
die $LINENO "Could not determine host ip address. See local.conf for suggestions on setting HOST_IP."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Allow the use of an alternate hostname (such as localhost/127.0.0.1) for service endpoints.
|
HOST_IPV6=$(get_default_host_ip "" "" "$HOST_IP_IFACE" "$HOST_IPV6" "inet6")
|
||||||
SERVICE_HOST=${SERVICE_HOST:-$HOST_IP}
|
|
||||||
|
# SERVICE IP version
|
||||||
|
# This is the IP version that services should be listening on, as well
|
||||||
|
# as using to register their endpoints with keystone.
|
||||||
|
SERVICE_IP_VERSION=${SERVICE_IP_VERSION:-4}
|
||||||
|
|
||||||
|
# Validate SERVICE_IP_VERSION
|
||||||
|
# It would be nice to support "4+6" here as well, but that will require
|
||||||
|
# multiple calls into keystone to register endpoints, so for now let's
|
||||||
|
# just support one or the other.
|
||||||
|
if [[ $SERVICE_IP_VERSION != "4" ]] && [[ $SERVICE_IP_VERSION != "6" ]]; then
|
||||||
|
die $LINENO "SERVICE_IP_VERSION must be either 4 or 6"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$SERVICE_IP_VERSION" == 4 ]]; then
|
||||||
|
DEF_SERVICE_HOST=$HOST_IP
|
||||||
|
DEF_SERVICE_LOCAL_HOST=127.0.0.1
|
||||||
|
DEF_SERVICE_LISTEN_ADDRESS=0.0.0.0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$SERVICE_IP_VERSION" == 6 ]]; then
|
||||||
|
if [ "$HOST_IPV6" == "" ]; then
|
||||||
|
die $LINENO "Could not determine host IPv6 address. See local.conf for suggestions on setting HOST_IPV6."
|
||||||
|
fi
|
||||||
|
|
||||||
|
DEF_SERVICE_HOST=[$HOST_IPV6]
|
||||||
|
DEF_SERVICE_LOCAL_HOST=::1
|
||||||
|
DEF_SERVICE_LISTEN_ADDRESS=::
|
||||||
|
fi
|
||||||
|
|
||||||
|
# This is either 0.0.0.0 for IPv4 or :: for IPv6
|
||||||
|
SERVICE_LISTEN_ADDRESS=${SERVICE_LISTEN_ADDRESS:-${DEF_SERVICE_LISTEN_ADDRESS}}
|
||||||
|
|
||||||
|
# Allow the use of an alternate hostname (such as localhost/127.0.0.1) for
|
||||||
|
# service endpoints. Default is dependent on SERVICE_IP_VERSION above.
|
||||||
|
SERVICE_HOST=${SERVICE_HOST:-${DEF_SERVICE_HOST}}
|
||||||
|
# This is either 127.0.0.1 for IPv4 or ::1 for IPv6
|
||||||
|
SERVICE_LOCAL_HOST=${SERVICE_LOCAL_HOST:-${DEF_SERVICE_LOCAL_HOST}}
|
||||||
|
|
||||||
|
REGION_NAME=${REGION_NAME:-RegionOne}
|
||||||
|
|
||||||
# Configure services to use syslog instead of writing to individual log files
|
# Configure services to use syslog instead of writing to individual log files
|
||||||
SYSLOG=$(trueorfalse False SYSLOG)
|
SYSLOG=$(trueorfalse False SYSLOG)
|
||||||
|
Loading…
Reference in New Issue
Block a user