Mitaka updates

This changeset contains updates for Mitaka.

To build the basedisk (if necessary) and the cluster and launch a test VM
once:
./tools/repeat-test.sh -b -r 1

To test Orchestration:

./tools/test-once.sh scripts/test/heat_stack.sh

Change-Id: Idd96525c14abd5903a6631095ccd6797ba91365c
This commit is contained in:
Roger Luethi
2016-03-13 12:25:57 +01:00
parent ec896da660
commit 8ff32fa5a5
37 changed files with 861 additions and 492 deletions

View File

@@ -11,18 +11,16 @@ source "$CONFIG_DIR/credentials"
#------------------------------------------------------------------------------
# OpenStack client environment scripts
# http://docs.openstack.org/liberty/install-guide-ubuntu/keystone-openrc.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-openrc.html
#------------------------------------------------------------------------------
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=$ADMIN_PROJECT_NAME
export OS_TENANT_NAME=$ADMIN_PROJECT_NAME
export OS_USERNAME=$ADMIN_USER_NAME
export OS_PASSWORD=$ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_REGION_NAME=$REGION
export OS_IDENTITY_API_VERSION=3
#------------------------------------------------------------------------------
# http://docs.openstack.org/liberty/install-guide-ubuntu/glance-verify.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/glance-verify.html
#------------------------------------------------------------------------------
export OS_IMAGE_API_VERSION=2

View File

@@ -7,7 +7,7 @@ VM_SSH_PORT=2232
# Assign network interfaces to networks
NET_IF_0=dhcp
#------------------------------------------------------------------------------
# http://docs.openstack.org/liberty/install-guide-ubuntu/environment-networking-compute.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-networking-compute.html
#------------------------------------------------------------------------------
# Mgmt network
NET_IF_1="static 10.0.0.31"
@@ -15,7 +15,7 @@ NET_IF_1="static 10.0.0.31"
NET_IF_2="manual 203.0.113.0"
#------------------------------------------------------------------------------
# http://docs.openstack.org/liberty/install-guide-ubuntu/environment.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment.html
#------------------------------------------------------------------------------
# Controller node is running many services.
# A default instance within compute uses 512 MB RAM. The install-guide

View File

@@ -9,7 +9,7 @@ VM_WWW_PORT=8888
# Assign network interfaces to networks
NET_IF_0=dhcp
#------------------------------------------------------------------------------
# http://docs.openstack.org/liberty/install-guide-ubuntu/environment-networking-controller.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-networking-controller.html
#------------------------------------------------------------------------------
# Mgmt network
NET_IF_1="static 10.0.0.11"
@@ -17,10 +17,10 @@ NET_IF_1="static 10.0.0.11"
NET_IF_2="manual 203.0.113.0"
#------------------------------------------------------------------------------
# http://docs.openstack.org/liberty/install-guide-ubuntu/environment.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment.html
#------------------------------------------------------------------------------
# Controller node is running many services.
VM_MEM=2560
VM_MEM=4096
# Override number of virtual CPUs (default is 1)
# To edit uncomment the line below

View File

@@ -21,6 +21,11 @@
# User name and password for administrator
: ${ADMIN_USER_NAME:=admin}
#------------------------------------------------------------------------------
# Passwords for OpenStack services
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-security.html
#------------------------------------------------------------------------------
: ${ADMIN_PASS:=admin_user_secret}
: ${CEILOMETER_DB_USER:=ceilometer}

View File

@@ -11,18 +11,16 @@ source "$CONFIG_DIR/credentials"
#------------------------------------------------------------------------------
# OpenStack client environment scripts
# http://docs.openstack.org/liberty/install-guide-ubuntu/keystone-openrc.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-openrc.html
#------------------------------------------------------------------------------
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=$DEMO_PROJECT_NAME
export OS_TENANT_NAME=$DEMO_PROJECT_NAME
export OS_USERNAME=$DEMO_USER_NAME
export OS_PASSWORD=$DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_REGION_NAME=$REGION
export OS_IDENTITY_API_VERSION=3
#------------------------------------------------------------------------------
# http://docs.openstack.org/liberty/install-guide-ubuntu/glance-verify.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/glance-verify.html
#------------------------------------------------------------------------------
export OS_IMAGE_API_VERSION=2

View File

@@ -1,5 +1,5 @@
#------------------------------------------------------------------------------
# http://docs.openstack.org/liberty/install-guide-ubuntu/environment-networking-controller.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-networking-controller.html
#------------------------------------------------------------------------------
# controller
10.0.0.11 controller

View File

@@ -1,8 +1,8 @@
# This file contains OpenStack configuration data. It is used by both
# host (osbash, Windows batch) and VM guest scripts.
# one of: icehouse [end of life], juno, kilo, liberty
: ${OPENSTACK_RELEASE:=liberty}
# one of: mitaka, mitaka-proposed, mitaka-staging
: ${OPENSTACK_RELEASE:=mitaka}
# CirrOS image URL
if [ "$(uname -m)" = "x86_64" ]; then
@@ -14,15 +14,15 @@ CIRROS_URL="http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-$arch-disk.img"
unset arch
#------------------------------------------------------------------------------
# http://docs.openstack.org/liberty/install-guide-ubuntu/environment-networking.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-networking.html
#------------------------------------------------------------------------------
# Networks used by OpenStack training-labs setup
NETWORK_1="mgmt 10.0.0.0"
NETWORK_2="public 203.0.113.0"
NETWORK_2="provider 203.0.113.0"
#------------------------------------------------------------------------------
# http://docs.openstack.org/liberty/install-guide-ubuntu/launch-instance-networks-public.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/launch-instance-networks-public.html
#------------------------------------------------------------------------------
# Public network
@@ -33,7 +33,7 @@ NETWORK_2="public 203.0.113.0"
: ${END_IP_ADDRESS:=203.0.113.200}
#------------------------------------------------------------------------------
# http://docs.openstack.org/liberty/install-guide-ubuntu/launch-instance-networks-private.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/launch-instance-networks-private.html
#------------------------------------------------------------------------------
# Private demo network
@@ -46,7 +46,4 @@ NETWORK_2="public 203.0.113.0"
: ${REGION:=RegionOne}
# Should OpenStack services use verbose logging? (True, False)
: ${OPENSTACK_VERBOSE:=True}
# vim: set ai ts=4 sw=4 et ft=sh:

View File

@@ -9,6 +9,7 @@ cmd snapshot_cycle -n controller controller_node_init
cmd queue ubuntu/apt_install_mysql.sh
cmd queue ubuntu/apt_nosql_database.sh
cmd queue ubuntu/install_rabbitmq.sh
cmd queue ubuntu/install_memcached.sh
cmd snapshot_cycle -n controller pre-openstack_installed
cmd queue ubuntu/setup_keystone.sh
@@ -37,12 +38,10 @@ cmd snapshot_cycle -n controller horizon_installed
#cmd queue ubuntu/setup_lbaas_controller.sh
#cmd snapshot_cycle -n controller lbaas-controller_installed
# Telemetry service is disabled for the time being as it overloads
# the cluster. For enabling the same, please uncomment the following.
# Warning: Use higher configuration (Disk space). The default
# configuration is optimized for 4GB i3/i5 based machine.
# cmd queue ubuntu/setup_telemetry_controller.sh
# cmd snapshot_cycle -n controller telemetry-controller_installed
# Ceilometer; disable if necessary, fix comments in this file
# Note: Disable Telemetry service if it overloads the cluster.
cmd queue ubuntu/setup_telemetry_controller.sh
cmd snapshot_cycle -n controller telemetry-controller_installed
cmd queue ubuntu/setup_heat_controller.sh
cmd snapshot_cycle -n controller heat_controller_installed
@@ -67,12 +66,8 @@ cmd snapshot_cycle -n compute1 neutron-compute_installed
cmd queue ubuntu/setup_cinder_volumes.sh
cmd snapshot_cycle -n compute1 cinder-volume_installed
# Telemetry service is disabled for the time being as it overloads
# the cluster. For enabling the same, please uncomment the following.
# Warning: Use higher configuration (RAM, CPU's). The default
# configuration is optimized for 4GB i3/i5 based machine.
# cmd queue ubuntu/setup_telemetry_compute.sh
# cmd snapshot_cycle -n compute1 telemetry-compute_installed
cmd queue ubuntu/setup_telemetry_compute.sh
cmd snapshot_cycle -n compute1 telemetry-compute_installed
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Take snapshot of database changes on controller VM, too

View File

@@ -298,7 +298,7 @@ function wait_for_neutron {
echo -n "Waiting for neutron to come up."
local cnt=0
local auth="source $CONFIG_DIR/demo-openstackrc.sh"
until neutron net-list >/dev/null 2>&1; do
until openstack network list >/dev/null 2>&1; do
if [ "$cnt" -eq 10 ]; then
echo
echo "ERROR No response from neutron. Restarting neutron-server."

View File

@@ -10,7 +10,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Create private network
# http://docs.openstack.org/liberty/install-guide-ubuntu/launch-instance-networks-private.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/launch-instance-networks-private.html
#------------------------------------------------------------------------------
echo -n "Waiting for first DHCP namespace."
@@ -28,6 +28,10 @@ until [ "$(brctl show | grep -o "^brq[a-z0-9-]*" | wc -l)" -gt 0 ]; do
done
echo
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create the self-service network
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(
echo "Sourcing the demo credentials."
source "$CONFIG_DIR/demo-openstackrc.sh"
@@ -36,16 +40,16 @@ source "$CONFIG_DIR/demo-openstackrc.sh"
wait_for_neutron
echo "Creating the private network."
neutron net-create private
neutron net-create selfservice
echo "Creating a subnet on the tenant network."
neutron subnet-create private \
"$PRIVATE_NETWORK_CIDR" \
--name private \
--dns-nameserver "$DNS_RESOLVER" \
--gateway "$PRIVATE_NETWORK_GATEWAY"
neutron subnet-create --name selfservice \
--dns-nameserver "$DNS_RESOLVER" --gateway "$PRIVATE_NETWORK_GATEWAY" \
selfservice "$PRIVATE_NETWORK_CIDR"
)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo -n "Waiting for second DHCP namespace."
until [ "$(ip netns | grep -o "^qdhcp-[a-z0-9-]*" | wc -l)" -gt 1 ]; do
sleep 1
@@ -63,12 +67,16 @@ echo
echo "Bridges are:"
brctl show
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create a router
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(
echo "Sourcing the admin credentials."
source "$CONFIG_DIR/admin-openstackrc.sh"
echo "Adding 'router:external' option to the public provider network."
neutron net-update public --router:external
neutron net-update provider --router:external
)
(
@@ -103,7 +111,7 @@ wait_for_agent neutron-dhcp-agent
source "$CONFIG_DIR/demo-openstackrc.sh"
echo "Adding the private network subnet as an interface on the router."
neutron router-interface-add router private
neutron router-interface-add router selfservice
)
# The following tests for router namespace, qr-* interface and bridges are just
@@ -126,9 +134,11 @@ done
source "$CONFIG_DIR/demo-openstackrc.sh"
echo "Setting a gateway on the public network on the router."
neutron router-gateway-set router public
neutron router-gateway-set router provider
)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# The following test for qg-* is just for show.
echo -n "Waiting for interface qg-* in router namespace."
until sudo ip netns exec "$nsrouter" ip addr|grep -Po "(?<=: )qg-.*(?=:)"; do
@@ -136,6 +146,10 @@ until sudo ip netns exec "$nsrouter" ip addr|grep -Po "(?<=: )qg-.*(?=:)"; do
sleep 1
done
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Verify operation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Listing network namespaces."
ip netns
@@ -167,7 +181,7 @@ function get_router_ip_address {
done
}
PUBLIC_ROUTER_IP=$(get_router_ip_address "public")
PUBLIC_ROUTER_IP=$(get_router_ip_address "provider")
echo -n "Waiting for ping reply from public router IP ($PUBLIC_ROUTER_IP)."
cnt=0

View File

@@ -9,8 +9,8 @@ exec_logfile
indicate_current_auto
#------------------------------------------------------------------------------
# Create the external network and a subnet on it
# http://docs.openstack.org/liberty/install-guide-ubuntu/launch-instance-networks-public.html
# Create the provier (external) network and a subnet on it
# http://docs.openstack.org/mitaka/install-guide-ubuntu/launch-instance-networks-provider.html
#------------------------------------------------------------------------------
echo "Sourcing the admin credentials."
@@ -39,19 +39,23 @@ echo "linuxbridge-agent and dhcp-agent must be up before we can add interfaces."
wait_for_agent neutron-linuxbridge-agent
wait_for_agent neutron-dhcp-agent
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create the provider network
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Creating the public network."
neutron net-create public \
neutron net-create \
--shared \
--provider:physical_network public \
--provider:network_type flat
--provider:physical_network provider \
--provider:network_type flat \
provider
echo "Creating a subnet on the public network."
neutron subnet-create public \
"$PUBLIC_NETWORK_CIDR" \
--name public \
neutron subnet-create --name provider \
--allocation-pool start="$START_IP_ADDRESS,end=$END_IP_ADDRESS" \
--dns-nameserver "$DNS_RESOLVER" \
--gateway "$PUBLIC_NETWORK_GATEWAY"
--gateway "$PUBLIC_NETWORK_GATEWAY" \
provider "$PUBLIC_NETWORK_CIDR"
echo -n "Waiting for DHCP namespace."
until [ "$(ip netns | grep -o "^qdhcp-[a-z0-9-]*" | wc -l)" -gt 0 ]; do

View File

@@ -12,7 +12,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Use OpenStack client environment script
# http://docs.openstack.org/liberty/install-guide-ubuntu/keystone-openrc.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-openrc.html
#------------------------------------------------------------------------------
# Test in subshell enviroment to keep our environment clean

View File

@@ -15,9 +15,13 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Verify the Orchestration Service installation
# http://docs.openstack.org/liberty/install-guide-ubuntu/launch-instance-heat.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/launch-instance-heat.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create a template
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Verifying heat installation."
echo "Waiting for heat-engine to start."
@@ -30,11 +34,10 @@ function check_for_other_vms {
echo "Verifying that no other instance VMs are left."
(
source "$CONFIG_DIR/admin-openstackrc.sh"
if [ "$(nova list --all-tenants --minimal | wc -l)" -gt 4 ]; then
echo "ERROR Unexpected VMs found. There may not be enough resources" \
"for this test. Aborting..."
nova list --all-tenants
exit 1
if [ "$(openstack server list --all-projects | wc -l)" -gt 4 ]; then
echo "WARNING Existing VMs found. There may not be enough resources" \
"for this test."
openstack server list --all-projects
fi
)
}
@@ -44,12 +47,10 @@ echo "Creating a test heat template."
node_ssh controller "cat > demo-template.yml" << HEAT
heat_template_version: 2015-10-15
description: Launch a basic instance using the ``m1.tiny`` flavor and one network.
description: Launch a basic instance with CirrOS image using the
``m1.tiny`` flavor, ``mykey`` key, and one network.
parameters:
ImageID:
type: string
description: Image to use for the instance.
NetID:
type: string
description: Network ID to use for the instance.
@@ -58,8 +59,9 @@ resources:
server:
type: OS::Nova::Server
properties:
image: { get_param: ImageID }
image: cirros
flavor: m1.tiny
key_name: mykey
networks:
- network: { get_param: NetID }
@@ -72,13 +74,16 @@ outputs:
value: { get_attr: [ server, first_address ] }
HEAT
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create a stack
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TEST_STACK_NAME=stack
DEMO_NET=public
NET_ID=$(node_ssh controller "$AUTH; nova net-list" | awk "/ $DEMO_NET / { print \$2 }")
img_name=$(basename "$CIRROS_URL" -disk.img)
DEMO_NET=provider
NET_ID=$(node_ssh controller "$AUTH; openstack network list" | awk "/ $DEMO_NET / { print \$2 }")
node_ssh controller "$AUTH; heat stack-create -f demo-template.yml \
-P 'ImageID=$img_name;NetID=$NET_ID' $TEST_STACK_NAME"
-P 'NetID=$NET_ID' $TEST_STACK_NAME"
echo "Verifying successful creation of stack."

View File

@@ -101,13 +101,6 @@ wait_for_service compute1 nova-compute
echo
function wait_for_nova_compute {
(
source "$CONFIG_DIR/admin-openstackrc.sh"
if openstack compute service list --service nova-compute | \
grep -q "| up "; then
return 0
fi
)
echo " Waiting for nova-compute service in state 'up'."
if ssh_no_chk_node compute1 service nova-compute status | \
@@ -147,28 +140,50 @@ function wait_for_nova_compute {
function wait_for_nova_services {
local start=$(date +%s)
# TODO Can we replace "sudo nova-manage" with "openstack" here, too?
(
source "$CONFIG_DIR/admin-openstackrc.sh"
echo "Checking for nova services in openstack compute service list."
echo "Checking services in sudo nova-manage service list."
echo -n " Waiting for controller services to switch from XXX to :-)."
# Ignore nova-compute for now, even if a custom config has it on controller
until sudo nova-manage service list --host controller | \
grep -v nova-compute | grep -q ':-)'; do
sleep 2
echo -n " nova-consoleauth"
until openstack compute service list --service nova-consoleauth | \
grep -q '| up '; do
sleep 1
echo -n .
done
echo
if ! sudo nova-manage service list | grep -q nova-compute; then
echo -n " Waiting for nova-compute to turn up in list."
until sudo nova-manage service list | grep -q nova-compute; do
sleep 2
echo -n .
done
echo
fi
echo -n " nova-cert"
until openstack compute service list --service nova-cert | \
grep -q '| up '; do
sleep 1
echo -n .
done
echo
echo -n " nova-scheduler"
until openstack compute service list --service nova-scheduler | \
grep -q '| up '; do
sleep 1
echo -n .
done
echo
echo -n " nova-conductor"
until openstack compute service list --service nova-conductor | \
grep -q '| up '; do
sleep 1
echo -n .
done
echo
echo -n " nova-compute"
if ! openstack compute service list --service nova-compute | \
grep -q '| up '; then
wait_for_nova_compute
fi
echo
)
wait_for_nova_compute
echo
echo "SUM wait for nova services: $(($(date +%s) - start))"
}
@@ -179,19 +194,22 @@ fi
wait_for_nova_services
(
source "$CONFIG_DIR/admin-openstackrc.sh"
echo "All services are ready:"
sudo nova-manage service list
openstack compute service list
echo
)
function show_compute_resource_usage {
echo "nova list:"
nova list
echo "openstack server list:"
openstack server list
(
source "$CONFIG_DIR/admin-openstackrc.sh"
echo "As admin user, nova host-list:"
nova host-list
echo "As admin user, nova host-describe compute:"
nova host-describe compute
echo "As admin user, openstack host list:"
openstack host list
echo "As admin user, openstack host show compute1:"
openstack host show compute1
)
}
@@ -231,6 +249,27 @@ function wait_for_neutron_agents {
wait_for_neutron_agents
#------------------------------------------------------------------------------
# Launch an instance
# http://docs.openstack.org/mitaka/install-guide-ubuntu/launch-instance.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create m1.nano flavor
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(
echo "Creating m1.nano flavor which is just big enough for CirrOS."
source "$CONFIG_DIR/admin-openstackrc.sh"
openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
echo
)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Generate a key pair
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if [ ! -f ~/.ssh/id_rsa ]; then
echo "Generating an ssh key pair (saved to ~/.ssh/id_rsa*)."
# For training cluster: no password protection on keys to make scripting
@@ -240,19 +279,19 @@ fi
function check_demo_key {
echo -n "Checking if 'mykey' is already in our OpenStack environment: "
if nova keypair-show mykey >/dev/null 2>&1; then
if openstack keypair show mykey >/dev/null 2>&1; then
echo "yes."
echo -n "Checking if the 'mykey' key pair matches our ssh key: "
ssh_key=$(< ~/.ssh/id_rsa.pub awk '{print $2}')
stored_key=$(nova keypair-show mykey | \
awk '/^Public key: ssh-rsa/ {print $4}')
stored_key=$(openstack keypair show --public-key mykey | \
awk '{print $2}')
if [ "$ssh_key" != "$stored_key" ]; then
echo "no."
echo "Removing the 'mykey' from the OpenStack envirnoment."
nova keypair-delete mykey
openstack keypair delete mykey
else
echo "yes."
fi
@@ -262,52 +301,70 @@ function check_demo_key {
}
check_demo_key
if ! nova keypair-show mykey 2>/dev/null; then
if ! openstack keypair show mykey 2>/dev/null; then
echo "Adding the public key to our OpenStack environment."
nova keypair-add --pub-key ~/.ssh/id_rsa.pub mykey
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
fi
echo "Verifying addition of the public key."
nova keypair-list
openstack keypair list
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Add security group rules
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo
echo "Permitting ICMP (ping) to our instances."
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 || rc=$?
openstack security group rule create --proto icmp default || rc=$?
if [ ${rc:-0} -ne 0 ]; then
echo "Rule was already there."
fi
echo
echo "Permitting secure shell (SSH) access to our instances."
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 || rc=$?
openstack security group rule create --proto tcp --dst-port 22 default || rc=$?
if [ ${rc:-0} -ne 0 ]; then
echo "Rule was already there."
fi
echo
echo "Verifying security-group rules."
nova secgroup-list-rules default
echo "Verifying security group rules."
openstack security group list
openstack security group show default
#------------------------------------------------------------------------------
# Launch an instance on the self-service network
# http://docs.openstack.org/mitaka/install-guide-ubuntu/launch-instance-selfservice.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Determine instance options
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Listing available flavors."
nova flavor-list
openstack flavor list
echo "Listing available images."
nova image-list
openstack image list
# Wait for neutron to start
wait_for_neutron
echo "Listing available networks."
neutron net-list
openstack network list
PRIVATE_NET_ID=$(neutron net-list | awk '/ private / {print $2}')
PRIVATE_SUBNET=selfservice
PRIVATE_NET_ID=$(openstack network list | awk "/ $PRIVATE_SUBNET / {print \$2}")
echo "ID for demo-net tenant network: $PRIVATE_NET_ID"
echo "Listing available security groups."
nova secgroup-list
openstack security group list
PRIVATE_SUBNET=private
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# XXX Network settings
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Settings for $PRIVATE_SUBNET:"
neutron subnet-show $PRIVATE_SUBNET
@@ -326,13 +383,17 @@ echo "Settings for $PRIVATE_SUBNET:"
neutron subnet-show $PRIVATE_SUBNET
echo
nova list
nova list | awk " / $DEMO_INSTANCE_NAME / {print \$2}" | while read instance; do
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Clean out old instances
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
openstack server list
openstack server list | awk " / $DEMO_INSTANCE_NAME / {print \$2}" | while read instance; do
echo "Removing instance $DEMO_INSTANCE_NAME ($instance)."
nova delete "$instance"
openstack server delete "$instance"
done
echo -n "Waiting for removed instances to disappear (may take > 1 min)."
while nova list|grep -q "$DEMO_INSTANCE_NAME"; do
while openstack server list|grep -q "$DEMO_INSTANCE_NAME"; do
sleep 1
echo -n .
done
@@ -342,14 +403,15 @@ function check_for_other_vms {
echo "Verifying that no other instance VMs are left."
(
source "$CONFIG_DIR/admin-openstackrc.sh"
if [ "$(nova list --all-tenants --minimal | wc -l)" -gt 4 ]; then
if [ "$(openstack server list --all-projects | wc -l)" -gt 4 ]; then
echo "SUM ERROR Unexpected VMs found. Aborting..."
nova list --all-tenants
openstack server list --all-projects
exit 1
fi
)
}
check_for_other_vms
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOVA_SCHED_LOG=/var/log/upstart/nova-scheduler.log
NOVA_API_LOG=/var/log/upstart/nova-api.log
@@ -371,9 +433,9 @@ function request_instance {
local img_name=$(basename "$CIRROS_URL" -disk.img)
echo "Requesting an instance."
nova boot \
--flavor m1.tiny \
--image "$img_name" \
openstack server create \
--flavor m1.nano \
--image "cirros" \
--nic net-id="$PRIVATE_NET_ID" \
--security-group default \
--key-name mykey \
@@ -387,9 +449,9 @@ echo "Boot log: $BOOT_LOG"
function save_boot_log {
local rc=0
rm -f "$BOOT_LOG"
nova console-log "$DEMO_INSTANCE_NAME" >"$BOOT_LOG" 2>&1 || rc=$?
openstack console log show "$DEMO_INSTANCE_NAME" >"$BOOT_LOG" 2>&1 || rc=$?
if [ $rc -ne 0 ]; then
echo >&2 "nova console-log returned error status $rc"
echo >&2 "openstack console log show returned error status $rc"
fi
return $rc
}
@@ -403,11 +465,11 @@ function explain_instance_failure {
As an admin, we could list hosts (including compute hosts):
$ nova host-list
$ openstack host list
And check resource usage in description of host 'compute':
$ nova host-describe compute
$ openstack host show compute1
As a regular user, we would have to keep trying for up to a minute and hope
it works soon.
@@ -474,12 +536,12 @@ function console_status_404 {
}
function instance_status {
nova list | awk "/$DEMO_INSTANCE_NAME/ {print \$6}"
openstack server list | awk "/$DEMO_INSTANCE_NAME/ {print \$6}"
}
function instance_status_is {
local status=$1
nova list | grep "$DEMO_INSTANCE_NAME" | grep -q "$status"
openstack server list | grep "$DEMO_INSTANCE_NAME" | grep -q "$status"
}
while : ; do
@@ -488,7 +550,7 @@ while : ; do
request_instance > /dev/null
if console_status_409; then
echo "nova console-log returned:"
echo "openstack console log show returned:"
cat "$BOOT_LOG"
echo
@@ -496,7 +558,7 @@ while : ; do
echo "Instance build failed."
echo "Deleting failed instance VM."
nova delete "$DEMO_INSTANCE_NAME"
openstack server delete "$DEMO_INSTANCE_NAME"
echo "Checking nova-compute on the compute node."
wait_for_nova_compute
@@ -506,7 +568,7 @@ while : ; do
while : ; do
request_instance >/dev/null
if console_status_409; then
nova delete "$DEMO_INSTANCE_NAME"
openstack server delete "$DEMO_INSTANCE_NAME"
cnt=$((cnt + 1))
if [ $cnt -eq 5 ]; then
echo
@@ -528,7 +590,7 @@ while : ; do
fi
if console_status_404; then
echo "nova console-log returned:"
echo "openstack console log show returned:"
cat "$BOOT_LOG"
echo
@@ -566,7 +628,7 @@ while : ; do
fi
echo "Deleting failed instance VM."
nova delete "$DEMO_INSTANCE_NAME"
openstack server delete "$DEMO_INSTANCE_NAME"
elif instance_status_is ACTIVE; then
echo "Instance VM status: ACTIVE."
break
@@ -627,24 +689,31 @@ until grep -q "$DEMO_INSTANCE_NAME login:" "$BOOT_LOG"; do
done
echo
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Access the instance using a virtual console
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Obtaining a VNC session URL for our instance."
nova get-vnc-console "$DEMO_INSTANCE_NAME" novnc
openstack console url show "$DEMO_INSTANCE_NAME"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Access the instance remotely
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo
echo "Creating a floating IP address on the public network."
floating_ip_id=$(neutron floatingip-create public | awk '/ id / {print $4}')
neutron floatingip-show "$floating_ip_id"
floating_ip=$(neutron floatingip-show "$floating_ip_id" |
awk '/ floating_ip_address / {print $4}')
floating_ip=$(openstack ip floating create provider | awk '/ ip / {print $4}')
openstack ip floating list
echo
echo "Associating the floating IP address with our instance."
nova floating-ip-associate "$DEMO_INSTANCE_NAME" "$floating_ip"
openstack ip floating add "$floating_ip" "$DEMO_INSTANCE_NAME"
echo
echo "Checking the status of your floating IP address."
nova list
openstack server list
echo
echo -n "Verifying network connectivity to instance VM (may take 2+ min)."

View File

@@ -41,20 +41,52 @@ function ubuntu_cloud_archive {
# cloud-keyring to verify packages from ubuntu-cloud repo
sudo apt-get install ubuntu-cloud-keyring
#--------------------------------------------------------------------------
# Enable the OpenStack repository
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-packages.html
#--------------------------------------------------------------------------
# Install packages needed for add-apt-repository
sudo apt-get -y install software-properties-common \
python-software-properties
sudo add-apt-repository -y "cloud-archive:$OPENSTACK_RELEASE"
}
# Get index files only for ubuntu-cloud repo but keep standard lists
sudo apt-get update \
-o Dir::Etc::sourcelist="sources.list.d/cloudarchive-$OPENSTACK_RELEASE.list" \
-o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
function ubuntu_cloud_staging {
#--------------------------------------------------------------------------
# Enable the OpenStack repository
# https://launchpad.net/~ubuntu-cloud-archive/+archive/ubuntu/mitaka-staging
#
# NOTE: Using pre-release staging ppa is not documented in install-guide
#--------------------------------------------------------------------------
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9F68104E
cat << DEB |sudo tee /etc/apt/sources.list.d/cloudarchive-$OPENSTACK_RELEASE.list
deb http://ppa.launchpad.net/ubuntu-cloud-archive/$OPENSTACK_RELEASE/ubuntu trusty main
deb-src http://ppa.launchpad.net/ubuntu-cloud-archive/$OPENSTACK_RELEASE/ubuntu trusty main
DEB
}
# precise needs the cloud archive, and so does trusty for non-Icehouse releases
if grep -qs DISTRIB_CODENAME=precise /etc/lsb-release ||
[ "$OPENSTACK_RELEASE" != "icehouse" ]; then
echo "Enabling the Ubuntu cloud archive."
ubuntu_cloud_archive
if [[ "$OPENSTACK_RELEASE" =~ staging ]]; then
echo "Enabling the Ubuntu cloud staging ppa."
ubuntu_cloud_staging
else
echo "Enabling the Ubuntu cloud archive."
ubuntu_cloud_archive
fi
# Get index files only for ubuntu-cloud repo but keep standard lists
src_list=cloudarchive-$OPENSTACK_RELEASE.list
if [ -f "/etc/apt/sources.list.d/$src_list" ]; then
sudo apt-get update \
-o Dir::Etc::sourcelist="sources.list.d/$src_list" \
-o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
else
echo "ERROR: apt source not found: /etc/apt/sources.list.d/$src_list"
exit 1
fi
fi

View File

@@ -21,21 +21,21 @@ echo "Will bind MySQL server to $DB_IP."
#------------------------------------------------------------------------------
# Install and configure the database server
# http://docs.openstack.org/liberty/install-guide-ubuntu/environment-sql-database.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-sql-database.html
#------------------------------------------------------------------------------
echo "Sourced MySQL password from credentials: $DATABASE_PASSWORD"
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password '$DATABASE_PASSWORD''
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password '$DATABASE_PASSWORD''
echo "Installing MySQL."
echo "Installing MySQL (MariaDB)."
sudo apt-get install -y mariadb-server python-mysqldb
echo "Creating /etc/mysql/conf.d/mysqld_openstack.cnf."
echo '[mysqld]' | sudo tee /etc/mysql/conf.d/mysqld_openstack.cnf
conf=/etc/mysql/conf.d/mysqld_openstack.cnf
echo "Creating $conf."
echo '[mysqld]' | sudo tee $conf
echo "Configuring MySQL to accept requests from management network."
iniset_sudo $conf mysqld bind-address "$DB_IP"

View File

@@ -15,7 +15,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Install the NoSQL (Mongo) service
# http://docs.openstack.org/liberty/install-guide-ubuntu/environment-nosql-database.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-nosql-database.html
#------------------------------------------------------------------------------
echo "Setting up NoSQL database (MongoDB) for telemetry."

View File

@@ -42,9 +42,8 @@ function get_cirros {
}
function apt_download {
echo "apt_download: $@"
sudo apt-get install -y --download-only "$@"
}
# Get cirros image.
@@ -55,6 +54,9 @@ get_cirros
# MySQL, RabbitMQ
apt_download mariadb-server python-mysqldb rabbitmq-server
# NoSQL database (MongoDB)
apt_download mongodb-server mongodb-clients python-pymongo
# Other dependencies
apt_download python-argparse python-dev python-pip
@@ -71,8 +73,8 @@ apt_download nova-api nova-cert nova-conductor nova-consoleauth \
# Neutron Controller
apt_download neutron-server neutron-plugin-ml2 \
neutron-plugin-linuxbridge-agent neutron-dhcp-agent \
neutron-metadata-agent neutron-l3-agent python-neutronclient
neutron-linuxbridge-agent neutron-dhcp-agent \
neutron-metadata-agent neutron-l3-agent python-neutronclient conntrack
# Cinder Controller
apt_download cinder-api cinder-scheduler python-cinderclient
@@ -87,18 +89,26 @@ apt_download lvm2 cinder-volume
apt_download nova-compute nova-compute-qemu qemu sysfsutils
# Neutron Compute
apt_download neutron-plugin-linuxbridge-agent
apt_download neutron-linuxbridge-agent
# Heat
apt_download heat-api heat-api-cfn heat-engine python-heatclient
# Ceilometer
apt_download mongodb-server mongodb-clients python-pymongo \
ceilometer-api ceilometer-collector ceilometer-agent-central \
ceilometer-agent-notification ceilometer-alarm-evaluator \
ceilometer-alarm-notifier ceilometer-agent-compute \
# ceilometer-install
apt_download ceilometer-api ceilometer-collector \
ceilometer-agent-central ceilometer-agent-notification \
python-ceilometerclient
# ceilometer-aodh
apt_download aodh-api aodh-evaluator aodh-notifier \
aodh-listener aodh-expirer python-ceilometerclient
# ceilometer-nova
apt_download ceilometer-agent-compute
# ceilometer-swift
apt_download python-ceilometermiddleware
# Swift Controller
apt_download swift swift-proxy python-swiftclient \
python-keystoneclient python-keystonemiddleware \

View File

@@ -12,12 +12,21 @@ indicate_current_auto
exec_logfile
#------------------------------------------------------------------------------
# Finalize the installation
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-packages.html
#------------------------------------------------------------------------------
# Note: We assume that apt_init.sh set up repos and updated the apt index files
# Upgrade installed packages and the kernel
sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade
sudo apt-get -y dist-upgrade
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Extra work not documented in install-guide
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# If we upgraded the kernel, remove the old one
INSTALLED_KERNEL=$(readlink /vmlinuz)
INSTALLED_KERNEL=${INSTALLED_KERNEL#boot/vmlinuz-}
@@ -35,3 +44,10 @@ fi
# Clean apt cache
sudo apt-get -y autoremove
sudo apt-get -y clean
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Install OpenStack client (install-guide)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing OpenStack client."
sudo apt-get install -y python-openstackclient

View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
set -o errexit -o nounset
TOP_DIR=$(cd "$(dirname "$0")/.." && pwd)
source "$TOP_DIR/config/paths"
source "$CONFIG_DIR/credentials"
source "$LIB_DIR/functions.guest.sh"
exec_logfile
indicate_current_auto
#------------------------------------------------------------------------------
# Memcached
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-memcached.html
#------------------------------------------------------------------------------
echo "Installing memcache packages."
sudo apt-get install -y memcached python-memcache
MGMT_IP=$(get_node_ip_in_network "$(hostname)" "mgmt")
echo "Will bind memcached server to $MGMT_IP."
conf=/etc/memcached.conf
sudo sed -i "s/^-l 127.0.0.1/-l $MGMT_IP/" $conf
echo "Restarting memcache service."
sudo service memcached restart

View File

@@ -14,10 +14,9 @@ indicate_current_auto
#-------------------------------------------------------------------------------
# Install the message broker service (RabbitMQ).
# http://docs.openstack.org/liberty/install-guide-ubuntu/environment-messaging.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-messaging.html
#-------------------------------------------------------------------------------
echo "Installing RabbitMQ."
sudo apt-get install -y rabbitmq-server

View File

@@ -14,7 +14,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up Block Storage service controller (cinder controller node)
# http://docs.openstack.org/liberty/install-guide-ubuntu/cinder-controller-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/cinder-controller-install.html
#------------------------------------------------------------------------------
echo "Setting up database for cinder."
@@ -79,7 +79,7 @@ openstack endpoint create \
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing cinder."
sudo apt-get install -y cinder-api cinder-scheduler python-cinderclient \
sudo apt-get install -y cinder-api cinder-scheduler \
qemu-utils
# Note: The package 'qemu-utils' is required for 'qemu-img' which allows cinder
# to convert additional image types to bootable volumes. By default only
@@ -112,9 +112,9 @@ iniset_sudo $conf DEFAULT auth_strategy keystone
# Configure [keystone_authtoken] section.
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
iniset_sudo $conf keystone_authtoken auth_url http://controller:35357
iniset_sudo $conf keystone_authtoken auth_plugin password
iniset_sudo $conf keystone_authtoken project_domain_id default
iniset_sudo $conf keystone_authtoken user_domain_id default
iniset_sudo $conf keystone_authtoken auth_type password
iniset_sudo $conf keystone_authtoken project_domain_name default
iniset_sudo $conf keystone_authtoken user_domain_name default
iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken username "$cinder_admin_user"
iniset_sudo $conf keystone_authtoken password "$CINDER_PASS"
@@ -123,8 +123,6 @@ iniset_sudo $conf DEFAULT my_ip "$(hostname_to_ip controller)"
iniset_sudo $conf oslo_concurrency lock_path /var/lib/cinder/tmp
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
echo "Creating the database tables for cinder."
sudo cinder-manage db sync

View File

@@ -15,7 +15,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up Block Storage service (cinder).
# http://docs.openstack.org/liberty/install-guide-ubuntu/cinder-storage-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/cinder-storage-install.html
#------------------------------------------------------------------------------
MY_MGMT_IP=$(get_node_ip_in_network "$(hostname)" "mgmt")
@@ -61,7 +61,7 @@ sudo vgcreate cinder-volumes $cinder_loop_dev
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing cinder."
sudo apt-get install -y cinder-volume python-mysqldb
sudo apt-get install -y cinder-volume
conf=/etc/cinder/cinder.conf
echo "Configuring $conf."
@@ -91,9 +91,9 @@ iniset_sudo $conf DEFAULT auth_strategy keystone
# Configure [keystone_authtoken] section.
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
iniset_sudo $conf keystone_authtoken auth_url http://controller:35357
iniset_sudo $conf keystone_authtoken auth_plugin password
iniset_sudo $conf keystone_authtoken project_domain_id default
iniset_sudo $conf keystone_authtoken user_domain_id default
iniset_sudo $conf keystone_authtoken auth_type password
iniset_sudo $conf keystone_authtoken project_domain_name default
iniset_sudo $conf keystone_authtoken user_domain_name default
iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken username "$cinder_admin_user"
iniset_sudo $conf keystone_authtoken password "$CINDER_PASS"
@@ -106,12 +106,10 @@ iniset_sudo $conf lvm iscsi_protocol iscsi
iniset_sudo $conf lvm iscsi_helper tgtadm
iniset_sudo $conf DEFAULT enabled_backends lvm
iniset_sudo $conf DEFAULT glance_host controller
iniset_sudo $conf DEFAULT glance_api_servers http://controller:9292
iniset_sudo $conf oslo_concurrency lock_path /var/lib/cinder/tmp
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
# Finalize installation
echo "Restarting cinder service."
sudo service tgt restart
@@ -121,7 +119,7 @@ sudo rm -f /var/lib/cinder/cinder.sqlite
#------------------------------------------------------------------------------
# Verify the Block Storage installation
# http://docs.openstack.org/liberty/install-guide-ubuntu/cinder-verify.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/cinder-verify.html
#------------------------------------------------------------------------------
echo "Verifying Block Storage installation on controller node."
@@ -174,11 +172,11 @@ check_cinder_services
echo "Sourcing the demo credentials."
AUTH="source $CONFIG_DIR/demo-openstackrc.sh"
echo "cinder create --display-name demo-volume1 1"
node_ssh controller "$AUTH; cinder create --display-name demo-volume1 1;sleep 20"
echo "openstack volume create --size 1 volume1"
node_ssh controller "$AUTH; openstack volume create --size 1 volume1;sleep 20"
echo -n "Waiting for cinder to list the new volume."
until node_ssh controller "$AUTH; cinder list | grep demo-volume1" > /dev/null 2>&1; do
until node_ssh controller "$AUTH; openstack volume list| grep volume1" > /dev/null 2>&1; do
echo -n .
sleep 1
done
@@ -189,7 +187,7 @@ function wait_for_cinder_volume {
echo -n 'Waiting for cinder volume to be created.'
local i=1
while : ; do
if [[ -z $(node_ssh controller "$AUTH;cinder list" | grep creating) ]] > /dev/null 2>&1; then
if [[ -z $(node_ssh controller "$AUTH;openstack volume list" | grep creating) ]] > /dev/null 2>&1; then
# Proceed if the state of cinder-volumes is error or created.
# Cinder volumes cannot be deleted when it is in creating state.
# Throw an error and stop this script.
@@ -200,7 +198,7 @@ function wait_for_cinder_volume {
if [[ "$i" -gt "20" ]]; then
echo "Error creating cinder volume."
echo "[Warning]: Debug cinder volumes service on the compute node.
Delete the cinder-volume demo-volume1. Script could not delete this
Delete the cinder-volume volume1. Script could not delete this
volume."
exit 0
fi
@@ -213,8 +211,8 @@ function wait_for_cinder_volume {
echo "Checking if volume is created."
wait_for_cinder_volume
echo "cinder delete demo-volume1"
node_ssh controller "$AUTH; cinder delete demo-volume1"
echo "openstack volume delete volume1"
node_ssh controller "$AUTH; openstack volume delete volume1"
echo "cinder list"
node_ssh controller "$AUTH; cinder list"
echo "openstack volume list"
node_ssh controller "$AUTH; openstack volume list"

View File

@@ -14,7 +14,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Install the Image Service (glance).
# http://docs.openstack.org/liberty/install-guide-ubuntu/glance-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/glance-install.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -63,8 +63,12 @@ openstack endpoint create \
--region "$REGION" \
image admin http://controller:9292
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Install and configure components
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing glance."
sudo apt-get install -y glance python-glanceclient
sudo apt-get install -y glance
function get_database_url {
local db_user=$GLANCE_DB_USER
@@ -85,9 +89,10 @@ iniset_sudo $conf database connection "$database_url"
# Keystone_authtoken
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
iniset_sudo $conf keystone_authtoken auth_url http://controller:35357
iniset_sudo $conf keystone_authtoken auth_plugin password
iniset_sudo $conf keystone_authtoken project_domain_id default
iniset_sudo $conf keystone_authtoken user_domain_id default
iniset_sudo $conf keystone_authtoken memcached_servers controller:11211
iniset_sudo $conf keystone_authtoken auth_type password
iniset_sudo $conf keystone_authtoken project_domain_name default
iniset_sudo $conf keystone_authtoken user_domain_name default
iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken username "$glance_admin_user"
iniset_sudo $conf keystone_authtoken password "$GLANCE_PASS"
@@ -95,14 +100,11 @@ iniset_sudo $conf keystone_authtoken password "$GLANCE_PASS"
# Paste_deploy
iniset_sudo $conf paste_deploy flavor "keystone"
# Glance_store
# glance_store
iniset_sudo $conf glance_store stores "file,http"
iniset_sudo $conf glance_store default_store file
iniset_sudo $conf glance_store filesystem_store_datadir /var/lib/glance/images/
# Default section
iniset_sudo $conf DEFAULT notification_driver noop
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
echo "Configuring glance-registry.conf."
conf=/etc/glance/glance-registry.conf
@@ -112,9 +114,10 @@ iniset_sudo $conf database connection "$database_url"
# Keystone authtoken section
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
iniset_sudo $conf keystone_authtoken auth_url http://controller:35357
iniset_sudo $conf keystone_authtoken auth_plugin password
iniset_sudo $conf keystone_authtoken project_domain_id default
iniset_sudo $conf keystone_authtoken user_domain_id default
iniset_sudo $conf keystone_authtoken memcached_servers controller:11211
iniset_sudo $conf keystone_authtoken auth_type password
iniset_sudo $conf keystone_authtoken project_domain_name default
iniset_sudo $conf keystone_authtoken user_domain_name default
iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken username "$glance_admin_user"
iniset_sudo $conf keystone_authtoken password "$GLANCE_PASS"
@@ -122,10 +125,6 @@ iniset_sudo $conf keystone_authtoken password "$GLANCE_PASS"
# Paste deploy section
iniset_sudo $conf paste_deploy flavor "keystone"
# Default section
iniset_sudo $conf DEFAULT notification_driver noop
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
echo "Creating the database tables for glance."
sudo glance-manage db_sync
@@ -138,31 +137,30 @@ sudo rm -f /var/lib/glance/glance.sqlite
#------------------------------------------------------------------------------
# Verify the Image Service installation
# http://docs.openstack.org/liberty/install-guide-ubuntu/glance-verify.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/glance-verify.html
#------------------------------------------------------------------------------
# Our openstackrc.sh files already set OS_IMAGE_API_VERSION, we can skip this
# step in the install-guide.
echo "Waiting for glance to start."
until glance image-list >/dev/null 2>&1; do
echo -n "Waiting for glance to start."
until openstack image list >/dev/null 2>&1; do
sleep 1
echo -n .
done
echo
# cirros-0.3.4-x86_64-disk.img -> cirros-0.3.4-x86_64
img_name=$(basename $CIRROS_URL -disk.img)
echo "Adding CirrOS image as $img_name to glance."
glance image-create \
--name "$img_name" \
openstack image create "cirros" \
--file "$HOME/img/$(basename $CIRROS_URL)" \
--disk-format qcow2 \
--container-format bare \
--visibility public \
--progress
--disk-format qcow2 --container-format bare \
--public
echo "Verifying that the image was successfully added to the service."
echo "glance image-list"
glance image-list
echo "openstack image list"
openstack image list

View File

@@ -14,7 +14,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Install the Orchestration Service (heat).
# http://docs.openstack.org/liberty/install-guide-ubuntu/heat-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/heat-install.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -93,9 +93,9 @@ openstack user create \
openstack role add \
--domain heat \
--user heat_domain_admin \
admin
"$ADMIN_ROLE_NAME"
echo "Creating the heat stack owner role."
echo "Creating the heat_stack_owner role."
openstack role create "heat_stack_owner"
openstack role add \
@@ -103,7 +103,7 @@ openstack role add \
--user "$DEMO_USER_NAME" \
"heat_stack_owner"
echo "Creating the heat stack user role."
echo "Creating the heat_stack_user role."
openstack role create "heat_stack_user"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -111,7 +111,15 @@ openstack role create "heat_stack_user"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing heat."
sudo apt-get install -y heat-api heat-api-cfn heat-engine python-heatclient
# Prevent start of heat services here so they don't get confused by the default
# configuration files. Otherwise, it takes up to 3 minutes for the heat
# stack-list to appear after the heat services restart below.
echo "manual" | sudo tee /etc/init/heat-api.override
echo "manual" | sudo tee /etc/init/heat-api-cfn.override
echo "manual" | sudo tee /etc/init/heat-engine.override
sudo apt-get install -y heat-api heat-api-cfn heat-engine
function get_database_url {
local db_user=$HEAT_DB_USER
@@ -140,9 +148,10 @@ iniset_sudo $conf oslo_messaging_rabbit rabbit_password "$RABBIT_PASS"
# Configure [keystone_authtoken] section.
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
iniset_sudo $conf keystone_authtoken auth_url http://controller:35357
iniset_sudo $conf keystone_authtoken auth_plugin password
iniset_sudo $conf keystone_authtoken project_domain_id default
iniset_sudo $conf keystone_authtoken user_domain_id default
iniset_sudo $conf keystone_authtoken memcached_servers controller:11211
iniset_sudo $conf keystone_authtoken auth_type password
iniset_sudo $conf keystone_authtoken project_domain_name default
iniset_sudo $conf keystone_authtoken user_domain_name default
iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken username "$heat_admin_user"
iniset_sudo $conf keystone_authtoken password "$HEAT_PASS"
@@ -152,10 +161,10 @@ iniset_sudo $conf trustee auth_plugin password
iniset_sudo $conf trustee auth_url http://controller:35357
iniset_sudo $conf trustee username "$heat_admin_user"
iniset_sudo $conf trustee password "$HEAT_PASS"
iniset_sudo $conf trustee user_domain_id default
iniset_sudo $conf trustee user_domain_name default
# Configure [clients_keystone] section.
iniset_sudo $conf clients_keystone auth_uri http://controller:5000
iniset_sudo $conf clients_keystone auth_uri http://controller:35357
# Configure [ec2authtoken] section.
iniset_sudo $conf ec2authtoken auth_uri http://controller:5000
@@ -168,27 +177,39 @@ iniset_sudo $conf DEFAULT heat_waitcondition_server_url http://controller:8000/v
iniset_sudo $conf DEFAULT stack_domain_admin heat_domain_admin
iniset_sudo $conf DEFAULT stack_domain_admin_password "$HEAT_DOMAIN_PASS"
iniset_sudo $conf DEFAULT stack_user_domain_name heat
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
echo "Creating the database tables for heat."
sudo heat-manage db_sync
echo "Restarting heat service."
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Finalize installation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Re-enable automatic start of heat services
sudo rm /etc/init/heat-api.override
sudo rm /etc/init/heat-api-cfn.override
sudo rm /etc/init/heat-engine.override
echo "Restarting heat services."
STARTTIME=$(date +%s)
sudo service heat-api restart
sudo service heat-api-cfn restart
sudo service heat-engine restart
echo "Waiting for heat stack-list."
echo -n "Waiting for heat stack-list."
until heat stack-list; do
sleep 1
echo -n .
done
ENDTIME=$(date +%s)
echo "Restarting heat servies took $((ENDTIME - STARTTIME)) seconds."
echo "Removing default SQLite database."
sudo rm -f /var/lib/heat/heat.sqlite
#------------------------------------------------------------------------------
# Verify operation of Orchestration Service (heat).
# http://docs.openstack.org/liberty/install-guide-ubuntu/heat-verify.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/heat-verify.html
#------------------------------------------------------------------------------
echo "Listing service components."

View File

@@ -13,15 +13,16 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up OpenStack Dashboard (horizon)
# http://docs.openstack.org/liberty/install-guide-ubuntu/horizon-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/horizon-install.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Install and configure components
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing horizon."
sudo apt-get install -y openstack-dashboard
echo "Purging Ubuntu theme."
sudo dpkg --purge openstack-dashboard-ubuntu-theme
# Edit the /etc/openstack-dashboard/local_settings.py file.
conf=/etc/openstack-dashboard/local_settings.py
auth_host=controller
@@ -29,29 +30,77 @@ auth_host=controller
echo "Setting OPENSTACK_HOST = \"$auth_host\"."
iniset_sudo_no_section $conf "OPENSTACK_HOST" "\"$auth_host\""
echo -n "Allowed hosts: "
echo "Allowing all hosts to access the dashboard: "
iniset_sudo_no_section $conf "ALLOWED_HOSTS" "['*', ]"
echo "Telling horizon to use the cache for sessions."
iniset_sudo_no_section $conf "SESSION_ENGINE" "'django.contrib.sessions.backends.cache'"
echo "Setting interface location of memcached."
sudo sed -i "/LOCATION/ s/127.0.0.1/controller/" $conf
echo "Comparing $conf to memcached.conf."
memcached_conf=/etc/memcached.conf
# Port is a number on line starting with "-p "
port=$(grep -Po -- '(?<=^-p )\d+' $memcached_conf)
# Interface is an IP address on line starting with "-l "
interface=$(grep -Po -- '(?<=^-l )[\d\.]+' $memcached_conf)
interface_ip=$(grep -Po -- '(?<=^-l )[\d\.]+' $memcached_conf)
echo "memcached listening on $interface:$port."
echo "memcached listening on $interface_ip:$port."
# Line should read something like: 'LOCATION' : '127.0.0.1:11211',
if grep "LOCATION.*$interface:$port" $conf; then
# Turn IP address into corresponding host name
interface_name=$(getent hosts "$auth_host" | awk '{ print $2 }')
# Line should read something like: 'LOCATION' : 'controller:11211',
if grep "LOCATION.*$interface_name:$port" $conf; then
echo "$conf agrees."
else
echo >&2 "$conf disagrees. Aborting."
exit 1
fi
# Configure user as the default role for users created via dashboard.
echo "CACHES configuration in $conf:"
awk '/^CACHES =/,/^}/' $conf
echo "Enabling Identity API version 3."
iniset_sudo_no_section $conf "OPENSTACK_KEYSTONE_URL" '"http://%s:5000/v3" % OPENSTACK_HOST'
echo "Enabling support for domains."
iniset_sudo_no_section $conf "OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT" True
cat << API | sudo tee -a $conf
# Use Keystone V3 API for dashboard login.
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
}
API
echo "Configuring 'default' as the default domain for users created via " \
"dashboard."
iniset_sudo_no_section $conf "OPENSTACK_KEYSTONE_DEFAULT_DOMAIN" '"default"'
echo "Configuring 'user' as the default role for users created via dashboard."
iniset_sudo_no_section $conf "OPENSTACK_KEYSTONE_DEFAULT_ROLE" '"user"'
# Here, we would disable layer-3 networking servies for networking option 1.
echo "Setting timezone to UTC."
iniset_sudo_no_section $conf "TIME_ZONE" '"UTC"'
echo "Reloading apache and memcached service."
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Customize Horizon
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Removing default Ubuntu theme."
sudo apt-get remove --auto-remove -y openstack-dashboard-ubuntu-theme
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Finalize installation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Reloading the web server configuration."
sudo service apache2 reload

View File

@@ -15,7 +15,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up keystone for controller node
# http://docs.openstack.org/liberty/install-guide-ubuntu/keystone-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-install.html
#------------------------------------------------------------------------------
echo "Setting up database for keystone."
@@ -31,12 +31,8 @@ echo "$ADMIN_TOKEN"
echo "Disabling the keystone service from starting automatically after installation."
echo "manual" | sudo tee /etc/init/keystone.override
echo "Installing python openstack client"
sudo apt-get install -y python-openstackclient
echo "Installing keystone."
sudo apt-get install -y keystone apache2 \
libapache2-mod-wsgi memcached python-memcache
echo "Installing keystone packages."
sudo apt-get install -y keystone apache2 libapache2-mod-wsgi
conf=/etc/keystone/keystone.conf
echo "Configuring [DEFAULT] section in $conf."
@@ -58,26 +54,22 @@ echo "Configuring [database] section in /etc/keystone/keystone.conf."
echo "Setting database connection: $database_url."
iniset_sudo $conf database connection "$database_url"
echo "Configuring the Memcache service."
iniset_sudo $conf memcache servers localhost:11211
echo "Configuring the UUID token provider and SQL driver."
iniset_sudo $conf token provider uuid
iniset_sudo $conf token driver memcache
echo "Configuring the SQL revocation driver."
iniset_sudo $conf revoke driver sql
echo "Enabling verbose logging."
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
echo "Configuring the Fernet token provider."
iniset_sudo $conf token provider fernet
echo "Creating the database tables for keystone."
sudo keystone-manage db_sync
echo "Initializing Fernet keys."
sudo keystone-manage fernet_setup \
--keystone-user keystone \
--keystone-group keystone
# Configure Apache HTTP server.
echo "Configuring ServerName option in /etc/apache2/apache2.conf to reference controller node."
echo "ServerName controller" | sudo tee -a /etc/apache2/apache2.conf
conf=/etc/apache2/apache2.conf
echo "Configuring ServerName option in $conf to reference controller node."
echo "ServerName controller" | sudo tee -a $conf
echo "Creating /etc/apache2/sites-available/wsgi-keystone.conf."
cat << WSGI | sudo tee -a /etc/apache2/sites-available/wsgi-keystone.conf
@@ -143,14 +135,22 @@ sudo rm -f /var/lib/keystone/keystone.db
#------------------------------------------------------------------------------
# Create the service entity and API endpoints
# http://docs.openstack.org/liberty/install-guide-ubuntu/keystone-services.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-services.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Prerequisites
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Using OS_TOKEN, OS_URL for authentication."
export OS_TOKEN=$ADMIN_TOKEN
export OS_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create the service entity and API endpoints
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Creating keystone service."
openstack service create \
--name keystone \
@@ -159,22 +159,27 @@ openstack service create \
echo "Creating endpoints for keystone."
openstack endpoint create --region "$REGION" \
identity public http://controller:5000/v2.0
identity public http://controller:5000/v3
openstack endpoint create --region "$REGION" \
identity internal http://controller:5000/v2.0
identity internal http://controller:5000/v3
openstack endpoint create --region "$REGION" \
identity admin http://controller:35357/v2.0
identity admin http://controller:35357/v3
#------------------------------------------------------------------------------
# Create projects, users, and roles
# http://docs.openstack.org/liberty/install-guide-ubuntu/keystone-users.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-users.html
#------------------------------------------------------------------------------
# Wait for keystone to come up
wait_for_keystone
echo "Creating default domain."
openstack domain create \
--description "Default Domain" \
default
echo "Creating admin project."
openstack project create --domain default \
--description "Admin Project" \
@@ -221,7 +226,7 @@ openstack role add \
#------------------------------------------------------------------------------
# Verify operation
# http://docs.openstack.org/liberty/install-guide-ubuntu/keystone-verify.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-verify.html
#------------------------------------------------------------------------------
echo "Verifying keystone installation."
@@ -242,67 +247,73 @@ unset OS_TOKEN OS_URL
echo "Requesting an authentication token as an admin user."
openstack \
--os-auth-url http://controller:35357/v3 \
--os-project-domain-id default \
--os-user-domain-id default \
--os-project-domain-name default \
--os-user-domain-name default \
--os-project-name "$ADMIN_PROJECT_NAME" \
--os-username "$ADMIN_USER_NAME" \
--os-auth-type password \
--os-password "$ADMIN_PASS" \
token issue
echo "Requesting project list."
openstack \
--os-auth-url http://controller:35357 \
--os-project-name "$ADMIN_PROJECT_NAME" \
--os-username "$ADMIN_USER_NAME" \
--os-auth-type password \
--os-password "$ADMIN_PASS" \
project list
echo "Requesting user list."
openstack \
--os-auth-url http://controller:35357 \
--os-project-name "$ADMIN_PROJECT_NAME" \
--os-username "$ADMIN_USER_NAME" \
--os-auth-type password \
--os-password "$ADMIN_PASS" \
user list
echo "Requesting role list."
openstack \
--os-auth-url http://controller:35357 \
--os-project-name "$ADMIN_PROJECT_NAME" \
--os-username "$ADMIN_USER_NAME" \
--os-auth-type password \
--os-password "$ADMIN_PASS" \
role list
#echo "Requesting project list."
#openstack \
# --os-auth-url http://controller:35357 \
# --os-project-domain-name default \
# --os-user-domain-name default \
# --os-project-name "$ADMIN_PROJECT_NAME" \
# --os-username "$ADMIN_USER_NAME" \
# --os-auth-type password \
# --os-password "$ADMIN_PASS" \
# project list
#
#echo "Requesting user list."
#openstack \
# --os-auth-url http://controller:35357/v3 \
# --os-project-domain-name default \
# --os-user-domain-name default \
# --os-project-name "$ADMIN_PROJECT_NAME" \
# --os-username "$ADMIN_USER_NAME" \
# --os-auth-type password \
# --os-password "$ADMIN_PASS" \
# user list
#
#echo "Requesting role list."
#openstack \
# --os-auth-url http://controller:35357/v3 \
# --os-project-domain-name default \
# --os-user-domain-name default \
# --os-project-name "$ADMIN_PROJECT_NAME" \
# --os-username "$ADMIN_USER_NAME" \
# --os-auth-type password \
# --os-password "$ADMIN_PASS" \
# role list
echo "Requesting an authentication token for the demo user."
openstack \
--os-auth-url http://controller:5000/v3 \
--os-project-domain-id default \
--os-user-domain-id default \
--os-project-domain-name default \
--os-user-domain-name default \
--os-project-name "$DEMO_PROJECT_NAME" \
--os-username "$DEMO_USER_NAME" \
--os-auth-type password \
--os-password "$DEMO_PASS" \
token issue
echo "Verifying that an admin-only request by the demo user is denied."
openstack \
--os-auth-url http://controller:5000 \
--os-project-domain-id default \
--os-user-domain-id default \
--os-project-name "$DEMO_PROJECT_NAME" \
--os-username "$DEMO_USER_NAME" \
--os-auth-type password \
--os-password "$DEMO_PASS" \
user list || rc=$?
echo rc=$rc
if [ $rc -eq 0 ]; then
echo "The request was not denied. This is an error. Exiting."
exit 1
else
echo "The request was correctly denied."
fi
#echo "Verifying that an admin-only request by the demo user is denied."
#openstack \
# --os-auth-url http://controller:5000/v3 \
# --os-project-domain-name default \
# --os-user-domain-name default \
# --os-project-name "$DEMO_PROJECT_NAME" \
# --os-username "$DEMO_USER_NAME" \
# --os-auth-type password \
# --os-password "$DEMO_PASS" \
# user list || rc=$?
#
#echo rc=$rc
#if [ $rc -eq 0 ]; then
# echo "The request was not denied. This is an error. Exiting."
# exit 1
#else
# echo "The request was correctly denied."
#fi

View File

@@ -15,11 +15,15 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up OpenStack Networking (neutron) for compute node.
# http://docs.openstack.org/liberty/install-guide-ubuntu/neutron-compute-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-compute-install.html
#------------------------------------------------------------------------------
echo "Installing networking components for compute node."
sudo apt-get install -y neutron-plugin-linuxbridge-agent
sudo apt-get install -y neutron-linuxbridge-agent
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure the common component
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring neutron for compute node."
@@ -41,11 +45,10 @@ neutron_admin_user=$(service_to_user_name neutron)
# Configuring [keystone_authtoken] section
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
iniset_sudo $conf keystone_authtoken auth_url http://controller:35357
iniset_sudo $conf keystone_authtoken auth_plugin password
iniset_sudo $conf keystone_authtoken project_domain_id default
iniset_sudo $conf keystone_authtoken user_domain_id default
iniset_sudo $conf keystone_authtoken memcached_servers controller:11211
iniset_sudo $conf keystone_authtoken auth_type password
iniset_sudo $conf keystone_authtoken project_domain_name default
iniset_sudo $conf keystone_authtoken user_domain_name default
iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken username "$neutron_admin_user"
iniset_sudo $conf keystone_authtoken password "$NEUTRON_PASS"
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"

View File

@@ -15,31 +15,49 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up OpenStack Networking (neutron) for compute node.
# http://docs.openstack.org/liberty/install-guide-ubuntu/neutron-compute-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-compute-install.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure Compute to use Networking
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
neutron_admin_user=$(service_to_user_name neutron)
echo "Configuring Compute to use Networking."
conf=/etc/nova/nova.conf
iniset_sudo $conf neutron url http://controller:9696
iniset_sudo $conf neutron auth_url http://controller:35357
# No complaints without auth_type
#iniset_sudo $conf neutron auth_type password
# without this auth_plugin, launch vm failed (image not found, flavor not found etc.)
iniset_sudo $conf neutron auth_plugin password
iniset_sudo $conf neutron project_domain_id default
iniset_sudo $conf neutron user_domain_id default
iniset_sudo $conf neutron project_domain_name default
iniset_sudo $conf neutron user_domain_name default
iniset_sudo $conf neutron region_name "$REGION"
iniset_sudo $conf neutron project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf neutron username "$neutron_admin_user"
iniset_sudo $conf neutron password "$NEUTRON_PASS"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Finalize installation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Restarting the Compute service."
sudo service nova-compute restart
echo "Restarting neutron-plugin-linuxbridge-agent."
sudo service neutron-plugin-linuxbridge-agent restart
echo "Restarting neutron-linuxbridge-agent."
sudo service neutron-linuxbridge-agent restart
#------------------------------------------------------------------------------
# Networking Option 2: Self-service networks
# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-verify-option2.html
#------------------------------------------------------------------------------
echo "Sourcing the admin credentials."
source "$CONFIG_DIR/admin-openstackrc.sh"
echo "List agents to verify successful launch of the neutron agents."
echo "neutron agent-list"
neutron agent-list

View File

@@ -14,7 +14,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up OpenStack Networking (neutron) for controller node.
# http://docs.openstack.org/liberty/install-guide-ubuntu/neutron-controller-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-controller-install.html
#------------------------------------------------------------------------------
echo "Setting up database for neutron."

View File

@@ -14,7 +14,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up OpenStack Networking (neutron) for controller node.
# http://docs.openstack.org/liberty/install-guide-ubuntu/neutron-controller-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-controller-install.html
#------------------------------------------------------------------------------
source "$CONFIG_DIR/admin-openstackrc.sh"
@@ -24,14 +24,18 @@ neutron_admin_user=$(service_to_user_name neutron)
# Wait for keystone to come up
wait_for_keystone
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure the metadata agent
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring the metadata agent."
conf=/etc/neutron/metadata_agent.ini
iniset_sudo $conf DEFAULT auth_uri http://controller:5000
iniset_sudo $conf DEFAULT auth_url http://controller:35357
iniset_sudo $conf DEFAULT auth_region "$REGION"
iniset_sudo $conf DEFAULT auth_plugin password
iniset_sudo $conf DEFAULT project_domain_id default
iniset_sudo $conf DEFAULT user_domain_id default
iniset_sudo $conf DEFAULT auth_type password
iniset_sudo $conf DEFAULT project_domain_name default
iniset_sudo $conf DEFAULT user_domain_name default
iniset_sudo $conf DEFAULT project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf DEFAULT username "$neutron_admin_user"
iniset_sudo $conf DEFAULT password "$NEUTRON_PASS"
@@ -40,15 +44,22 @@ iniset_sudo $conf DEFAULT nova_metadata_ip controller
iniset_sudo $conf DEFAULT metadata_proxy_shared_secret "$METADATA_SECRET"
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure Compute to use Networking
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring Compute to use Networking."
conf=/etc/nova/nova.conf
iniset_sudo $conf neutron url http://controller:9696
iniset_sudo $conf neutron auth_url http://controller:35357
# no complaints without auth_type
#iniset_sudo $conf neutron auth_type password
# without this auth_plugin line, we get
# Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible.
# <class 'neutronclient.common.exceptions.Unauthorized'> (HTTP 500) (Request-ID: req-1ac10a31-4da0-4bdc-8f9f-7d941b408072)
iniset_sudo $conf neutron auth_plugin password
iniset_sudo $conf neutron project_domain_id default
iniset_sudo $conf neutron user_domain_id default
iniset_sudo $conf neutron project_domain_name default
iniset_sudo $conf neutron user_domain_name default
iniset_sudo $conf neutron region_name "$REGION"
iniset_sudo $conf neutron project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf neutron username "$neutron_admin_user"
@@ -57,6 +68,10 @@ iniset_sudo $conf neutron password "$NEUTRON_PASS"
iniset_sudo $conf neutron service_metadata_proxy True
iniset_sudo $conf neutron metadata_proxy_shared_secret "$METADATA_SECRET"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Finalize installation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sudo neutron-db-manage \
--config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini \
@@ -68,8 +83,8 @@ sudo service nova-api restart
echo "Restarting neutron-server."
sudo service neutron-server restart
echo "Restarting neutron-plugin-linuxbridge-agent."
sudo service neutron-plugin-linuxbridge-agent restart
echo "Restarting neutron-linuxbridge-agent."
sudo service neutron-linuxbridge-agent restart
echo "Restarting neutron-dhcp-agent."
sudo service neutron-dhcp-agent restart
@@ -86,6 +101,11 @@ fi
echo "Removing default SQLite database."
sudo rm -f /var/lib/neutron/neutron.sqlite
#------------------------------------------------------------------------------
# Set up OpenStack Networking (neutron) for controller node.
# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-verify.html
#------------------------------------------------------------------------------
echo "Verifying operation."
until neutron ext-list >/dev/null 2>&1; do
sleep 1

View File

@@ -15,13 +15,18 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up OpenStack Compute (nova) for compute node.
# http://docs.openstack.org/liberty/install-guide-ubuntu/nova-compute-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/nova-compute-install.html
#------------------------------------------------------------------------------
echo "Installing nova for compute node."
# TODO Option to use nova-compute instead if we are inside KVM VM
# We can't use KVM inside VirtualBox.
sudo apt-get install -y nova-compute-qemu sysfsutils
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# NOTE We deviate slightly from the install-guide here because inside our VMs,
# we cannot use KVM inside VirtualBox.
# TODO Add option to use nova-compute instead if we are inside a VM that allows
# using KVM.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
sudo apt-get install -y nova-compute-qemu
echo "Configuring nova for compute node."
@@ -46,33 +51,39 @@ MY_MGMT_IP=$(get_node_ip_in_network "$(hostname)" "mgmt")
# Configure [keystone_authtoken] section.
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
iniset_sudo $conf keystone_authtoken auth_url http://controller:35357
iniset_sudo $conf keystone_authtoken auth_plugin password
iniset_sudo $conf keystone_authtoken project_domain_id default
iniset_sudo $conf keystone_authtoken user_domain_id default
iniset_sudo $conf keystone_authtoken memcached_servers controller:11211
iniset_sudo $conf keystone_authtoken auth_type password
iniset_sudo $conf keystone_authtoken project_domain_name default
iniset_sudo $conf keystone_authtoken user_domain_name default
iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken username "$nova_admin_user"
iniset_sudo $conf keystone_authtoken password "$NOVA_PASS"
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT my_ip "$MY_MGMT_IP"
iniset_sudo $conf DEFAULT network_api_class nova.network.neutronv2.api.API
iniset_sudo $conf DEFAULT security_group_api neutron
iniset_sudo $conf DEFAULT linuxnet_interface_driver nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
iniset_sudo $conf DEFAULT use_neutron True
iniset_sudo $conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
# Configure [vnc] section.
iniset_sudo $conf vnc vnc_enabled True
iniset_sudo $conf vnc vncserver_listen 0.0.0.0
iniset_sudo $conf vnc vncserver_proxyclient_address '$my_ip'
# Using IP address because the host running the browser may not be able to
# resolve the host name "controller"
iniset_sudo $conf vnc novncproxy_base_url http://"$(hostname_to_ip controller)":6080/vnc_auto.html
# Configure [glance] section.
iniset_sudo $conf glance host controller
iniset_sudo $conf glance api_servers http://controller:9292
# Configure [oslo_concurrency] section.
iniset_sudo $conf oslo_concurrency lock_path /var/lib/nova/tmp
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
# Delete logdir line
sudo sed -i "/^logdir/ d" $conf
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Finalize installation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure nova-compute.conf
conf=/etc/nova/nova-compute.conf

View File

@@ -14,12 +14,19 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Install Compute controller services
# http://docs.openstack.org/liberty/install-guide-ubuntu/nova-controller-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/nova-controller-install.html
#------------------------------------------------------------------------------
echo "Setting up database for nova."
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Prerequisites
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Setting up database nova."
setup_database nova "$NOVA_DB_USER" "$NOVA_DBPASS"
echo "Setting up database nova_api."
setup_database nova_api "$NOVA_DB_USER" "$NOVA_DBPASS"
echo "Sourcing the admin credentials."
source "$CONFIG_DIR/admin-openstackrc.sh"
@@ -48,38 +55,42 @@ openstack service create \
echo "Creating nova endpoints."
openstack endpoint create \
--region "$REGION" \
compute public http://controller:8774/v2/%\(tenant_id\)s
compute public http://controller:8774/v2.1/%\(tenant_id\)s
openstack endpoint create \
--region "$REGION" \
compute internal http://controller:8774/v2/%\(tenant_id\)s
compute internal http://controller:8774/v2.1/%\(tenant_id\)s
openstack endpoint create \
--region "$REGION" \
compute admin http://controller:8774/v2/%\(tenant_id\)s
compute admin http://controller:8774/v2.1/%\(tenant_id\)s
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Install and configure components
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing nova for controller node."
sudo apt-get install -y \
nova-api nova-cert nova-conductor nova-consoleauth \
nova-novncproxy nova-scheduler python-novaclient
function get_database_url {
local db_user=$NOVA_DB_USER
local database_host=controller
echo "mysql+pymysql://$db_user:$NOVA_DBPASS@$database_host/nova"
}
database_url=$(get_database_url)
sudo apt-get install -y nova-api nova-cert nova-conductor \
nova-consoleauth nova-novncproxy nova-scheduler
conf=/etc/nova/nova.conf
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT enabled_apis osapi_compute,metadata
# Configure [api_database] section.
database_url="mysql+pymysql://$NOVA_DB_USER:$NOVA_DBPASS@controller/nova_api"
echo "Setting API database connection: $database_url."
iniset_sudo $conf api_database connection "$database_url"
# Configure [database] section.
database_url="mysql+pymysql://$NOVA_DB_USER:$NOVA_DBPASS@controller/nova"
echo "Setting database connection: $database_url."
iniset_sudo $conf database connection "$database_url"
echo "Configuring nova services."
# Default Section.
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT rpc_backend rabbit
# Configure [oslo_messaging_rabbit] section.
@@ -93,40 +104,40 @@ iniset_sudo $conf DEFAULT auth_strategy keystone
# Configure [keystone_authtoken] section.
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
iniset_sudo $conf keystone_authtoken auth_url http://controller:35357
iniset_sudo $conf keystone_authtoken auth_plugin password
iniset_sudo $conf keystone_authtoken project_domain_id default
iniset_sudo $conf keystone_authtoken user_domain_id default
iniset_sudo $conf keystone_authtoken memcached_servers controller:11211
iniset_sudo $conf keystone_authtoken auth_type password
iniset_sudo $conf keystone_authtoken project_domain_name default
iniset_sudo $conf keystone_authtoken user_domain_name default
iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken username "$nova_admin_user"
iniset_sudo $conf keystone_authtoken password "$NOVA_PASS"
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT my_ip "$(hostname_to_ip controller)"
iniset_sudo $conf DEFAULT network_api_class nova.network.neutronv2.api.API
iniset_sudo $conf DEFAULT security_group_api neutron
iniset_sudo $conf DEFAULT linuxnet_interface_driver \
nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
iniset_sudo $conf DEFAULT \
firewall_driver nova.virt.firewall.NoopFirewallDriver
iniset_sudo $conf DEFAULT use_neutron True
iniset_sudo $conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
# Configure [VNC] section.
iniset_sudo $conf vnc vncserver_listen '$my_ip'
iniset_sudo $conf vnc vncserver_proxyclient_address '$my_ip'
# Configure [glance] section.
iniset_sudo $conf glance host controller
iniset_sudo $conf glance api_servers http://controller:9292
# Configure [oslo_concurrency] section.
iniset_sudo $conf oslo_concurrency lock_path /var/lib/nova/tmp
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT enabled_apis osapi_compute,metadata
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
# Delete logdir line
sudo sed -i "/^logdir/ d" $conf
echo "Creating the database tables for nova."
sudo nova-manage api_db sync
sudo nova-manage db sync
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Finalize installation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Restarting nova services."
declare -a nova_services=(nova-api nova-cert nova-consoleauth \
nova-scheduler nova-conductor nova-novncproxy)
@@ -146,7 +157,7 @@ sudo rm -f /var/lib/nova/nova.sqlite
echo "Verify nova service status."
echo "Checking nova services."
loop=0
until nova service-list 2>/dev/null; do
until openstack service list 2>/dev/null; do
echo -n .
loop=$((loop+1))
if ((loop%10 == 0)); then
@@ -157,8 +168,7 @@ until nova service-list 2>/dev/null; do
done
echo "Checking nova endpoints."
nova endpoints
openstack catalog list
echo "Checking nova images."
nova image-list
openstack image list

View File

@@ -14,16 +14,20 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Networking Option 2: Self-service networks
# http://docs.openstack.org/liberty/install-guide-ubuntu/neutron-compute-install-option2.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-compute-install-option2.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure the Linux bridge agent
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring the Linux bridge agent."
conf=/etc/neutron/plugins/ml2/linuxbridge_agent.ini
# Edit the [linux_bridge] section.
# TODO Better method of getting interface name
PUBLIC_INTERFACE_NAME=eth2
iniset_sudo $conf linux_bridge physical_interface_mappings public:$PUBLIC_INTERFACE_NAME
iniset_sudo $conf linux_bridge physical_interface_mappings provider:$PUBLIC_INTERFACE_NAME
# Edit the [vxlan] section.
OVERLAY_INTERFACE_IP_ADDRESS=$(get_node_ip_in_network "$(hostname)" "mgmt")

View File

@@ -15,14 +15,18 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Networking Option 2: Self-service networks
# http://docs.openstack.org/liberty/install-guide-ubuntu/neutron-controller-install-option2.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-controller-install-option2.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Install the components
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing additional packages for self-service networks."
sudo apt-get install -y \
neutron-server neutron-plugin-ml2 \
neutron-plugin-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent \
neutron-metadata-agent python-neutronclient
neutron-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent \
neutron-metadata-agent
echo "Configuring neutron for controller node."
function get_database_url {
@@ -50,6 +54,7 @@ iniset_sudo $conf database connection "$database_url"
iniset_sudo $conf DEFAULT core_plugin ml2
iniset_sudo $conf DEFAULT service_plugins router
iniset_sudo $conf DEFAULT allow_overlapping_ips True
iniset_sudo $conf DEFAULT rpc_backend rabbit
# Configure [oslo_messaging_rabbit] section.
@@ -63,9 +68,10 @@ iniset_sudo $conf DEFAULT auth_strategy keystone
# Configuring [keystone_authtoken] section.
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
iniset_sudo $conf keystone_authtoken auth_url http://controller:35357
iniset_sudo $conf keystone_authtoken auth_plugin password
iniset_sudo $conf keystone_authtoken project_domain_id default
iniset_sudo $conf keystone_authtoken user_domain_id default
iniset_sudo $conf keystone_authtoken memcached_servers controller:11211
iniset_sudo $conf keystone_authtoken auth_type password
iniset_sudo $conf keystone_authtoken project_domain_name default
iniset_sudo $conf keystone_authtoken user_domain_name default
iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken username "$neutron_admin_user"
iniset_sudo $conf keystone_authtoken password "$NEUTRON_PASS"
@@ -77,15 +83,17 @@ iniset_sudo $conf DEFAULT nova_url http://controller:8774/v2
# Configure [nova] section.
iniset_sudo $conf nova auth_url http://controller:35357
iniset_sudo $conf nova auth_plugin password
iniset_sudo $conf nova project_domain_id default
iniset_sudo $conf nova user_domain_id default
iniset_sudo $conf nova auth_type password
iniset_sudo $conf nova project_domain_name default
iniset_sudo $conf nova user_domain_name default
iniset_sudo $conf nova region_name "$REGION"
iniset_sudo $conf nova project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf nova username "$nova_admin_user"
iniset_sudo $conf nova password "$NOVA_PASS"
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure the Modular Layer 2 (ML2) plug-in
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring the Modular Layer 2 (ML2) plug-in."
conf=/etc/neutron/plugins/ml2/ml2_conf.ini
@@ -97,21 +105,24 @@ iniset_sudo $conf ml2 mechanism_drivers linuxbridge,l2population
iniset_sudo $conf ml2 extension_drivers port_security
# Edit the [ml2_type_flat] section.
iniset_sudo $conf ml2_type_flat flat_networks public
iniset_sudo $conf ml2_type_flat flat_networks provider
iniset_sudo $conf ml2_type_vxlan vni_ranges 1:1000
# Edit the [securitygroup] section.
iniset_sudo $conf securitygroup enable_ipset True
# Configure the linuxbridge_agent.ini file.
echo "Configuring Linux Bridge agent"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure the Linux bridge agent
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring Linux Bridge agent."
conf=/etc/neutron/plugins/ml2/linuxbridge_agent.ini
# Edit the [linux_bridge] section.
# TODO Better method of getting interface name
PUBLIC_INTERFACE_NAME=eth2
iniset_sudo $conf linux_bridge physical_interface_mappings public:$PUBLIC_INTERFACE_NAME
iniset_sudo $conf linux_bridge physical_interface_mappings provider:$PUBLIC_INTERFACE_NAME
# Edit the [vxlan] section.
OVERLAY_INTERFACE_IP_ADDRESS=$(get_node_ip_in_network "$(hostname)" "mgmt")
@@ -126,6 +137,10 @@ iniset_sudo $conf agent prevent_arp_spoofing True
iniset_sudo $conf securitygroup enable_security_group True
iniset_sudo $conf securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure the layer-3 agent
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring the layer-3 agent."
conf=/etc/neutron/l3_agent.ini
iniset_sudo $conf DEFAULT interface_driver neutron.agent.linux.interface.BridgeInterfaceDriver
@@ -133,14 +148,17 @@ iniset_sudo $conf DEFAULT interface_driver neutron.agent.linux.interface.BridgeI
# The external_network_bridge option intentionally lacks a value to enable
# multiple external networks on a single agent.
iniset_sudo $conf DEFAULT external_network_bridge ""
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure the DHCP agent
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring the DHCP agent."
conf=/etc/neutron/dhcp_agent.ini
iniset_sudo $conf DEFAULT interface_driver neutron.agent.linux.interface.BridgeInterfaceDriver
iniset_sudo $conf DEFAULT dhcp_driver neutron.agent.linux.dhcp.Dnsmasq
iniset_sudo $conf DEFAULT enable_isolated_metadata True
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
iniset_sudo $conf DEFAULT dnsmasq_config_file /etc/neutron/dnsmasq-neutron.conf
cat << DNSMASQ | sudo tee /etc/neutron/dnsmasq-neutron.conf

View File

@@ -14,8 +14,8 @@ exec_logfile
indicate_current_auto
#------------------------------------------------------------------------------
# Install the Telemetry service
# http://docs.openstack.org/kilo/install-guide/install/apt/content/ceilometer-nova.html
# Enable Compute service meters
# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-nova.html
#------------------------------------------------------------------------------
echo "Installing ceilometer."
@@ -23,12 +23,10 @@ sudo apt-get install -y ceilometer-agent-compute
ceilometer_admin_user=$(service_to_user_name ceilometer)
echo "Configuring ceilometer.conf."
conf=/etc/ceilometer/ceilometer.conf
echo "Configuring $conf."
iniset_sudo $conf publisher telemetry_secret "$TELEMETRY_SECRET"
# Configure RabbitMQ variables
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT rpc_backend rabbit
# Configure [oslo_messaging_rabbit] section.
@@ -36,22 +34,30 @@ iniset_sudo $conf oslo_messaging_rabbit rabbit_host controller
iniset_sudo $conf oslo_messaging_rabbit rabbit_userid openstack
iniset_sudo $conf oslo_messaging_rabbit rabbit_password "$RABBIT_PASS"
# Configure [ketstone_authtoken] section.
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000/v2.0
iniset_sudo $conf keystone_authtoken identity_uri http://controller:35357
iniset_sudo $conf keystone_authtoken admin_tenant_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken admin_user "$ceilometer_admin_user"
iniset_sudo $conf keystone_authtoken admin_password "$CEILOMETER_PASS"
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT auth_strategy keystone
# Configure [keystone_authtoken] section.
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
iniset_sudo $conf keystone_authtoken auth_url http://controller:35357
iniset_sudo $conf keystone_authtoken memcached_servers controller:11211
iniset_sudo $conf keystone_authtoken auth_type password
iniset_sudo $conf keystone_authtoken project_domain_name default
iniset_sudo $conf keystone_authtoken user_domain_name default
iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken username "$ceilometer_admin_user"
iniset_sudo $conf keystone_authtoken password "$CEILOMETER_PASS"
# Configure [service_credentials] section.
iniset_sudo $conf service_credentials os_auth_url http://controller:5000/v2.0
iniset_sudo $conf service_credentials os_username "$ceilometer_admin_user"
iniset_sudo $conf service_credentials os_tenant_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf service_credentials os_password "$CEILOMETER_PASS"
iniset_sudo $conf service_credentials os_endpoint_type internalURL
iniset_sudo $conf service_credentials os_region_name "$REGION"
iniset_sudo $conf service_credentials interface internalURL
iniset_sudo $conf service_credentials region_name "$REGION"
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
# Marked "optional" in install-guide
iniset_sudo $conf DEFAULT verbose True
echo "Configuring nova.conf."
conf=/etc/ceilometer/ceilometer.conf
@@ -69,44 +75,51 @@ echo "Restarting compute service."
sudo service nova-compute restart
#------------------------------------------------------------------------------
# Configure the Block Storage service(cinder-volume)
# http://docs.openstack.org/kilo/install-guide/install/apt/content/ceilometer-cinder.html
# Enable Block Storage meters
# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-cinder.html
#------------------------------------------------------------------------------
# Configure the Block Storage Service to send notifications to the message bus
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure Cinder to use Telemetry
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring cinder.conf."
conf=/etc/cinder/cinder.conf
echo "Configuring $conf."
iniset_sudo $conf DEFAULT control_exchange cinder
iniset_sudo $conf DEFAULT notification_driver messagingv2
iniset_sudo $conf oslo_messaging_notifications driver messagingv2
echo "Restarting cinder-volumes service."
sudo service cinder-volume restart
#------------------------------------------------------------------------------
# Verify the Telemetry installation
# http://docs.openstack.org/kilo/install-guide/install/apt/content/ceilometer-verify.html
# Verify operation
# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-verify.html
#------------------------------------------------------------------------------
echo "Verifying the telemetry installation."
echo "Verifying the Telemetry installation."
AUTH="source $CONFIG_DIR/admin-openstackrc.sh"
echo "Waiting for ceilometer to start."
echo -n "Waiting for ceilometer to start."
until node_ssh controller "$AUTH; ceilometer meter-list" >/dev/null 2>&1; do
sleep 1
echo -n .
done
echo
echo "List available meters."
echo "Listing available meters."
node_ssh controller "$AUTH; ceilometer meter-list"
echo "Download an image from the Image Service."
img_name=$(basename "$CIRROS_URL" -disk.img)
node_ssh controller "$AUTH; glance image-download \"$img_name\" > /tmp/cirros.img"
echo "Downloading an image from the Image service."
IMAGE_ID=$(node_ssh controller "$AUTH; glance image-list | grep 'cirros' | awk '{ print \$2 }'")
echo "IMAGE_ID: $IMAGE_ID"
node_ssh controller "$AUTH; glance image-download \"$IMAGE_ID\"" > /tmp/cirros.img
echo "List available meters again to validate detection of the image download."
echo "Listing available meters again to validate detection of the image download."
node_ssh controller "$AUTH; ceilometer meter-list"
echo "Retrieve usage statistics from the image.download meter."
echo "Retrieving usage statistics from the image.download meter."
node_ssh controller "$AUTH; ceilometer statistics -m image.download -p 60"
echo "Removing previously downloaded image file."
rm /tmp/cirros.img

View File

@@ -15,11 +15,12 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Install the Telemetry service
# http://docs.openstack.org/kilo/install-guide/install/apt/content/ceilometer-controller-install.html
# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-install.html
#------------------------------------------------------------------------------
echo "Sourcing the admin credentials."
source "$CONFIG_DIR/admin-openstackrc.sh"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Prerequisites
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create Ceilometer user and database.
ceilometer_admin_user=$(service_to_user_name ceilometer)
@@ -27,14 +28,18 @@ ceilometer_admin_user=$(service_to_user_name ceilometer)
mongodb_user=$CEILOMETER_DB_USER
echo "Creating the ceilometer database."
mongo --host "$(hostname_to_ip controller)" --eval "
mongo --host controller --eval "
db = db.getSiblingDB(\"ceilometer\");
db.addUser({user: \"${mongodb_user}\",
pwd: \"${CEILOMETER_DBPASS}\",
roles: [ \"readWrite\", \"dbAdmin\" ]})"
echo "Sourcing the admin credentials."
source "$CONFIG_DIR/admin-openstackrc.sh"
echo "Creating ceilometer user and giving it admin role under service tenant."
openstack user create \
--domain default \
--password "$CEILOMETER_PASS" \
"$ceilometer_admin_user"
@@ -50,18 +55,28 @@ openstack service create \
metering
openstack endpoint create \
--publicurl http://controller:8777 \
--internalurl http://controller:8777 \
--adminurl http://controller:8777 \
--region "$REGION" \
metering
metering \
public http://controller:8777
openstack endpoint create \
--region "$REGION" \
metering \
internal http://controller:8777
openstack endpoint create \
--region "$REGION" \
metering \
admin http://controller:8777
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Install and configure components
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing ceilometer."
sudo apt-get install -y ceilometer-api ceilometer-collector \
ceilometer-agent-central \
ceilometer-agent-notification \
ceilometer-alarm-evaluator \
ceilometer-alarm-notifier \
python-ceilometerclient
function get_database_url {
@@ -88,76 +103,86 @@ iniset_sudo $conf oslo_messaging_rabbit rabbit_password "$RABBIT_PASS"
iniset_sudo $conf DEFAULT auth_strategy keystone
# Configure [keystone_authtoken] section.
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000/v2.0
iniset_sudo $conf keystone_authtoken identity_uri http://controller:35357
iniset_sudo $conf keystone_authtoken admin_tenant_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken admin_user "$ceilometer_admin_user"
iniset_sudo $conf keystone_authtoken admin_password "$CEILOMETER_PASS"
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
iniset_sudo $conf keystone_authtoken auth_url http://controller:35357
iniset_sudo $conf keystone_authtoken memcached_servers controller:11211
iniset_sudo $conf keystone_authtoken auth_type password
iniset_sudo $conf keystone_authtoken project_domain_name default
iniset_sudo $conf keystone_authtoken user_domain_name default
iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf keystone_authtoken username "$ceilometer_admin_user"
iniset_sudo $conf keystone_authtoken password "$CEILOMETER_PASS"
# Configure [service_credentials] section.
iniset_sudo $conf service_credentials os_auth_url http://controller:5000/v2.0
iniset_sudo $conf service_credentials os_username "$ceilometer_admin_user"
iniset_sudo $conf service_credentials os_tenant_name "$SERVICE_PROJECT_NAME"
iniset_sudo $conf service_credentials os_password "$CEILOMETER_PASS"
iniset_sudo $conf service_credentials os_endpoint_type internalURL
iniset_sudo $conf service_credentials os_region_name "$REGION"
iniset_sudo $conf service_credentials interface internalURL
iniset_sudo $conf service_credentials region_name "$REGION"
# Configure [publisher] section.
iniset_sudo $conf publisher telemetry_secret "$TELEMETRY_SECRET"
iniset_sudo $conf DEFAULT verbose "$OPENSTACK_VERBOSE"
iniset_sudo $conf DEFAULT verbose True
echo "Restarting telemetry service."
sudo service ceilometer-agent-central restart
sudo service ceilometer-agent-notification restart
sudo service ceilometer-api restart
sudo service ceilometer-collector restart
sudo service ceilometer-alarm-evaluator restart
sudo service ceilometer-alarm-notifier restart
#------------------------------------------------------------------------------
# Configure the Image service
# http://docs.openstack.org/kilo/install-guide/install/apt/content/ceilometer-glance.html
# Enable Image service meters
# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-glance.html
#------------------------------------------------------------------------------
# Configure the Image Service to send notifications to the message bus
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure the Image service to use Telemetry
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring glance-api.conf."
conf=/etc/glance/glance-api.conf
echo "Configuring $conf."
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT notification_driver messagingv2
iniset_sudo $conf DEFAULT rpc_backend rabbit
iniset_sudo $conf DEFAULT rabbit_host controller
iniset_sudo $conf DEFAULT rabbit_userid openstack
iniset_sudo $conf DEFAULT rabbit_password "$RABBIT_PASS"
echo "Configuring glance-registry.conf."
# Configure [oslo_messaging_notifications] section.
iniset_sudo $conf oslo_messaging_notifications driver messagingv2
# Configure [oslo_messaging_rabbit] section.
iniset_sudo $conf oslo_messaging_rabbit rabbit_host controller
iniset_sudo $conf oslo_messaging_rabbit rabbit_userid openstack
iniset_sudo $conf oslo_messaging_rabbit rabbit_password "$RABBIT_PASS"
conf=/etc/glance/glance-registry.conf
echo "Configuring $conf."
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT notification_driver messagingv2
iniset_sudo $conf DEFAULT rpc_backend rabbit
iniset_sudo $conf DEFAULT rabbit_host controller
iniset_sudo $conf DEFAULT rabbit_userid openstack
iniset_sudo $conf DEFAULT rabbit_password "$RABBIT_PASS"
# Configure [oslo_messaging_notifications] section.
iniset_sudo $conf oslo_messaging_notifications driver messagingv2
# Configure [oslo_messaging_rabbit] section.
iniset_sudo $conf oslo_messaging_rabbit rabbit_host controller
iniset_sudo $conf oslo_messaging_rabbit rabbit_userid openstack
iniset_sudo $conf oslo_messaging_rabbit rabbit_password "$RABBIT_PASS"
sudo service glance-registry restart
sudo service glance-api restart
#------------------------------------------------------------------------------
# Configure the Block Storage service
# http://docs.openstack.org/kilo/install-guide/install/apt/content/ceilometer-cinder.html
# Enable Block Storage meters
# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-cinder.html
#------------------------------------------------------------------------------
# Configure the Block Storage Service to send notifications to the message bus
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure Cinder to use Telemetry
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring cinder.conf."
conf=/etc/cinder/cinder.conf
echo "Configuring $conf."
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT control_exchange cinder
iniset_sudo $conf DEFAULT notification_driver messagingv2
# Configure [oslo_messaging_notifications] section.
iniset_sudo $conf oslo_messaging_notifications notification_driver messagingv2
echo "Restarting cinder services."
sudo service cinder-api restart