Michal Stachowski 214ac7e608 RabbitMQ container with HA support
This is new RabbitMQ container with support for HA. It's next step for
provide HA support in Kolla project. RabbitMQ is supporting now
active/active model and It's ready for active/passive model.

Change-Id: I2eb6c65f6268ee96d377e72cf880a01c8042559e
Implements: blueprint rabbitmq-ha
2015-06-24 14:10:10 +02:00

379 lines
13 KiB
Bash
Executable File

#!/bin/bash
#
# This script generates a minimal set of environment variables to allow
# the openstack containers to operate. It is creating a configuration
# suitable for an all-in-one installation of openstack.
#
# It also creates a suitable 'openrc' for use with the installed system.
# Move to top level directory
REAL_PATH=$(python -c "import os,sys;print os.path.realpath('$0')")
cd "$(dirname "$REAL_PATH")/.."
MY_IP=$(ip route get $(ip route | awk '$1 == "default" {print $3}') |
awk '$4 == "src" {print $5}')
MY_DEV=$(ip route get $(ip route | awk '$1 == "default" {print $3}') |
awk '$4 == "src" {print $3}')
echo MY_IP=$MY_IP
echo MY_DEV=$MY_DEV
# Admin user password
ADMIN_USER_PASSWORD=steakfordinner
# Database
HOST_IP=$MY_IP
INIT_CINDER_DB=true
INIT_DESIGNATE_DB=true
INIT_GLANCE_DB=true
INIT_HEAT_DB=true
INIT_KEYSTONE_DB=true
INIT_NOVA_DB=true
MARIADB_ROOT_PASSWORD=kolla
PASSWORD=12345
# Galera
DB_CLUSTER_BIND_ADDRESS=0.0.0.0
DB_CLUSTER_INIT_DB=false
DB_CLUSTER_NAME=kollacluster
DB_CLUSTER_NODES=
DB_CLUSTER_WSREP_METHOD=mysqldump
# Host
ADMIN_TENANT_NAME=admin
PUBLIC_IP=$HOST_IP
# Logging
DEBUG_LOGGING=false
VERBOSE_LOGGING=true
NOVA_LOG_DIR=
NEUTRON_LOG_DIR=/var/log/neutron
NOVA_API_LOG_FILE=
NOVA_CONDUCTOR_LOG_FILE=
NOVA_SCHEDULER_LOG_FILE=
NOVA_COMPUTE_LOG_FILE=
NOVA_CONSOLEAUTH_LOG_FILE=
NOVA_NOVNCPROXY_LOG_FILE=
NEUTRON_SERVER_LOG_FILE=
NEUTRON_L3_AGENT_LOG_FILE=
NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE=
NEUTRON_METADATA_AGENT_LOG_FILE=
CINDER_LOG_DIR=
CINDER_API_LOG_FILE=
CINDER_VOLUME_LOG_FILE=
CINDER_BACKUP_LOG_FILE=
CINDER_SCHEDULER_LOG_FILE=
# RabbitMQ
RABBITMQ_SERVICE_HOST=$HOST_IP
RABBITMQ_CLUSTER_NODES=
RABBITMQ_CLUSTER_COOKIE=
RABBIT_USER=guest
RABBIT_PASSWORD=guest
# Networking Options are nova or neutron
NETWORK_MANAGER=neutron
# Keystone
KEYSTONE_ADMIN_TOKEN=$PASSWORD
KEYSTONE_DB_PASSWORD=kolla
KEYSTONE_ADMIN_PASSWORD=$PASSWORD
KEYSTONE_PUBLIC_SERVICE_HOST=$HOST_IP
KEYSTONE_ADMIN_SERVICE_HOST=$HOST_IP
KEYSTONE_AUTH_PROTOCOL=http
# Glance
GLANCE_DB_NAME=glance
GLANCE_DB_USER=glance
GLANCE_DB_PASSWORD=kolla
GLANCE_KEYSTONE_USER=glance
GLANCE_KEYSTONE_PASSWORD=glance
GLANCE_API_SERVICE_HOST=$HOST_IP
GLANCE_REGISTRY_SERVICE_HOST=$HOST_IP
# Nova
NOVA_DB_PASSWORD=nova
NOVA_DB_NAME=nova
NOVA_DB_USER=nova
NOVA_KEYSTONE_USER=nova
NOVA_KEYSTONE_PASSWORD=nova
NOVA_API_SERVICE_HOST=$HOST_IP
NOVA_METADATA_API_SERVICE_HOST=$HOST_IP
NOVA_EC2_SERVICE_HOST=$HOST_IP
NOVA_PUBLIC_INTERFACE=$MY_DEV
NOVA_FLAT_INTERFACE=eth1
ENABLED_APIS=ec2,osapi_compute,metadata
METADATA_HOST=$HOST_IP
NOVA_NOVNC_PROXY_PORT=6080
NOVA_VNCSERVER_LISTEN_ADDRESS=$HOST_IP
NOVA_VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP
NOVA_NOVNC_PROXY_SERVICE_HOST=0.0.0.0
NOVA_NOVNC_BASE_ADDRESS=${PUBLIC_IP}
# Neutron
NEUTRON_DB_NAME=neutron
NEUTRON_DB_USER=neutron
NEUTRON_DB_PASSWORD=password
NEUTRON_KEYSTONE_USER=neutron
NEUTRON_KEYSTONE_PASSWORD=neutron
NEUTRON_SERVER_SERVICE_HOST=$HOST_IP
NEUTRON_API_PASTE_CONFIG=/usr/share/neutron/api-paste.ini
# Neutron ML2 Plugin
TYPE_DRIVERS=flat,vxlan
TENANT_NETWORK_TYPES=flat,vxlan
MECHANISM_DRIVERS=linuxbridge,l2population
# Neutron Linux Bridge Agent
NEUTRON_FLAT_NETWORK_NAME=physnet1
NEUTRON_FLAT_NETWORK_INTERFACE=eth1
# Nova/Neutron
NEUTRON_SHARED_SECRET=sharedsecret
# Heat
HEAT_DB_NAME=heat
HEAT_DB_PASSWORD=kolla
HEAT_KEYSTONE_USER=heat
HEAT_KEYSTONE_PASSWORD=heat
HEAT_CFN_KEYSTONE_USER=heat-cfn
HEAT_CFN_KEYSTONE_PASSWORD=heat
HEAT_API_SERVICE_HOST=$HOST_IP
HEAT_API_CFN_SERVICE_HOST=$HOST_IP
HEAT_API_CFN_SERVICE_PORT=8000
HEAT_API_CFN_URL_HOST=$HOST_IP
# Magnum
MAGNUM_DB_NAME=magnum
MAGNUM_DB_PASSWORD=kolla
MAGNUM_KEYSTONE_PASSWORD=magnum
MAGNUM_API_SERVICE_HOST=$HOST_IP
MAGNUM_API_SERVICE_PORT=9511
# Designate
DESIGNATE_DB_NAME=designate
DESIGNATE_DB_USER=designate
DESIGNATE_DB_PASSWORD=designatedns
DESIGNATE_KEYSTONE_USER=designate
DESIGNATE_KEYSTONE_PASSWORD=designate
DESIGNATE_BIND9_RNDC_KEY=$(openssl rand -base64 24)
DESIGNATE_MASTERNS=$HOST_IP
DESIGNATE_BACKEND=bind9
DESIGNATE_SLAVENS=$HOST_IP
DESIGNATE_API_SERVICE_HOST=$HOST_IP
DESIGNATE_API_SERVICE_PORT=9001
DESIGNATE_MDNS_PORT=5354
DESIGNATE_DNS_PORT=53
DESIGNATE_POOLMAN_POOLID=$(uuidgen)
DESIGNATE_POOLMAN_TARGETS=$(uuidgen)
DESIGNATE_POOLMAN_NSS=$(uuidgen)
DESIGNATE_ALLOW_RECURSION=true
DESIGNATE_DEFAULT_POOL_NS_RECORD=ns1.example.org.
DESIGNATE_SINK_NOVA_DOMAIN_NAME=nova.example.org.
DESIGNATE_SINK_NEUTRON_DOMAIN_NAME=neutron.example.org.
DESIGNATE_SINK_NOVA_FORMATS=("%(octet0)s-%(octet1)s-%(octet2)s-%(octet3)s.%(domain)s" "%(hostname)s.%(domain)s")
DESIGNATE_SINK_NEUTRON_FORMATS=("%(octet0)s-%(octet1)s-%(octet2)s-%(octet3)s.%(domain)s" "%(hostname)s.%(domain)s")
# Cinder API
CINDER_API_SERVICE_HOST=$HOST_IP
CINDER_API_SERVICE_PORT=8776
CINDER_API_SERVICE_LISTEN=$HOST_IP
CINDER_KEYSTONE_USER=cinder
CINDER_KEYSTONE_PASSWORD=password
CINDER_ADMIN_PASSWORD=password
# Cinder Scheduler
CINDER_DB_NAME=cinder
CINDER_DB_USER=cinder
CINDER_DB_PASSWORD=password
# Cinder Backup
CINDER_BACKUP_MANAGER=cinder.backup.manager.BackupManager
CINDER_BACKUP_API_CLASS=cinder.backup.api.API
CINDER_BACKUP_NAME_TEMPLATE=backup-%s
CINDER_BACKUP_DRIVER=cinder.backup.drivers.swift
# Cinder Volume
ISCSI_HELPER=lioadm
ISCSI_IP_ADDRESS=$HOST_IP
CINDER_LVM_LO_VOLUME_SIZE=4G
CINDER_VOLUME_API_LISTEN=$HOST_IP
CINDER_VOLUME_GROUP=cinder-volumes
CINDER_VOLUME_BACKEND_NAME=LVM_iSCSI57
CINDER_VOLUME_DRIVER=cinder.volume.drivers.lvm.LVMISCSIDriver
CINDER_ENABLED_BACKEND=lvm57
# Keepalived
# Here we define pairs hostname:priority. Priorities have to be unique
KEEPALIVED_HOST_PRIORITIES=host1:100,host2:99
cat > ./openrc <<EOF
export OS_AUTH_URL="http://${KEYSTONE_PUBLIC_SERVICE_HOST}:5000/v2.0"
export OS_USERNAME=$ADMIN_TENANT_NAME
export OS_PASSWORD=$ADMIN_USER_PASSWORD
export OS_TENANT_NAME=$ADMIN_TENANT_NAME
EOF
cat > ./compose/openstack.env <<EOF
DEBUG_LOGGING=$DEBUG_LOGGING
VERBOSE_LOGGING=$VERBOSE_LOGGING
NOVA_LOG_DIR=$NOVA_LOG_DIR
NEUTRON_LOG_DIR=$NEUTRON_LOG_DIR
NOVA_API_LOG_FILE=$NOVA_API_LOG_FILE
NOVA_CONDUCTOR_LOG_FILE=$NOVA_CONDUCTOR_LOG_FILE
NOVA_SCHEDULER_LOG_FILE=$NOVA_SCHEDULER_LOG_FILE
NOVA_COMPUTE_LOG_FILE=$NOVA_COMPUTE_LOG_FILE
NOVA_CONSOLEAUTH_LOG_FILE=$NOVA_CONSOLEAUTH_LOG_FILE
NOVA_NOVNCPROXY_LOG_FILE=$NOVA_NOVNCPROXY_LOG_FILE
NOVA_VNCSERVER_PROXYCLIENT_ADDRESS=$NOVA_VNCSERVER_PROXYCLIENT_ADDRESS
NOVA_VNCSERVER_LISTEN_ADDRESS=$NOVA_VNCSERVER_LISTEN_ADDRESS
NEUTRON_SERVER_LOG_FILE=$NEUTRON_SERVER_LOG_FILE
NEUTRON_L3_AGENT_LOG_FILE=$NEUTRON_L3_AGENT_LOG_FILE
NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE=$NEUTRON_LINUXBRIDGE_AGENT_LOG_FILE
NEUTRON_METADATA_AGENT_LOG_FILE=$NEUTRON_METADATA_AGENT_LOG_FILE
TYPE_DRIVERS=$TYPE_DRIVERS
TENANT_NETWORK_TYPES=$TENANT_NETWORK_TYPES
MECHANISM_DRIVERS=$MECHANISM_DRIVERS
ADMIN_USER_PASSWORD=$ADMIN_USER_PASSWORD
ADMIN_TENANT_NAME=$ADMIN_TENANT_NAME
DB_ROOT_PASSWORD=$MARIADB_ROOT_PASSWORD
FLAT_INTERFACE=$NOVA_FLAT_INTERFACE
GLANCE_API_SERVICE_HOST=$GLANCE_API_SERVICE_HOST
MAGNUM_API_SERVICE_HOST=$MAGNUM_API_SERVICE_PORT
GLANCE_DB_NAME=$GLANCE_DB_NAME
GLANCE_DB_PASSWORD=$GLANCE_DB_PASSWORD
GLANCE_DB_USER=$GLANCE_DB_USER
GLANCE_KEYSTONE_PASSWORD=$GLANCE_KEYSTONE_PASSWORD
GLANCE_KEYSTONE_USER=$GLANCE_KEYSTONE_USER
GLANCE_REGISTRY_SERVICE_HOST=$GLANCE_REGISTRY_SERVICE_HOST
KEYSTONE_ADMIN_PASSWORD=$KEYSTONE_ADMIN_PASSWORD
KEYSTONE_ADMIN_SERVICE_HOST=$KEYSTONE_ADMIN_SERVICE_HOST
KEYSTONE_ADMIN_SERVICE_PORT=35357
KEYSTONE_ADMIN_TOKEN=$KEYSTONE_ADMIN_TOKEN
KEYSTONE_AUTH_PROTOCOL=$KEYSTONE_AUTH_PROTOCOL
KEYSTONE_DB_PASSWORD=$KEYSTONE_DB_PASSWORD
KEYSTONE_PUBLIC_SERVICE_HOST=$KEYSTONE_PUBLIC_SERVICE_HOST
MARIADB_SERVICE_HOST=$HOST_IP
MARIADB_ROOT_PASSWORD=$MARIADB_ROOT_PASSWORD
NETWORK_MANAGER=$NETWORK_MANAGER
NOVA_API_SERVICE_HOST=$NOVA_API_SERVICE_HOST
NOVA_METADATA_API_SERVICE_HOST=$NOVA_METADATA_API_SERVICE_HOST
ENABLED_APIS=$ENABLED_APIS
METADATA_HOST=$METADATA_HOST
NOVA_DB_NAME=$NOVA_DB_NAME
NOVA_DB_PASSWORD=$NOVA_DB_PASSWORD
NOVA_DB_USER=$NOVA_DB_USER
NOVA_EC2_API_SERVICE_HOST=$NOVA_EC2_SERVICE_HOST
NOVA_EC2_SERVICE_HOST=$NOVA_EC2_SERVICE_HOST
NOVA_KEYSTONE_PASSWORD=$NOVA_KEYSTONE_PASSWORD
NOVA_KEYSTONE_USER=$NOVA_KEYSTONE_USER
NOVA_NOVNC_PROXY_SERVICE_HOST=$NOVA_NOVNC_PROXY_SERVICE_HOST
NOVA_NOVNC_PROXY_PORT=$NOVA_NOVNC_PROXY_PORT
NOVA_NOVNC_BASE_ADDRESS=${NOVA_NOVNC_BASE_ADDRESS}
NEUTRON_SHARED_SECRET=$NEUTRON_SHARED_SECRET
NEUTRON_DB_NAME=$NEUTRON_DB_NAME
NEUTRON_DB_USER=$NEUTRON_DB_USER
NEUTRON_DB_PASSWORD=$NEUTRON_DB_PASSWORD
NEUTRON_KEYSTONE_USER=$NEUTRON_KEYSTONE_USER
NEUTRON_KEYSTONE_PASSWORD=$NEUTRON_KEYSTONE_PASSWORD
NEUTRON_SERVER_SERVICE_HOST=$NEUTRON_SERVER_SERVICE_HOST
NEUTRON_API_PASTE_CONFIG=$NEUTRON_API_PASTE_CONFIG
NEUTRON_FLAT_NETWORK_NAME=$NEUTRON_FLAT_NETWORK_NAME
NEUTRON_FLAT_NETWORK_INTERFACE=$NEUTRON_FLAT_NETWORK_INTERFACE
HEAT_DB_NAME=$HEAT_DB_NAME
HEAT_DB_PASSWORD=$HEAT_DB_PASSWORD
HEAT_KEYSTONE_USER=$HEAT_KEYSTONE_USER
HEAT_KEYSTONE_PASSWORD=$HEAT_KEYSTONE_PASSWORD
HEAT_CFN_KEYSTONE_USER=$HEAT_CFN_KEYSTONE_USER
HEAT_CFN_KEYSTONE_PASSWORD=$HEAT_CFN_KEYSTONE_PASSWORD
HEAT_API_SERVICE_HOST=$HEAT_API_SERVICE_HOST
HEAT_API_CFN_SERVICE_HOST=$HEAT_API_CFN_SERVICE_HOST
HEAT_API_CFN_SERVICE_PORT=$HEAT_API_CFN_SERVICE_PORT
HEAT_API_CFN_URL_HOST=$HEAT_API_CFN_URL_HOST
MAGNUM_DB_NAME=$MAGNUM_DB_NAME
MAGNUM_DB_PASSWORD=$MAGNUM_DB_PASSWORD
MAGNUM_KEYSTONE_PASSWORD=$MAGNUM_KEYSTONE_PASSWORD
MAGNUM_API_SERVICE_HOST=$MAGNUM_API_SERVICE_HOST
PUBLIC_INTERFACE=$NOVA_PUBLIC_INTERFACE
PUBLIC_IP=$HOST_IP
PUBLIC_IP=$PUBLIC_IP
RABBITMQ_PASS=$RABBIT_PASSWORD
RABBITMQ_SERVICE_HOST=$RABBITMQ_SERVICE_HOST
RABBITMQ_USER=$RABBIT_USER
RABBITMQ_CLUSTER_NODES=$RABBITMQ_CLUSTER_NODES
RABBITMQ_CLUSTER_COOKIE=$RABBITMQ_CLUSTER_COOKIE
RABBIT_PASSWORD=$RABBIT_PASSWORD
RABBIT_USERID=$RABBIT_USER
DESIGNATE_DB_NAME=$DESIGNATE_DB_NAME
DESIGNATE_DB_USER=$DESIGNATE_DB_USER
DESIGNATE_DB_PASSWORD=$DESIGNATE_DB_PASSWORD
DESIGNATE_KEYSTONE_USER=$DESIGNATE_KEYSTONE_USER
DESIGNATE_KEYSTONE_PASSWORD=$DESIGNATE_KEYSTONE_PASSWORD
DESIGNATE_API_SERVICE_HOST=$DESIGNATE_API_SERVICE_HOST
DESIGNATE_API_SERVICE_PORT=$DESIGNATE_API_SERVICE_PORT
DESIGNATE_BIND9_RNDC_KEY=$DESIGNATE_BIND9_RNDC_KEY
DESIGNATE_MASTERNS=$DESIGNATE_MASTERNS
DESIGNATE_BACKEND=$DESIGNATE_BACKEND
DESIGNATE_SLAVENS=$DESIGNATE_SLAVENS
DESIGNATE_MDNS_PORT=$DESIGNATE_MDNS_PORT
DESIGNATE_DNS_PORT=$DESIGNATE_DNS_PORT
DESIGNATE_POOLMAN_POOLID=$DESIGNATE_POOLMAN_POOLID
DESIGNATE_POOLMAN_TARGETS=$DESIGNATE_POOLMAN_TARGETS
DESIGNATE_POOLMAN_NSS=$DESIGNATE_POOLMAN_NSS
DESIGNATE_INITDB=$DESIGNATE_INITDB
DESIGNATE_ALLOW_RECURSION=$DESIGNATE_ALLOW_RECURSION
DESIGNATE_DEFAULT_POOL_NS_RECORD=$DESIGNATE_DEFAULT_POOL_NS_RECORD
DESIGNATE_SINK_NOVA_DOMAIN_NAME=$DESIGNATE_SINK_NOVA_DOMAIN_NAME
DESIGNATE_SINK_NEUTRON_DOMAIN_NAME=$DESIGNATE_SINK_NEUTRON_DOMAIN_NAME
DB_CLUSTER_BIND_ADDRESS=$DB_CLUSTER_BIND_ADDRESS
DB_CLUSTER_INIT_DB=$DB_CLUSTER_INIT_DB
DB_CLUSTER_NAME=$DB_CLUSTER_NAME
DB_CLUSTER_NODES=$DB_CLUSTER_NODES
DB_CLUSTER_WSREP_METHOD=$DB_CLUSTER_WSREP_METHOD
CINDER_API_SERVICE_HOST=$HOST_IP
CINDER_API_SERVICE_PORT=$CINDER_API_SERVICE_PORT
CINDER_API_SERVICE_LISTEN=$MY_IP
CINDER_KEYSTONE_USER=$CINDER_KEYSTONE_USER
CINDER_KEYSTONE_PASSWORD=$CINDER_KEYSTONE_PASSWORD
CINDER_ADMIN_PASSWORD=$CINDER_ADMIN_PASSWORD
CINDER_DB_NAME=$CINDER_DB_NAME
CINDER_DB_USER=$CINDER_DB_USER
CINDER_DB_PASSWORD=$CINDER_DB_PASSWORD
CINDER_BACKUP_MANAGER=$CINDER_BACKUP_MANAGER
CINDER_BACKUP_API_CLASS=$CINDER_BACKUP_API_CLASS
CINDER_BACKUP_NAME_TEMPLATE=$CINDER_BACKUP_NAME_TEMPLATE
ISCSI_HELPER=$ISCSI_HELPER
ISCSI_IP_ADDRESS=$ISCSI_IP_ADDRESS
CINDER_BACKUP_DRIVER=$CINDER_BACKUP_DRIVER
CINDER_LVM_LO_VOLUME_SIZE=$CINDER_LVM_LO_VOLUME_SIZE
CINDER_VOLUME_GROUP=$CINDER_VOLUME_GROUP
CINDER_VOLUME_API_LISTEN=$CINDER_VOLUME_API_LISTEN
CINDER_VOLUME_BACKEND_NAME=$CINDER_VOLUME_BACKEND_NAME
CINDER_VOLUME_DRIVER=$CINDER_VOLUME_DRIVER
CINDER_ENABLED_BACKEND=$CINDER_ENABLED_BACKEND
CINDER_LOG_DIR=$CINDER_LOG_DIR
CINDER_API_LOG_FILE=$CINDER_API_LOG_FILE
CINDER_VOLUME_LOG_FILE=$CINDER_VOLUME_LOG_FILE
CINDER_BACKUP_LOG_FILE=$CINDER_BACKUP_LOG_FILE
CINDER_SCHEDULER_LOG_FILE=$CINDER_SCHEDULER_LOG_FILE
INIT_CINDER_DB=$INIT_CINDER_DB
INIT_DESIGNATE_DB=$INIT_DESIGNATE_DB
INIT_GLANCE_DB=$INIT_GLANCE_DB
INIT_HEAT_DB=$INIT_HEAT_DB
INIT_KEYSTONE_DB=$INIT_KEYSTONE_DB
INIT_NOVA_DB=$INIT_NOVA_DB
KEEPALIVED_HOST_PRIORITIES=$KEEPALIVED_HOST_PRIORITIES
EOF
echo Please customize your FLAT_INTERFACE to a different network then your
echo main network. The FLAT_INTERFACE is used for inter-VM communication.
echo the FLAT_INTERFACE should not have an IP address assigned.
# https://bugs.launchpad.net/kolla/+bug/1461635
echo
echo Cinder requires mounting /dev in the cinder-volume, nova-compute,
echo and libvirt containers. If /dev/pts/ptmx does not have proper permissions
echo on the host, then libvirt will fail to boot an instance.
echo This is a bug in Docker where it is not correctly mounting /dev/pts
echo **Temporary fix**
echo chmod 666 /dev/pts/ptmx