diff --git a/labs/osbash/config/admin-openstackrc.sh b/labs/osbash/config/admin-openstackrc.sh
index 14cec6ec..5eaa73be 100644
--- a/labs/osbash/config/admin-openstackrc.sh
+++ b/labs/osbash/config/admin-openstackrc.sh
@@ -11,7 +11,7 @@ source "$CONFIG_DIR/credentials"
#------------------------------------------------------------------------------
# OpenStack client environment scripts
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-openrc.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/keystone-openrc.html
#------------------------------------------------------------------------------
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
@@ -20,7 +20,4 @@ export OS_USERNAME=$ADMIN_USER_NAME
export OS_PASSWORD=$ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
-#------------------------------------------------------------------------------
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/glance-verify.html
-#------------------------------------------------------------------------------
export OS_IMAGE_API_VERSION=2
diff --git a/labs/osbash/config/config.controller b/labs/osbash/config/config.controller
index ef9719d3..f3eaa6d7 100644
--- a/labs/osbash/config/config.controller
+++ b/labs/osbash/config/config.controller
@@ -20,7 +20,7 @@ NET_IF_2="manual 203.0.113.0"
# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment.html
#------------------------------------------------------------------------------
# Controller node is running many services.
-VM_MEM=4096
+VM_MEM=5120
# Override number of virtual CPUs (default is 1)
# To edit uncomment the line below
diff --git a/labs/osbash/config/demo-openstackrc.sh b/labs/osbash/config/demo-openstackrc.sh
index 5372d098..4b76063c 100644
--- a/labs/osbash/config/demo-openstackrc.sh
+++ b/labs/osbash/config/demo-openstackrc.sh
@@ -11,7 +11,7 @@ source "$CONFIG_DIR/credentials"
#------------------------------------------------------------------------------
# OpenStack client environment scripts
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-openrc.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/keystone-openrc.html
#------------------------------------------------------------------------------
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
@@ -20,7 +20,4 @@ export OS_USERNAME=$DEMO_USER_NAME
export OS_PASSWORD=$DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
-#------------------------------------------------------------------------------
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/glance-verify.html
-#------------------------------------------------------------------------------
export OS_IMAGE_API_VERSION=2
diff --git a/labs/osbash/config/localrc b/labs/osbash/config/localrc
index 316a3300..78925e47 100644
--- a/labs/osbash/config/localrc
+++ b/labs/osbash/config/localrc
@@ -15,7 +15,7 @@
# centos-7-x86_64
#DISTRO=ubuntu-12.04.4-server-amd64
#DISTRO=centos-7-x86_64
-: ${DISTRO:=ubuntu-14.04-server-amd64}
+: ${DISTRO:=ubuntu-16.04-server-amd64}
# PROVIDER: virtualbox or kvm (defaults to virtualbox)
# KVM tends to give better performance (on Linux), but may be harder to set up
diff --git a/labs/osbash/config/openstack b/labs/osbash/config/openstack
index f87545a5..bec06f2c 100644
--- a/labs/osbash/config/openstack
+++ b/labs/osbash/config/openstack
@@ -1,8 +1,10 @@
# This file contains OpenStack configuration data. It is used by both
# host (osbash, Windows batch) and VM guest scripts.
-# one of: mitaka, mitaka-proposed, mitaka-staging
-: ${OPENSTACK_RELEASE:=mitaka}
+# newton (production release; cloud-archive:newton)
+# newton-proposed (pre-release testing: cloud-archive:newton-proposed)
+# newton-staging (ppa:openstack-ubuntu-testing/newton)
+: ${OPENSTACK_RELEASE:=newton}
# CirrOS image URL
if [ "$(uname -m)" = "x86_64" ]; then
@@ -29,12 +31,12 @@ NETWORK_2="provider 203.0.113.0"
PXE_INITIAL_NODE_IP="10.0.0.240"
#------------------------------------------------------------------------------
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/launch-instance-networks-public.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/launch-instance-networks-provider.html
#------------------------------------------------------------------------------
# Public network
-: ${PUBLIC_NETWORK_CIDR:=203.0.113.0/24}
-: ${PUBLIC_NETWORK_GATEWAY:=203.0.113.1}
+: ${PROVIDER_NETWORK_CIDR:=203.0.113.0/24}
+: ${PROVIDER_NETWORK_GATEWAY:=203.0.113.1}
# Floating IP addresses
: ${START_IP_ADDRESS:=203.0.113.101}
: ${END_IP_ADDRESS:=203.0.113.200}
@@ -44,8 +46,8 @@ PXE_INITIAL_NODE_IP="10.0.0.240"
#------------------------------------------------------------------------------
# Private demo network
-: ${PRIVATE_NETWORK_CIDR:=172.16.1.0/24}
-: ${PRIVATE_NETWORK_GATEWAY:=172.16.1.1}
+: ${SELFSERVICE_NETWORK_CIDR:=172.16.1.0/24}
+: ${SELFSERVICE_NETWORK_GATEWAY:=172.16.1.1}
# DNS name server used by instance VMs.
# Default is Google Public DNS (8.8.4.4).
diff --git a/labs/osbash/config/scripts.ubuntu_cluster b/labs/osbash/config/scripts.ubuntu_cluster
index 99918959..b91f4cd6 100644
--- a/labs/osbash/config/scripts.ubuntu_cluster
+++ b/labs/osbash/config/scripts.ubuntu_cluster
@@ -7,45 +7,56 @@ cmd queue etc_hosts.sh
cmd queue osbash/enable_osbash_ssh_keys.sh
cmd snapshot_cycle -n controller controller_node_init
+# Environment
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
+# Identity
cmd queue ubuntu/setup_keystone.sh
cmd queue test/get_auth_token.sh
cmd snapshot_cycle -n controller keystone_installed
+# Image
cmd queue ubuntu/setup_glance.sh
cmd snapshot_cycle -n controller glance_installed
+# Compute
cmd queue ubuntu/setup_nova_controller.sh
cmd snapshot_cycle -n controller nova-controller_installed
+# Networking
cmd queue ubuntu/setup_neutron_controller.sh
cmd queue ubuntu/setup_self-service_controller.sh
cmd queue ubuntu/setup_neutron_controller_part_2.sh
cmd snapshot_cycle -n controller neutron-controller_installed
-cmd queue ubuntu/setup_cinder_controller.sh
-cmd snapshot_cycle -n controller cinder_installed
-
+# Dashboard
cmd queue ubuntu/setup_horizon.sh
cmd snapshot_cycle -n controller horizon_installed
-# FIXME Our LBaaS support for kilo is broken; the configuration edits
+# Block Storage
+cmd queue ubuntu/setup_cinder_controller.sh
+cmd snapshot_cycle -n controller cinder_installed
+
+# Orchestration
+cmd queue ubuntu/setup_heat_controller.sh
+cmd snapshot_cycle -n controller heat_controller_installed
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Telemetry (currently unsupported)
+# NoSQL DB (mongo) needed for Telemetry
+#cmd queue ubuntu/apt_nosql_database.sh
+# Note: Disable Telemetry service if it overloads the cluster.
+#cmd queue ubuntu/setup_telemetry_controller.sh
+#cmd snapshot_cycle -n controller telemetry-controller_installed
+
+# FIXME Our LBaaS support is broken; the configuration edits
# in setup_lbaas_controller.sh break neutron
#cmd queue ubuntu/setup_lbaas_controller.sh
#cmd snapshot_cycle -n controller lbaas-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
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
cmd boot -n controller
#==============================================================================
@@ -57,21 +68,25 @@ cmd queue etc_hosts.sh
cmd queue osbash/enable_osbash_ssh_keys.sh
cmd snapshot_cycle -n compute1 compute1_node_init
+# Compute
cmd queue ubuntu/setup_nova_compute.sh
cmd snapshot_cycle -n compute1 nova-compute1_installed
+# Networking
cmd queue ubuntu/setup_neutron_compute.sh
cmd queue ubuntu/setup_self-service_compute.sh
cmd queue ubuntu/setup_neutron_compute_part_2.sh
cmd snapshot_cycle -n compute1 neutron-compute_installed
+# Block Storage
cmd queue ubuntu/setup_cinder_volumes.sh
cmd snapshot_cycle -n compute1 cinder-volume_installed
-cmd queue ubuntu/setup_telemetry_compute.sh
-cmd snapshot_cycle -n compute1 telemetry-compute_installed
-cmd boot -n compute1
+# Telemetry
+#cmd queue ubuntu/setup_telemetry_compute.sh
+#cmd snapshot_cycle -n compute1 telemetry-compute_installed
+cmd boot -n compute1
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Take snapshot of database changes on controller VM, too
cmd shutdown -n controller
@@ -81,5 +96,6 @@ cmd snapshot -n controller controller_-_compute1_node_installed
cmd queue config_public_network.sh
cmd queue config_private_network.sh
cmd snapshot_cycle -n controller public_private_networks
+#==============================================================================
cmd boot -n controller
diff --git a/labs/osbash/lib/functions.guest.sh b/labs/osbash/lib/functions.guest.sh
index 3b2f8131..644d3a7d 100644
--- a/labs/osbash/lib/functions.guest.sh
+++ b/labs/osbash/lib/functions.guest.sh
@@ -270,8 +270,9 @@ $option = $value
function mysql_exe {
local cmd="$1"
- echo "MySQL cmd: $cmd."
- mysql -u "root" -p"$DATABASE_PASSWORD" -e "$cmd"
+ echo "mysql cmd: $cmd."
+ # XXX install-guide uses password, but distro install uses socket auth
+ sudo mysql -u "root" -e "$cmd"
}
function setup_database {
@@ -295,14 +296,15 @@ function setup_database {
# process, the neutron server sometimes fails to come up. We restart the
# neutron server if it does not reply for too long.
function wait_for_neutron {
+ (
+ source $CONFIG_DIR/demo-openstackrc.sh
echo -n "Waiting for neutron to come up."
local cnt=0
- local auth="source $CONFIG_DIR/demo-openstackrc.sh"
until openstack network list >/dev/null 2>&1; do
if [ "$cnt" -eq 10 ]; then
echo
echo "ERROR No response from neutron. Restarting neutron-server."
- node_ssh controller "$auth; sudo service neutron-server restart"
+ node_ssh controller "sudo service neutron-server restart"
echo -n "Waiting for neutron to come up."
elif [ "$cnt" -eq 20 ]; then
echo
@@ -314,6 +316,7 @@ function wait_for_neutron {
cnt=$((cnt + 1))
done
echo
+ )
}
# Wait for keystone to come up
@@ -329,19 +332,6 @@ function wait_for_keystone {
)
}
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# Service-specific users in keystone
-
-function service_to_user_name {
- local service_name=$1
- echo "${service_name}"
-}
-
-function service_to_user_password {
- local service_name=$1
- echo "${service_name}_pass"
-}
-
#-------------------------------------------------------------------------------
# Network configuration
#-------------------------------------------------------------------------------
@@ -367,6 +357,27 @@ function set_iface_list {
echo "Set IF_NAMES to ${IF_NAMES[*]}"
}
+# Return the nth network interface name (not counting loopback; 0 -> eth0)
+function ifnum_to_ifname {
+ local if_num=$1
+
+ # Skip loopback and start counting with next interface
+ local iface=${IF_NAMES[$((if_num + 1))]}
+
+ echo >&2 "ifnum_to_ifname: interface $if_num is $iface"
+ echo "$iface"
+}
+
+# Get all network interfaces (e.g. eth0, p2p1, ens0, enp0s3) into an array
+function set_iface_list {
+ unset IF_NAMES
+ local iface
+ for iface in $(ip -o link show|awk '/: / {print $2}'|tr -d ':'); do
+ IF_NAMES+=($iface)
+ done
+ echo "Set IF_NAMES to ${IF_NAMES[*]}"
+}
+
function hostname_to_ip {
local host_name=$1
getent hosts "$host_name"|awk '{print $1}'
diff --git a/labs/osbash/lib/osbash/lib.ubuntu-16.04-server-amd64.sh b/labs/osbash/lib/osbash/lib.ubuntu-16.04-server-amd64.sh
new file mode 100644
index 00000000..cda8c321
--- /dev/null
+++ b/labs/osbash/lib/osbash/lib.ubuntu-16.04-server-amd64.sh
@@ -0,0 +1,89 @@
+# Ubuntu 16.04 LTS amd64 server
+
+# Default scripts for all Ubuntu installs
+: ${BASE_INSTALL_SCRIPTS:=scripts.ubuntu_base}
+
+#-------------------------------------------------------------------------------
+# Installation from ISO image
+#-------------------------------------------------------------------------------
+
+readonly ISO_URL_BASE=http://releases.ubuntu.com/16.04/
+
+ISO_URL=$ISO_URL_BASE/ubuntu-16.04.1-server-amd64.iso
+#ISO_MD5=23e97cd5d4145d4105fbf29878534049
+ISO_MD5=d2d939ca0e65816790375f6826e4032f
+
+readonly _PS_ssh=http://git.openstack.org/cgit/openstack/training-labs/plain/labs/osbash/lib/osbash/netboot/preseed-ssh-v4.cfg
+readonly _PS_vbadd=http://git.openstack.org/cgit/openstack/training-labs/plain/labs/osbash/lib/osbash/netboot/preseed-vbadd-v3.cfg
+readonly _PS_all=http://git.openstack.org/cgit/openstack/training-labs/plain/labs/osbash/lib/osbash/netboot/preseed-all-v2.cfg
+
+# Arguments for ISO image installer
+readonly _BOOT_ARGS="/install/vmlinuz
+ noapic
+ preseed/url=%s
+ debian-installer=en_US
+ auto=true
+ locale=en_US
+ hostname=osbash
+ fb=false
+ debconf/frontend=noninteractive
+ keyboard-configuration/modelcode=SKIP
+ initrd=/install/initrd.gz
+ console-setup/ask_detect=false"
+
+# file=/bin/cdrom-checker-menu vga=788 initrd=/install/initrd.gz quiet ---
+
+# Fallback function to find current ISO image in case the file in ISO_URL is
+# neither on the disk nor at the configured URL.
+# This mechanism was added because old Ubuntu ISOs are removed from the server
+# as soon as a new ISO appears.
+function update_iso_variables {
+ # Get matching line from distro repo's MD5SUMS file, e.g.
+ # "9e5fecc94b3925bededed0fdca1bd417 *ubuntu-14.04.3-server-amd64.iso"
+ local distro_info=$(wget -O - "$ISO_URL_BASE/MD5SUMS"|grep server-amd64)
+
+ # First part (removing everything after first space) is the md5sum
+ ISO_MD5=${distro_info%% *}
+
+ # Second part (keeping everything after ' *') is the ISO file name
+ local iso_file=${distro_info#* \*}
+
+ ISO_URL=$ISO_URL_BASE/$iso_file
+
+ echo -e >&2 "${CStatus:-}New ISO_URL: ${CData:-}$ISO_URL${CReset:-}"
+}
+
+# ostype used by VirtualBox to choose icon and flags (64-bit, IOAPIC)
+VBOX_OSTYPE=Ubuntu_64
+
+# Boot the ISO image operating system installer
+function distro_start_installer {
+ local vm_name=$1
+
+ # pick a _PS_* file
+ local preseed=_PS_$VM_ACCESS
+
+ echo "Using $preseed ${!preseed}"
+
+ local boot_args=$(printf "$_BOOT_ARGS" "${!preseed}")
+
+ if [ -n "${VM_PROXY:-""}" ]; then
+ echo >&2 "Using proxy $VM_PROXY."
+ boot_args="$boot_args mirror/http/proxy=$VM_PROXY http_proxy=$VM_PROXY"
+ fi
+
+ keyboard_send_enter "$vm_name"
+ keyboard_send_f6 "$vm_name"
+ keyboard_send_escape "$vm_name"
+ for i in $(seq 1 83); do
+ keyboard_send_backspace "$vm_name"
+ done
+
+ echo -e "${CStatus:-}Pushing boot command line${CReset:-}"
+ keyboard_send_string "$vm_name" "$boot_args"
+
+ echo "Initiating boot sequence"
+ keyboard_send_enter "$vm_name"
+}
+
+# vim: set ai ts=4 sw=4 et ft=sh:
diff --git a/labs/osbash/scripts/config_private_network.sh b/labs/osbash/scripts/config_private_network.sh
index 45bcc30e..12892c11 100755
--- a/labs/osbash/scripts/config_private_network.sh
+++ b/labs/osbash/scripts/config_private_network.sh
@@ -10,7 +10,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Create private network
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/launch-instance-networks-private.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/launch-instance-networks-selfservice.html
#------------------------------------------------------------------------------
echo -n "Waiting for first DHCP namespace."
@@ -28,6 +28,9 @@ until [ "$(/sbin/brctl show | grep -c -o "^brq[a-z0-9-]*")" -gt 0 ]; do
done
echo
+# Wait for neutron to start
+wait_for_neutron
+
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create the self-service network
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -36,20 +39,17 @@ echo
echo "Sourcing the demo credentials."
source "$CONFIG_DIR/demo-openstackrc.sh"
-# Wait for neutron to start
-wait_for_neutron
-
echo "Creating the private network."
neutron net-create selfservice
-echo "Creating a subnet on the tenant network."
+echo "Creating a subnet on the private network."
neutron subnet-create --name selfservice \
- --dns-nameserver "$DNS_RESOLVER" --gateway "$PRIVATE_NETWORK_GATEWAY" \
- selfservice "$PRIVATE_NETWORK_CIDR"
+ --dns-nameserver "$DNS_RESOLVER" --gateway "$SELFSERVICE_NETWORK_GATEWAY" \
+ selfservice "$SELFSERVICE_NETWORK_CIDR"
)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
+# Not in install-guide:
echo -n "Waiting for second DHCP namespace."
until [ "$(ip netns | grep -c -o "^qdhcp-[a-z0-9-]*")" -gt 1 ]; do
sleep 1
@@ -87,13 +87,16 @@ echo "Creating a router."
neutron router-create router
)
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Not in install-guide:
+
function wait_for_agent {
local agent=$1
echo -n "Waiting for neutron agent $agent."
(
source "$CONFIG_DIR/admin-openstackrc.sh"
- while neutron agent-list|grep "$agent" | grep "xxx" >/dev/null; do
+ while neutron agent-list | grep "$agent" | grep "xxx" >/dev/null; do
sleep 1
echo -n .
done
@@ -107,12 +110,15 @@ 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
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(
source "$CONFIG_DIR/demo-openstackrc.sh"
echo "Adding the private network subnet as an interface on the router."
neutron router-interface-add router selfservice
)
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Not in install-guide:
# The following tests for router namespace, qr-* interface and bridges are just
# for show. They are not needed to prevent races.
@@ -129,15 +135,15 @@ until sudo ip netns exec "$nsrouter" ip addr|grep -Po "(?<=: )qr-.*(?=:)"; do
echo -n "."
sleep 1
done
-
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(
source "$CONFIG_DIR/demo-openstackrc.sh"
echo "Setting a gateway on the public network on the router."
neutron router-gateway-set router provider
)
-
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Not in install-guide:
# The following test for qg-* is just for show.
echo -n "Waiting for interface qg-* in router namespace."
@@ -188,7 +194,7 @@ cnt=0
until ping -c1 "$PUBLIC_ROUTER_IP" > /dev/null; do
cnt=$((cnt + 1))
if [ $cnt -eq 20 ]; then
- echo "ERROR no reply from public router IP in 20 s, exiting."
+ echo "ERROR No reply from public router IP in 20 seconds, aborting."
exit 1
fi
sleep 1
diff --git a/labs/osbash/scripts/config_public_network.sh b/labs/osbash/scripts/config_public_network.sh
index 6823a9c3..433e4100 100755
--- a/labs/osbash/scripts/config_public_network.sh
+++ b/labs/osbash/scripts/config_public_network.sh
@@ -10,7 +10,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Create the provier (external) network and a subnet on it
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/launch-instance-networks-provider.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/launch-instance-networks-provider.html
#------------------------------------------------------------------------------
echo "Sourcing the admin credentials."
@@ -54,9 +54,11 @@ echo "Creating a subnet on the public network."
neutron subnet-create --name provider \
--allocation-pool start="$START_IP_ADDRESS,end=$END_IP_ADDRESS" \
--dns-nameserver "$DNS_RESOLVER" \
- --gateway "$PUBLIC_NETWORK_GATEWAY" \
- provider "$PUBLIC_NETWORK_CIDR"
+ --gateway "$PROVIDER_NETWORK_GATEWAY" \
+ provider "$PROVIDER_NETWORK_CIDR"
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Not in install-guide:
echo -n "Waiting for DHCP namespace."
until [ "$(ip netns | grep -c -o "^qdhcp-[a-z0-9-]*")" -gt 0 ]; do
sleep 1
@@ -73,3 +75,4 @@ done
echo
/sbin/brctl show
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/labs/osbash/scripts/shutdown.sh b/labs/osbash/scripts/shutdown.sh
index 7766bea0..47bea39f 100755
--- a/labs/osbash/scripts/shutdown.sh
+++ b/labs/osbash/scripts/shutdown.sh
@@ -11,4 +11,4 @@ exec_logfile
echo "Shutting down"
# Shutdown some time after returning so our caller has time to finish
-sudo -b sh -c 'sleep 2; /sbin/shutdown -P now'
+sudo -b sh -c 'sleep 2; systemctl poweroff'
diff --git a/labs/osbash/scripts/test/heat_stack.sh b/labs/osbash/scripts/test/heat_stack.sh
index 9928a074..c346b558 100755
--- a/labs/osbash/scripts/test/heat_stack.sh
+++ b/labs/osbash/scripts/test/heat_stack.sh
@@ -45,10 +45,14 @@ check_for_other_vms
echo "Creating a test heat template."
+# FIXME mykey is created in launch_instance_private_net.sh
+
+# Note: unlike install-guide, we use m1.nano (default flavors like m1.tiny
+# are no longer installed)
node_ssh controller "cat > demo-template.yml" << HEAT
heat_template_version: 2015-10-15
description: Launch a basic instance with CirrOS image using the
- ``m1.tiny`` flavor, ``mykey`` key, and one network.
+ ``m1.nano`` flavor, ``mykey`` key, and one network.
parameters:
NetID:
@@ -60,7 +64,7 @@ resources:
type: OS::Nova::Server
properties:
image: cirros
- flavor: m1.tiny
+ flavor: m1.nano
key_name: mykey
networks:
- network: { get_param: NetID }
@@ -74,6 +78,29 @@ outputs:
value: { get_attr: [ server, first_address ] }
HEAT
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Create m1.nano flavor
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+# Newton does no longer create default flavors:
+# http://docs.openstack.org/releasenotes/nova/unreleased.html 2016-09-25
+(
+echo
+
+source "$CONFIG_DIR/admin-openstackrc.sh"
+
+if openstack flavor list | grep m1.nano; then
+ echo "Proceeding, m1.nano flavor exists."
+else
+ echo "Creating m1.nano flavor which is just big enough for CirrOS."
+ openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
+fi
+
+echo "Current flavors:"
+openstack flavor list
+echo
+)
+
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create a stack
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -82,19 +109,21 @@ TEST_STACK_NAME=stack
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 'NetID=$NET_ID' $TEST_STACK_NAME"
+echo "NET_ID: $NET_ID"
+
+node_ssh controller "$AUTH; openstack stack create -t demo-template.yml \
+ --parameter 'NetID=$NET_ID' $TEST_STACK_NAME"
echo "Verifying successful creation of stack."
cnt=0
-echo "heat stack-list"
-until node_ssh controller "$AUTH; heat stack-list" 2>/dev/null | grep "CREATE_COMPLETE"; do
+echo "openstack stack list"
+until node_ssh controller "$AUTH; openstack stack list" 2>/dev/null | grep "CREATE_COMPLETE"; do
cnt=$((cnt + 1))
if [ $cnt -eq 60 ]; then
# Print current stack list to help with debugging
echo
- node_ssh controller "$AUTH; heat stack-list"
+ node_ssh controller "$AUTH; openstack stack list"
echo "Heat stack creation failed. Exiting."
echo "[Warning]: Please debug heat services on the
controller node. Heat may not work."
@@ -106,15 +135,15 @@ until node_ssh controller "$AUTH; heat stack-list" 2>/dev/null | grep "CREATE_CO
done
echo "Showing the name and IP address of the instance."
-node_ssh controller "$AUTH; heat output-show --all $TEST_STACK_NAME; nova list"
+node_ssh controller "$AUTH; openstack stack output show --all $TEST_STACK_NAME; nova list"
echo "Deleting the test stack."
-heat_stack_id=$(node_ssh controller "$AUTH; heat stack-list" | awk "/ $TEST_STACK_NAME / {print \$2}")
+heat_stack_id=$(node_ssh controller "$AUTH; openstack stack list" | awk "/ $TEST_STACK_NAME / {print \$2}")
-node_ssh controller "$AUTH; heat stack-delete $heat_stack_id"
+node_ssh controller "$AUTH; openstack stack delete $heat_stack_id"
echo -n "Waiting for test stack to disappear."
-while node_ssh controller "$AUTH; heat stack-list|grep $heat_stack_id" >/dev/null 2>&1; do
+while node_ssh controller "$AUTH; openstack stack list|grep $heat_stack_id" >/dev/null 2>&1; do
sleep 1
echo -n .
done
diff --git a/labs/osbash/scripts/test/launch_instance_private_net.sh b/labs/osbash/scripts/test/launch_instance_private_net.sh
index a3334487..eb1dfe77 100755
--- a/labs/osbash/scripts/test/launch_instance_private_net.sh
+++ b/labs/osbash/scripts/test/launch_instance_private_net.sh
@@ -67,7 +67,7 @@ function wait_for_service {
local cnt=0
echo -n "Node $node, service $service:"
until ssh_no_chk_node "$node" service "$service" status | \
- grep -q "start/running"; do
+ grep -q "active (running)"; do
cnt=$((cnt + 1))
if [ $((cnt % 150)) -eq 0 ]; then
echo " does not seem to come up. Forcing restart."
@@ -152,14 +152,6 @@ function wait_for_nova_services {
done
echo
- 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
@@ -259,6 +251,9 @@ echo
echo "Check if m1.nano flavor is existing or else, create the flavor."
source "$CONFIG_DIR/admin-openstackrc.sh"
+echo "Current flavors:"
+openstack flavor list
+
if openstack flavor list | grep m1.nano; then
echo "Proceeding, m1.nano flavor exists."
else
@@ -415,8 +410,8 @@ function check_for_other_vms {
check_for_other_vms
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-NOVA_SCHED_LOG=/var/log/upstart/nova-scheduler.log
-NOVA_API_LOG=/var/log/upstart/nova-api.log
+NOVA_SCHED_LOG=/var/log/nova/nova-scheduler.log
+NOVA_API_LOG=/var/log/nova/nova-api.log
VM_LAUNCHES=0
@@ -704,12 +699,12 @@ openstack console url show "$DEMO_INSTANCE_NAME"
echo
echo "Creating a floating IP address on the public network."
-floating_ip=$(openstack ip floating create provider | awk '/ ip / {print $4}')
+floating_ip=$(openstack floating ip create provider | awk '/ floating_ip_address / {print $4}')
openstack ip floating list
echo
echo "Associating the floating IP address with our instance."
-openstack ip floating add "$floating_ip" "$DEMO_INSTANCE_NAME"
+openstack server add floating ip "$DEMO_INSTANCE_NAME" "$floating_ip"
echo
echo "Checking the status of your floating IP address."
diff --git a/labs/osbash/scripts/test/test_horizon.sh b/labs/osbash/scripts/test/test_horizon.sh
index 580ceeac..f8ecf2e5 100755
--- a/labs/osbash/scripts/test/test_horizon.sh
+++ b/labs/osbash/scripts/test/test_horizon.sh
@@ -151,18 +151,22 @@ NET_ID=$(grep "provider" $OUTPUT_FILE3 | \
echo "The provider NET_ID is $NET_ID"
+#######
+# The following part is broken.
+# The same DATA section works on the previous requests so either the
+# REFERER or the IMG_URL (not likely) have changed since Mitaka
-IMG_URL="http://$IP/horizon/project/images/"
-DATA="login_region='http://controller:5000/v3'&login_domain=default&\
-csrfmiddlewaretoken=$TOKEN&sessionid=$SESSIONID"
+#IMG_URL="http://$IP/horizon/project/images/"
+#DATA="login_region='http://controller:5000/v3'&login_domain=default&\
+#csrfmiddlewaretoken=$TOKEN&sessionid=$SESSIONID"
-# Step 4: Load the page with the available images
-echo "Loading the images tab and parsing the image ID for cirros."
-request_cmd "$IMG_URL" $OUTPUT_FILE4 "$DATA" "$REFERER"
-
-# Parse (cirros) image ID
-IMAGE_ID=$(grep "cirros" $OUTPUT_FILE4 | \
- awk -F"obj_id=" '{print $2}' | \
- awk -F'"' '{print $1}')
-
-echo "The cirros IMAGE_ID is $IMAGE_ID"
+## Step 4: Load the page with the available images
+#echo "Loading the images tab and parsing the image ID for cirros."
+#request_cmd "$IMG_URL" $OUTPUT_FILE4 "$DATA" "$REFERER"
+#
+## Parse (cirros) image ID
+#IMAGE_ID=$(grep "cirros" $OUTPUT_FILE4 | \
+# awk -F"obj_id=" '{print $2}' | \
+# awk -F'"' '{print $1}')
+#
+#echo "The cirros IMAGE_ID is $IMAGE_ID"
diff --git a/labs/osbash/scripts/ubuntu/apt_init.sh b/labs/osbash/scripts/ubuntu/apt_init.sh
index 7d3052ff..71218f90 100755
--- a/labs/osbash/scripts/ubuntu/apt_init.sh
+++ b/labs/osbash/scripts/ubuntu/apt_init.sh
@@ -37,56 +37,49 @@ set_apt_proxy
# Get apt index files
sudo apt-get update
-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/newton/install-guide-ubuntu/environment-packages.html
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# NOTE: Using pre-release staging ppa is not documented in install-guide
+# https://launchpad.net/~ubuntu-cloud-archive/+archive/ubuntu/newton-staging
+#--------------------------------------------------------------------------
- #--------------------------------------------------------------------------
- # Enable the OpenStack repository
- # http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-packages.html
- #--------------------------------------------------------------------------
+echo "Installing packages needed for add-apt-repository."
+sudo apt-get -y install software-properties-common
- # 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"
-}
-
-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
- 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"
+case "$OPENSTACK_RELEASE" in
+ newton)
+ REPO=cloud-archive:newton
+ SRC_FILE=cloudarchive-newton.list
+ ;;
+ newton-proposed)
+ REPO=cloud-archive:newton-proposed
+ SRC_FILE=cloudarchive-newton-proposed.list
+ ;;
+ newton-staging)
+ REPO=ppa:ubuntu-cloud-archive/newton-staging
+ SRC_FILE=ubuntu-cloud-archive-ubuntu-newton-staging-xenial.list
+ ;;
+ *)
+ echo >&2 "Unknown OpenStack release: $OPENSTACK_RELEASE. Aborting."
exit 1
- fi
+ ;;
+esac
+
+echo "Adding cloud repo: $REPO"
+sudo add-apt-repository "$REPO"
+
+# Get index files only for ubuntu-cloud repo but keep standard lists
+if [ -f "/etc/apt/sources.list.d/$SRC_FILE" ]; then
+ sudo apt-get update \
+ -o Dir::Etc::sourcelist="sources.list.d/$SRC_FILE" \
+ -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
+else
+ echo "ERROR: apt source not found: /etc/apt/sources.list.d/$SRC_FILE"
+ exit 1
fi
+
+# Disable automatic updates (they compete with our scripts for the dpkg lock)
+sudo systemctl disable apt-daily.service
+sudo systemctl disable apt-daily.timer
diff --git a/labs/osbash/scripts/ubuntu/apt_install_mysql.sh b/labs/osbash/scripts/ubuntu/apt_install_mysql.sh
index 33395692..81c14386 100755
--- a/labs/osbash/scripts/ubuntu/apt_install_mysql.sh
+++ b/labs/osbash/scripts/ubuntu/apt_install_mysql.sh
@@ -16,38 +16,47 @@ indicate_current_auto
# Controller setup
#-------------------------------------------------------------------------------
+
DB_IP=$(get_node_ip_in_network "$(hostname)" "mgmt")
echo "Will bind MySQL server to $DB_IP."
#------------------------------------------------------------------------------
# Install and configure the database server
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-sql-database.html
+# http://docs.openstack.org/newton/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''
+
+#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 (MariaDB)."
sudo apt-get install -y mariadb-server python-mysqldb
-conf=/etc/mysql/conf.d/mysqld_openstack.cnf
+# Not in the install-guide
+echo "Sanity check: distro default is socket auth."
+sudo mysql -u root -e quit
+
+# Not in install-guide
+# To drop socket auth for root user and use root password:
+# sudo mysql -u "root" -e "use mysql; update user set plugin='' where user='root'; update user set password=PASSWORD('$DATABASE_PASSWORD') where user='root'; flush privileges;"
+
+conf=/etc/mysql/mariadb.conf.d/99-openstack.cnf
echo "Creating $conf."
echo '[mysqld]' | sudo tee $conf
-echo "Configuring MySQL to accept requests from management network."
+echo "Configuring MySQL to accept requests from management network ($DB_IP)."
iniset_sudo $conf mysqld bind-address "$DB_IP"
-# Enable InnoDB
iniset_sudo $conf mysqld default-storage-engine innodb
iniset_sudo $conf mysqld innodb_file_per_table ""
-
-# Enable UTF-8 character set and UTF-8 collation by default
+iniset_sudo $conf mysqld max_connections 4096
iniset_sudo $conf mysqld collation-server utf8_general_ci
-iniset_sudo $conf mysqld init-connect "'SET NAMES utf8'"
iniset_sudo $conf mysqld character-set-server utf8
echo "Restarting MySQL service."
# Close the file descriptor or the script will hang due to open ssh connection
sudo service mysql restart 2>/dev/null
+
+# Difference to install-guide: not running mysql_secure_installation
diff --git a/labs/osbash/scripts/ubuntu/apt_nosql_database.sh b/labs/osbash/scripts/ubuntu/apt_nosql_database.sh
index 1a25fc79..a1d8cd6a 100755
--- a/labs/osbash/scripts/ubuntu/apt_nosql_database.sh
+++ b/labs/osbash/scripts/ubuntu/apt_nosql_database.sh
@@ -14,11 +14,13 @@ exec_logfile
indicate_current_auto
#------------------------------------------------------------------------------
-# Install the NoSQL (Mongo) service
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-nosql-database.html
+# NoSQL database for Ubuntu
+# http://docs.openstack.org/project-install-guide/telemetry/newton/database/environment-nosql-database-ubuntu.html
#------------------------------------------------------------------------------
-echo "Setting up NoSQL database (MongoDB) for telemetry."
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Install and configure components
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing the MongoDB packages."
sudo apt-get install -y mongodb-server mongodb-clients python-pymongo
@@ -32,7 +34,7 @@ echo "Stopping mongodb."
sudo service mongodb stop
echo "Removing initial journal files (if any)."
-sudo rm -f /var/lib/mongodb/journal/prealloc.*
+sudo rm -vf /var/lib/mongodb/journal/prealloc.*
echo "Starting mongodb."
sudo service mongodb start
@@ -42,3 +44,4 @@ while sudo service mongodb status 2>/dev/null | grep "stop"; do
sleep 2
echo -n .
done
+echo
diff --git a/labs/osbash/scripts/ubuntu/apt_pre-download.sh b/labs/osbash/scripts/ubuntu/apt_pre-download.sh
index ab99841f..6484b497 100755
--- a/labs/osbash/scripts/ubuntu/apt_pre-download.sh
+++ b/labs/osbash/scripts/ubuntu/apt_pre-download.sh
@@ -36,8 +36,8 @@ apt_download keystone python-openstackclient apache2 \
apt_download glance python-glanceclient
# Nova Controller
-apt_download nova-api nova-cert nova-conductor nova-consoleauth \
- nova-novncproxy nova-scheduler python-novaclient
+apt_download nova-api nova-conductor nova-consoleauth \
+ nova-novncproxy nova-scheduler
# Neutron Controller
apt_download neutron-server neutron-plugin-ml2 \
diff --git a/labs/osbash/scripts/ubuntu/apt_upgrade.sh b/labs/osbash/scripts/ubuntu/apt_upgrade.sh
index b5eb6e93..9c3df9ca 100755
--- a/labs/osbash/scripts/ubuntu/apt_upgrade.sh
+++ b/labs/osbash/scripts/ubuntu/apt_upgrade.sh
@@ -20,7 +20,10 @@ exec_logfile
# 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
+# Keep our changes to /etc/sudoers from tripping up apt-get
+sudo DEBIAN_FRONTEND=noninteractive apt-get \
+ -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" \
+ -y upgrade
sudo apt-get -y dist-upgrade
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/labs/osbash/scripts/ubuntu/install_memcached.sh b/labs/osbash/scripts/ubuntu/install_memcached.sh
index 00f0f686..a430ed4e 100755
--- a/labs/osbash/scripts/ubuntu/install_memcached.sh
+++ b/labs/osbash/scripts/ubuntu/install_memcached.sh
@@ -14,14 +14,14 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Memcached
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-memcached.html
+# http://docs.openstack.org/newton/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."
+echo "Binding memcached server to $MGMT_IP."
conf=/etc/memcached.conf
sudo sed -i "s/^-l 127.0.0.1/-l $MGMT_IP/" $conf
diff --git a/labs/osbash/scripts/ubuntu/install_rabbitmq.sh b/labs/osbash/scripts/ubuntu/install_rabbitmq.sh
index 2751585f..e2a6c752 100755
--- a/labs/osbash/scripts/ubuntu/install_rabbitmq.sh
+++ b/labs/osbash/scripts/ubuntu/install_rabbitmq.sh
@@ -14,14 +14,29 @@ indicate_current_auto
#-------------------------------------------------------------------------------
# Install the message broker service (RabbitMQ).
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/environment-messaging.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/environment-messaging.html
#-------------------------------------------------------------------------------
echo "Installing RabbitMQ."
sudo apt-get install -y rabbitmq-server
+echo -n "Waiting for RabbitMQ to start."
+while ! sudo rabbitmqctl status >/dev/null; do
+ sleep 1
+ echo -n .
+done
+echo
+
+echo ---------------------------------------------------------------
+echo "sudo rabbitmqctl status"
+sudo rabbitmqctl status
+echo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+echo "sudo rabbitmqctl report"
+sudo rabbitmqctl report
+echo ---------------------------------------------------------------
+
echo "Adding openstack user to messaging service."
sudo rabbitmqctl add_user openstack "$RABBIT_PASS"
-echo "Permit configuration, write and read access for the openstack user."
+echo "Permitting configuration, write and read access for the openstack user."
sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*"
diff --git a/labs/osbash/scripts/ubuntu/setup_cinder_controller.sh b/labs/osbash/scripts/ubuntu/setup_cinder_controller.sh
index b2c49e1f..79a80e3c 100755
--- a/labs/osbash/scripts/ubuntu/setup_cinder_controller.sh
+++ b/labs/osbash/scripts/ubuntu/setup_cinder_controller.sh
@@ -14,7 +14,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up Block Storage service controller (cinder controller node)
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/cinder-controller-install.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/cinder-controller-install.html
#------------------------------------------------------------------------------
echo "Setting up database for cinder."
@@ -22,7 +22,7 @@ setup_database cinder "$CINDER_DB_USER" "$CINDER_DBPASS"
source "$CONFIG_DIR/admin-openstackrc.sh"
-cinder_admin_user=$(service_to_user_name cinder)
+cinder_admin_user=cinder
# Wait for keystone to come up
wait_for_keystone
@@ -47,7 +47,7 @@ openstack service create \
openstack service create \
--name cinderv2 \
- --description "OpenStack Block Storage v2" \
+ --description "OpenStack Block Storage" \
volumev2
openstack endpoint create \
@@ -112,6 +112,7 @@ 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
@@ -123,20 +124,30 @@ iniset_sudo $conf DEFAULT my_ip "$(hostname_to_ip controller)"
iniset_sudo $conf oslo_concurrency lock_path /var/lib/cinder/tmp
-echo "Creating the database tables for cinder."
+echo "Populating the Block Storage database."
sudo cinder-manage db sync
-echo "Configuring nova.conf"
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Configure Compute to use Block Storage
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+echo "Configuring Compute to use Block Storage."
+
conf=/etc/nova/nova.conf
iniset_sudo $conf cinder os_region_name "$REGION"
-echo "Restart Compute API service."
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Finalize installation
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+echo "Restarting the Compute API service."
sudo service nova-api restart
-echo "Restarting cinder service."
+echo "Restarting the Block Storage services."
sudo service cinder-scheduler restart
sudo service cinder-api restart
-echo "Removing unused SQLite database file (if any)."
-sudo rm -f /var/lib/cinder/cinder.sqlite
+# Not in the install-guide:
+echo "Removing unused SQLite database file."
+sudo rm -v /var/lib/cinder/cinder.sqlite
diff --git a/labs/osbash/scripts/ubuntu/setup_cinder_volumes.sh b/labs/osbash/scripts/ubuntu/setup_cinder_volumes.sh
index faa8c6f8..5b323dab 100755
--- a/labs/osbash/scripts/ubuntu/setup_cinder_volumes.sh
+++ b/labs/osbash/scripts/ubuntu/setup_cinder_volumes.sh
@@ -14,8 +14,8 @@ exec_logfile
indicate_current_auto
#------------------------------------------------------------------------------
-# Set up Block Storage service (cinder).
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/cinder-storage-install.html
+# Install and configure a storage node
+# http://docs.openstack.org/newton/install-guide-ubuntu/cinder-storage-install.html
#------------------------------------------------------------------------------
MY_MGMT_IP=$(get_node_ip_in_network "$(hostname)" "mgmt")
@@ -35,16 +35,29 @@ echo "Configuring LVM physical and logical volumes."
cinder_dev=sdb
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Not in install-guide
+# Avoid error due to service not running
+# XXX Alternatively, in /etc/lvm/lvm.conf, set use_lvmetad = 0
+sudo systemctl enable lvm2-lvmetad.service
+sudo systemctl enable lvm2-lvmetad.socket
+sudo systemctl start lvm2-lvmetad.service
+sudo systemctl start lvm2-lvmetad.socket
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
sudo pvcreate /dev/$cinder_dev
sudo vgcreate cinder-volumes /dev/$cinder_dev
conf=/etc/lvm/lvm.conf
-echo "Setting LVM filter line in $conf to only allow /dev/$cinder_dev:"
-sudo sed -i '/^[[:space:]]\{1,\}filter/ s|= .*|= [ "a/'$cinder_dev'/", "r/.*/"]|' $conf
+
+echo "Setting LVM filter line in $conf to only allow /dev/$cinder_dev."
+sudo sed -i '0,/# filter = / {s|# filter = .*|filter = [ "a/'$cinder_dev'/", "r/.*/"]|}' $conf
+
+echo "Verifying LVM filter."
grep "^[[:space:]]\{1,\}filter" $conf
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# Install and configure Cinder Volumes
+# Install and configure components
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing cinder."
@@ -61,7 +74,7 @@ function get_database_url {
}
database_url=$(get_database_url)
-cinder_admin_user=$(service_to_user_name cinder)
+cinder_admin_user=cinder
echo "Setting database connection: $database_url."
iniset_sudo $conf database connection "$database_url"
@@ -78,6 +91,7 @@ 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
@@ -87,26 +101,30 @@ iniset_sudo $conf keystone_authtoken password "$CINDER_PASS"
iniset_sudo $conf DEFAULT my_ip "$MY_MGMT_IP"
-iniset_sudo $conf lvm volume_driver cinder.volume.drivers.lvm.LVMVolumeDriver
-iniset_sudo $conf lvm volume_group cinder-volumes
-iniset_sudo $conf lvm iscsi_protocol iscsi
-iniset_sudo $conf lvm iscsi_helper tgtadm
+iniset_sudo $conf DEFAULT volume_driver cinder.volume.drivers.lvm.LVMVolumeDriver
+iniset_sudo $conf DEFAULT volume_group cinder-volumes
+iniset_sudo $conf DEFAULT iscsi_protocol iscsi
+iniset_sudo $conf DEFAULT iscsi_helper tgtadm
iniset_sudo $conf DEFAULT enabled_backends lvm
iniset_sudo $conf DEFAULT glance_api_servers http://controller:9292
iniset_sudo $conf oslo_concurrency lock_path /var/lib/cinder/tmp
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Finalize installation
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
echo "Restarting cinder service."
sudo service tgt restart
sudo service cinder-volume restart
-sudo rm -f /var/lib/cinder/cinder.sqlite
+# Not in the install-guide:
+sudo rm -v /var/lib/cinder/cinder.sqlite
#------------------------------------------------------------------------------
# Verify the Block Storage installation
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/cinder-verify.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/cinder-verify.html
#------------------------------------------------------------------------------
echo "Verifying Block Storage installation on controller node."
@@ -114,17 +132,21 @@ echo "Verifying Block Storage installation on controller node."
echo "Sourcing the admin credentials."
AUTH="source $CONFIG_DIR/admin-openstackrc.sh"
-# It takes time for Cinder to be aware of its services status.
-# Force restart cinder API and wait for 20 seconds.
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Not in install-guide:
echo "Restarting Cinder API."
node_ssh controller "sudo service cinder-api restart"
+echo "Restarting restarting cinder-scheduler."
+node_ssh controller "sudo service cinder-scheduler restart"
+
echo -n "Waiting for cinder to start."
until node_ssh controller "$AUTH; cinder service-list" >/dev/null 2>&1; do
echo -n .
sleep 1
done
echo
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "cinder service-list is available:"
node_ssh controller "$AUTH; cinder service-list"
@@ -165,6 +187,12 @@ function check_cinder_services {
echo -n "Waiting for all cinder services to start."
check_cinder_services
+#------------------------------------------------------------------------------
+# Verify the Block Storage installation
+# http://docs.openstack.org/newton/install-guide-ubuntu/launch-instance-cinder.html
+# (partial implementation without instance)
+#------------------------------------------------------------------------------
+
echo "Sourcing the demo credentials."
AUTH="source $CONFIG_DIR/demo-openstackrc.sh"
diff --git a/labs/osbash/scripts/ubuntu/setup_glance.sh b/labs/osbash/scripts/ubuntu/setup_glance.sh
index 6e1c3516..b7d11a78 100755
--- a/labs/osbash/scripts/ubuntu/setup_glance.sh
+++ b/labs/osbash/scripts/ubuntu/setup_glance.sh
@@ -14,7 +14,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Install the Image Service (glance).
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/glance-install.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/glance-install.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -27,7 +27,7 @@ setup_database glance "$GLANCE_DB_USER" "$GLANCE_DBPASS"
echo "Sourcing the admin credentials."
source "$CONFIG_DIR/admin-openstackrc.sh"
-glance_admin_user=$(service_to_user_name glance)
+glance_admin_user=glance
# Wait for keystone to come up
wait_for_keystone
@@ -43,11 +43,10 @@ openstack role add \
--user "$glance_admin_user" \
"$ADMIN_ROLE_NAME"
-# Create glance user
echo "Registering glance with keystone so that other services can locate it."
openstack service create \
--name glance \
- --description "OpenStack Image Service" \
+ --description "OpenStack Image" \
image
# Create glance endpoints.
@@ -132,17 +131,11 @@ echo "Restarting glance service."
sudo service glance-registry restart
sudo service glance-api restart
-echo "Removing default SQLite database."
-sudo rm -f /var/lib/glance/glance.sqlite
-
#------------------------------------------------------------------------------
# Verify the Image Service installation
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/glance-verify.html
+# http://docs.openstack.org/newton/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 -n "Waiting for glance to start."
until openstack image list >/dev/null 2>&1; do
sleep 1
@@ -150,7 +143,7 @@ until openstack image list >/dev/null 2>&1; do
done
echo
-echo "Adding CirrOS image as $CIRROS_IMG_NAME to glance."
+echo "Adding pre-downloaded CirrOS image as $CIRROS_IMG_NAME to glance."
openstack image create "$CIRROS_IMG_NAME" \
--file "$HOME/img/$(basename $CIRROS_URL)" \
diff --git a/labs/osbash/scripts/ubuntu/setup_heat_controller.sh b/labs/osbash/scripts/ubuntu/setup_heat_controller.sh
index 799338d3..07fc33fd 100755
--- a/labs/osbash/scripts/ubuntu/setup_heat_controller.sh
+++ b/labs/osbash/scripts/ubuntu/setup_heat_controller.sh
@@ -12,9 +12,12 @@ exec_logfile
indicate_current_auto
+# Wait for keystone to come up
+wait_for_keystone
+
#------------------------------------------------------------------------------
-# Install the Orchestration Service (heat).
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/heat-install.html
+# Install the Orchestration Service (heat)
+# http://docs.openstack.org/project-install-guide/orchestration/newton/install-ubuntu.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -27,7 +30,7 @@ setup_database heat "$HEAT_DB_USER" "$HEAT_DBPASS"
echo "Sourcing the admin credentials."
source "$CONFIG_DIR/admin-openstackrc.sh"
-heat_admin_user=$(service_to_user_name heat)
+heat_admin_user=heat
# Wait for keystone to come up
wait_for_keystone
@@ -92,6 +95,7 @@ openstack user create \
openstack role add \
--domain heat \
+ --user-domain heat \
--user heat_domain_admin \
"$ADMIN_ROLE_NAME"
@@ -112,6 +116,7 @@ openstack role create "heat_stack_user"
echo "Installing heat."
+# Not in install-guide:
# 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.
@@ -157,7 +162,7 @@ iniset_sudo $conf keystone_authtoken username "$heat_admin_user"
iniset_sudo $conf keystone_authtoken password "$HEAT_PASS"
# Configure [trustee] section.
-iniset_sudo $conf trustee auth_plugin password
+iniset_sudo $conf trustee auth_type 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"
@@ -185,7 +190,7 @@ sudo heat-manage db_sync
# Finalize installation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# Re-enable automatic start of heat services
+# Not in install-guide: 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
@@ -196,21 +201,18 @@ sudo service heat-api restart
sudo service heat-api-cfn restart
sudo service heat-engine restart
-echo -n "Waiting for heat stack-list."
-until heat stack-list; do
+echo -n "Waiting for openstack stack list."
+until openstack 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/mitaka/install-guide-ubuntu/heat-verify.html
+# http://docs.openstack.org/project-install-guide/orchestration/newton/verify.html
#------------------------------------------------------------------------------
echo "Listing service components."
-heat service-list
+openstack orchestration service list
diff --git a/labs/osbash/scripts/ubuntu/setup_horizon.sh b/labs/osbash/scripts/ubuntu/setup_horizon.sh
index 26e99b62..1c577e09 100755
--- a/labs/osbash/scripts/ubuntu/setup_horizon.sh
+++ b/labs/osbash/scripts/ubuntu/setup_horizon.sh
@@ -13,13 +13,19 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up OpenStack Dashboard (horizon)
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/horizon-install.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/horizon-install.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Install and configure components
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Note: Installing the dashboard here reloads the apache configuration.
+# Below, we are also changing the configuration and reloading it once we
+# are done. This race can result in a stopped apache (which also means
+# stopped keystone services). We can either sleep for a second
+# after the "apt-get install" call below or do a restart instead
+# of a reload when we are done changing the configuration files.
echo "Installing horizon."
sudo apt-get install -y openstack-dashboard
@@ -30,7 +36,7 @@ auth_host=controller
echo "Setting OPENSTACK_HOST = \"$auth_host\"."
iniset_sudo_no_section $conf "OPENSTACK_HOST" "\"$auth_host\""
-echo "Allowing all hosts to access the dashboard: "
+echo "Allowing all hosts to access the dashboard:"
iniset_sudo_no_section $conf "ALLOWED_HOSTS" "['*', ]"
echo "Telling horizon to use the cache for sessions."
@@ -38,7 +44,7 @@ iniset_sudo_no_section $conf "SESSION_ENGINE" "'django.contrib.sessions.backends
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 "
@@ -62,6 +68,7 @@ fi
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'
@@ -92,7 +99,7 @@ echo "Setting timezone to UTC."
iniset_sudo_no_section $conf "TIME_ZONE" '"UTC"'
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# Customize Horizon
+# Customize Horizon (not in install-guide)
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Removing default Ubuntu theme."
@@ -103,4 +110,5 @@ sudo apt-get remove --auto-remove -y openstack-dashboard-ubuntu-theme
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Reloading the web server configuration."
-sudo service apache2 reload
+# Restarting instead of reloading for reasons explained in comment above.
+sudo service apache2 restart
diff --git a/labs/osbash/scripts/ubuntu/setup_keystone.sh b/labs/osbash/scripts/ubuntu/setup_keystone.sh
index 55ea8d2a..f7f45eec 100755
--- a/labs/osbash/scripts/ubuntu/setup_keystone.sh
+++ b/labs/osbash/scripts/ubuntu/setup_keystone.sh
@@ -15,31 +15,29 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up keystone for controller node
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-install.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/keystone-install.html
#------------------------------------------------------------------------------
echo "Setting up database for keystone."
setup_database keystone "$KEYSTONE_DB_USER" "$KEYSTONE_DBPASS"
-# Create a "shared secret" used as OS_TOKEN, together with OS_URL, before
-# keystone can be used for authentication
-echo -n "Using openssl to generate a random admin token: "
-ADMIN_TOKEN=$(openssl rand -hex 10)
-echo "$ADMIN_TOKEN"
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Not in install-guide:
+echo "Sanity check: local auth should work."
+mysql -u keystone -p"$KEYSTONE_DBPASS" keystone -e quit
+echo "Sanity check: remote auth should work."
+mysql -u keystone -p"$KEYSTONE_DBPASS" keystone -h controller -e quit
-echo "Disabling the keystone service from starting automatically after installation."
-# Will not be re-enabled because apache2 wsgi serves these ports now
-echo "manual" | sudo tee /etc/init/keystone.override
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Install and configure components
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-echo "Installing keystone packages."
-sudo apt-get install -y keystone apache2 libapache2-mod-wsgi
+echo "Installing keystone."
+sudo apt-get install -y keystone
conf=/etc/keystone/keystone.conf
-echo "Configuring [DEFAULT] section in $conf."
-
-echo "Setting admin_token to bootstrap authentication."
-iniset_sudo $conf DEFAULT admin_token "$ADMIN_TOKEN"
+echo "Editing $conf."
function get_database_url {
local db_user=$KEYSTONE_DB_USER
@@ -50,8 +48,6 @@ function get_database_url {
database_url=$(get_database_url)
-echo "Configuring [database] section in /etc/keystone/keystone.conf."
-
echo "Setting database connection: $database_url."
iniset_sudo $conf database connection "$database_url"
@@ -61,72 +57,43 @@ iniset_sudo $conf token provider fernet
echo "Creating the database tables for keystone."
sudo keystone-manage db_sync
-echo "Initializing Fernet keys."
+echo "Initializing Fernet key repositories."
sudo keystone-manage fernet_setup \
--keystone-user keystone \
--keystone-group keystone
-# Configure Apache HTTP server.
+sudo keystone-manage credential_setup \
+ --keystone-user keystone \
+ --keystone-group keystone
+
+echo "Bootstrapping the Identity service."
+sudo keystone-manage bootstrap --bootstrap-password "$ADMIN_PASS" \
+ --bootstrap-admin-url http://controller:35357/v3/ \
+ --bootstrap-internal-url http://controller:35357/v3/ \
+ --bootstrap-public-url http://controller:5000/v3/ \
+ --bootstrap-region-id "$REGION"
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Configure the Apache HTTP server
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
-Listen 5000
-Listen 35357
-
- WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
- WSGIProcessGroup keystone-public
- WSGIScriptAlias / /usr/bin/keystone-wsgi-public
- WSGIApplicationGroup %{GLOBAL}
- WSGIPassAuthorization On
- = 2.4>
- ErrorLogFormat "%{cu}t %M"
-
- ErrorLog /var/log/apache2/keystone.log
- CustomLog /var/log/apache2/keystone_access.log combined
+conf=/etc/apache2/sites-enabled/keystone.conf
+if [ -f $conf ]; then
+ echo "Identity service virtual hosts enabled already."
+else
+ echo "Enabling the Identity service virtual hosts."
+ sudo ln -s /etc/apache2/sites-available/keystone.conf \
+ /etc/apache2/sites-enabled
+fi
-
- = 2.4>
- Require all granted
-
-
- Order allow,deny
- Allow from all
-
-
-
-
-
- WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
- WSGIProcessGroup keystone-admin
- WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
- WSGIApplicationGroup %{GLOBAL}
- WSGIPassAuthorization On
- = 2.4>
- ErrorLogFormat "%{cu}t %M"
-
- ErrorLog /var/log/apache2/keystone.log
- CustomLog /var/log/apache2/keystone_access.log combined
-
-
- = 2.4>
- Require all granted
-
-
- Order allow,deny
- Allow from all
-
-
-
-
-WSGI
-
-echo "Enabling the identity service virtual hosts."
-sudo ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Finalize the installation
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Restarting apache."
sudo service apache2 restart
@@ -134,72 +101,23 @@ sudo service apache2 restart
echo "Removing default SQLite database."
sudo rm -f /var/lib/keystone/keystone.db
-#------------------------------------------------------------------------------
-# Create the service entity and API endpoints
-# 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
+# Set environment variables for authentication
+export OS_USERNAME=$ADMIN_USER_NAME
+export OS_PASSWORD=$ADMIN_PASS
+export OS_PROJECT_NAME=$ADMIN_PROJECT_NAME
+export OS_USER_DOMAIN_NAME=Default
+export OS_PROJECT_DOMAIN_NAME=Default
+export OS_AUTH_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 \
- --description "OpenStack Identity" \
- identity
-
-echo "Creating endpoints for keystone."
-openstack endpoint create --region "$REGION" \
- identity public http://controller:5000/v3
-
-openstack endpoint create --region "$REGION" \
- identity internal http://controller:5000/v3
-
-openstack endpoint create --region "$REGION" \
- identity admin http://controller:35357/v3
-
#------------------------------------------------------------------------------
-# Create projects, users, and roles
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-users.html
+# Create a domain, projects, users, and roles
+# http://docs.openstack.org/newton/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" \
- "$ADMIN_PROJECT_NAME"
-
-echo "Creating admin user."
-openstack user create --domain default \
- --password "$ADMIN_PASS" \
- "$ADMIN_USER_NAME"
-
-echo "Creating admin role."
-openstack role create "$ADMIN_ROLE_NAME"
-
-echo "Adding admin role to admin project."
-openstack role add \
- --project "$ADMIN_PROJECT_NAME" \
- --user "$ADMIN_USER_NAME" \
- "$ADMIN_ROLE_NAME"
-
echo "Creating service project."
openstack project create --domain default \
--description "Service Project" \
@@ -227,23 +145,21 @@ openstack role add \
#------------------------------------------------------------------------------
# Verify operation
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/keystone-verify.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/keystone-verify.html
#------------------------------------------------------------------------------
echo "Verifying keystone installation."
-# Disable temporary authentication token mechanism
+# Disable the temporary authentication token mechanism
conf=/etc/keystone/keystone-paste.ini
+echo "Removing admin_token_auth from pipelines."
+sudo ls -l $conf
+sudo sed -i '/^pipeline = / s/admin_token_auth //' $conf
+sudo ls -l $conf
-for section in pipeline:public_api pipeline:admin_api pipeline:api_v3; do
- if ini_has_option_sudo $conf $section admin_token_auth; then
- echo "Disabling admin_token_auth in section $section."
- inicomment_sudo $conf $section admin_token_auth
- fi
-done
-
+# XXX still in install-guide, but no longer necessary
# From this point on, we are going to use keystone for authentication
-unset OS_TOKEN OS_URL
+unset OS_URL
echo "Requesting an authentication token as an admin user."
openstack \
@@ -256,39 +172,6 @@ openstack \
--os-password "$ADMIN_PASS" \
token issue
-#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 \
@@ -299,22 +182,3 @@ openstack \
--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/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
diff --git a/labs/osbash/scripts/ubuntu/setup_neutron_compute.sh b/labs/osbash/scripts/ubuntu/setup_neutron_compute.sh
index 4475257f..00092bcc 100755
--- a/labs/osbash/scripts/ubuntu/setup_neutron_compute.sh
+++ b/labs/osbash/scripts/ubuntu/setup_neutron_compute.sh
@@ -15,7 +15,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up OpenStack Networking (neutron) for compute node.
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-compute-install.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/neutron-compute-install.html
#------------------------------------------------------------------------------
echo "Installing networking components for compute node."
@@ -40,7 +40,7 @@ iniset_sudo $conf oslo_messaging_rabbit rabbit_password "$RABBIT_PASS"
# Configuring [DEFAULT] section
iniset_sudo $conf DEFAULT auth_strategy keystone
-neutron_admin_user=$(service_to_user_name neutron)
+neutron_admin_user=neutron
# Configuring [keystone_authtoken] section
iniset_sudo $conf keystone_authtoken auth_uri http://controller:5000
diff --git a/labs/osbash/scripts/ubuntu/setup_neutron_compute_part_2.sh b/labs/osbash/scripts/ubuntu/setup_neutron_compute_part_2.sh
index 7fa400bc..c37542dc 100755
--- a/labs/osbash/scripts/ubuntu/setup_neutron_compute_part_2.sh
+++ b/labs/osbash/scripts/ubuntu/setup_neutron_compute_part_2.sh
@@ -15,23 +15,20 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up OpenStack Networking (neutron) for compute node.
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-compute-install.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/neutron-compute-install.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Configure Compute to use Networking
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-neutron_admin_user=$(service_to_user_name neutron)
+neutron_admin_user=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 auth_type password
iniset_sudo $conf neutron project_domain_name default
iniset_sudo $conf neutron user_domain_name default
iniset_sudo $conf neutron region_name "$REGION"
@@ -51,13 +48,13 @@ sudo service neutron-linuxbridge-agent restart
#------------------------------------------------------------------------------
# Networking Option 2: Self-service networks
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-verify-option2.html
+# http://docs.openstack.org/newton/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 "Listing agents to verify successful launch of the neutron agents."
echo "neutron agent-list"
neutron agent-list
diff --git a/labs/osbash/scripts/ubuntu/setup_neutron_controller.sh b/labs/osbash/scripts/ubuntu/setup_neutron_controller.sh
index 9b3d2cf3..38d6cb38 100755
--- a/labs/osbash/scripts/ubuntu/setup_neutron_controller.sh
+++ b/labs/osbash/scripts/ubuntu/setup_neutron_controller.sh
@@ -14,7 +14,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up OpenStack Networking (neutron) for controller node.
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-controller-install.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/neutron-controller-install.html
#------------------------------------------------------------------------------
echo "Setting up database for neutron."
@@ -22,7 +22,7 @@ setup_database neutron "$NEUTRON_DB_USER" "$NEUTRON_DBPASS"
source "$CONFIG_DIR/admin-openstackrc.sh"
-neutron_admin_user=$(service_to_user_name neutron)
+neutron_admin_user=neutron
# Wait for keystone to come up
wait_for_keystone
diff --git a/labs/osbash/scripts/ubuntu/setup_neutron_controller_part_2.sh b/labs/osbash/scripts/ubuntu/setup_neutron_controller_part_2.sh
index 391e2549..844d5a9d 100755
--- a/labs/osbash/scripts/ubuntu/setup_neutron_controller_part_2.sh
+++ b/labs/osbash/scripts/ubuntu/setup_neutron_controller_part_2.sh
@@ -14,12 +14,12 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Set up OpenStack Networking (neutron) for controller node.
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-controller-install.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/neutron-controller-install.html
#------------------------------------------------------------------------------
source "$CONFIG_DIR/admin-openstackrc.sh"
-neutron_admin_user=$(service_to_user_name neutron)
+neutron_admin_user=neutron
# Wait for keystone to come up
wait_for_keystone
@@ -30,18 +30,7 @@ wait_for_keystone
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_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"
-
iniset_sudo $conf DEFAULT nova_metadata_ip controller
-
iniset_sudo $conf DEFAULT metadata_proxy_shared_secret "$METADATA_SECRET"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -52,19 +41,13 @@ 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.
-# (HTTP 500) (Request-ID: req-1ac10a31-4da0-4bdc-8f9f-7d941b408072)
-iniset_sudo $conf neutron auth_plugin password
+iniset_sudo $conf neutron auth_type password
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"
-
iniset_sudo $conf neutron service_metadata_proxy True
iniset_sudo $conf neutron metadata_proxy_shared_secret "$METADATA_SECRET"
@@ -72,6 +55,7 @@ iniset_sudo $conf neutron metadata_proxy_shared_secret "$METADATA_SECRET"
# Finalize installation
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+echo "Populating the database."
sudo neutron-db-manage \
--config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini \
@@ -98,17 +82,16 @@ if type neutron-l3-agent; then
sudo service neutron-l3-agent restart
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
+# http://docs.openstack.org/newton/install-guide-ubuntu/neutron-verify.html
#------------------------------------------------------------------------------
-echo "Verifying operation."
+echo -n "Verifying operation."
until neutron ext-list >/dev/null 2>&1; do
sleep 1
+ echo -n .
done
+echo
neutron ext-list
diff --git a/labs/osbash/scripts/ubuntu/setup_nova_compute.sh b/labs/osbash/scripts/ubuntu/setup_nova_compute.sh
index 1a83ebc7..7a202e42 100755
--- a/labs/osbash/scripts/ubuntu/setup_nova_compute.sh
+++ b/labs/osbash/scripts/ubuntu/setup_nova_compute.sh
@@ -14,18 +14,17 @@ exec_logfile
indicate_current_auto
#------------------------------------------------------------------------------
-# Set up OpenStack Compute (nova) for compute node.
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/nova-compute-install.html
+# Install and configure a compute node
+# http://docs.openstack.org/newton/install-guide-ubuntu/nova-compute-install.html
#------------------------------------------------------------------------------
-echo "Installing nova for compute node."
-
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# 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.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+echo "Installing nova for compute node."
sudo apt-get install -y nova-compute-qemu
echo "Configuring nova for compute node."
@@ -34,6 +33,7 @@ conf=/etc/nova/nova.conf
echo "Configuring $conf."
# Configure [DEFAULT] section.
+iniset_sudo $conf DEFAULT enabled_apis osapi_compute,metadata
iniset_sudo $conf DEFAULT rpc_backend rabbit
# Configure [oslo_messaging_rabbit] section.
@@ -44,7 +44,7 @@ iniset_sudo $conf oslo_messaging_rabbit rabbit_password "$RABBIT_PASS"
# Configuring [DEFAULT] section.
iniset_sudo $conf DEFAULT auth_strategy keystone
-nova_admin_user=$(service_to_user_name nova)
+nova_admin_user=nova
MY_MGMT_IP=$(get_node_ip_in_network "$(hostname)" "mgmt")
@@ -100,5 +100,16 @@ echo "Config: $(sudo grep virt_type $conf)"
echo "Restarting nova services."
sudo service nova-compute restart
+# Not in install-guide:
# Remove SQLite database created by Ubuntu package for nova.
sudo rm -v /var/lib/nova/nova.sqlite
+
+#------------------------------------------------------------------------------
+# Verify operation
+# http://docs.openstack.org/newton/install-guide-ubuntu/nova-verify.html
+#------------------------------------------------------------------------------
+
+echo "Verifying operation of the Compute service."
+
+echo "openstack compute service list"
+openstack compute service list
diff --git a/labs/osbash/scripts/ubuntu/setup_nova_controller.sh b/labs/osbash/scripts/ubuntu/setup_nova_controller.sh
index 9115381a..bf57db59 100755
--- a/labs/osbash/scripts/ubuntu/setup_nova_controller.sh
+++ b/labs/osbash/scripts/ubuntu/setup_nova_controller.sh
@@ -14,7 +14,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Install Compute controller services
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/nova-controller-install.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/nova-controller-install.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -30,7 +30,7 @@ setup_database nova_api "$NOVA_DB_USER" "$NOVA_DBPASS"
echo "Sourcing the admin credentials."
source "$CONFIG_DIR/admin-openstackrc.sh"
-nova_admin_user=$(service_to_user_name nova)
+nova_admin_user=nova
# Wait for keystone to come up
wait_for_keystone
@@ -70,8 +70,8 @@ openstack endpoint create \
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Installing nova for controller node."
-sudo apt-get install -y nova-api nova-cert nova-conductor \
- nova-consoleauth nova-novncproxy nova-scheduler
+sudo apt-get install -y nova-api nova-conductor nova-consoleauth \
+ nova-novncproxy nova-scheduler
conf=/etc/nova/nova.conf
@@ -128,9 +128,11 @@ iniset_sudo $conf glance api_servers http://controller:9292
iniset_sudo $conf oslo_concurrency lock_path /var/lib/nova/tmp
# Delete logdir line
+# According to install-guide, "Due to a packaging bug, remove the logdir option
+# from the [DEFAULT] section."
sudo sed -i "/^logdir/ d" $conf
-echo "Creating the database tables for nova."
+echo "Populating the Compute databases."
sudo nova-manage api_db sync
sudo nova-manage db sync
@@ -139,33 +141,28 @@ sudo nova-manage db sync
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Restarting nova services."
-declare -a nova_services=(nova-api nova-cert nova-consoleauth \
- nova-scheduler nova-conductor nova-novncproxy)
+declare -a nova_services=(nova-api nova-consoleauth nova-scheduler \
+ nova-conductor nova-novncproxy)
for nova_service in "${nova_services[@]}"; do
echo "Restarting $nova_service."
sudo service "$nova_service" restart
done
+# Not in install-guide:
echo "Removing default SQLite database."
-sudo rm -f /var/lib/nova/nova.sqlite
+sudo rm -v /var/lib/nova/nova.sqlite
#------------------------------------------------------------------------------
-# Verify the Compute controller installation
+# Verify the Compute controller installation (not in install-guide)
#------------------------------------------------------------------------------
-echo "Verify nova service status."
-echo "Checking nova services."
-loop=0
+echo -n "Verifying operation of the Compuyte service."
until openstack service list 2>/dev/null; do
- echo -n .
- loop=$((loop+1))
- if ((loop%10 == 0)); then
- echo
- echo still checking
- fi
sleep 1
+ echo -n .
done
+echo
echo "Checking nova endpoints."
openstack catalog list
diff --git a/labs/osbash/scripts/ubuntu/setup_self-service_compute.sh b/labs/osbash/scripts/ubuntu/setup_self-service_compute.sh
index 5b2b1854..31debfe4 100755
--- a/labs/osbash/scripts/ubuntu/setup_self-service_compute.sh
+++ b/labs/osbash/scripts/ubuntu/setup_self-service_compute.sh
@@ -14,7 +14,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Networking Option 2: Self-service networks
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-compute-install-option2.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/neutron-compute-install-option2.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -36,9 +36,6 @@ iniset_sudo $conf vxlan enable_vxlan True
iniset_sudo $conf vxlan local_ip $OVERLAY_INTERFACE_IP_ADDRESS
iniset_sudo $conf vxlan l2_population True
-# Edit the [agent] section.
-iniset_sudo $conf agent prevent_arp_spoofing True
-
# Edit the [securitygroup] section.
iniset_sudo $conf securitygroup enable_security_group True
iniset_sudo $conf securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
diff --git a/labs/osbash/scripts/ubuntu/setup_self-service_controller.sh b/labs/osbash/scripts/ubuntu/setup_self-service_controller.sh
index 017133dc..498644f4 100755
--- a/labs/osbash/scripts/ubuntu/setup_self-service_controller.sh
+++ b/labs/osbash/scripts/ubuntu/setup_self-service_controller.sh
@@ -15,7 +15,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Networking Option 2: Self-service networks
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/neutron-controller-install-option2.html
+# http://docs.openstack.org/newton/install-guide-ubuntu/neutron-controller-install-option2.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -38,11 +38,9 @@ function get_database_url {
database_url=$(get_database_url)
-# Get neutron service info.
-neutron_admin_user=$(service_to_user_name neutron)
+neutron_admin_user=neutron
-# Get nova service info.
-nova_admin_user=$(service_to_user_name nova)
+nova_admin_user=nova
echo "Setting database connection: $database_url."
conf=/etc/neutron/neutron.conf
@@ -79,7 +77,6 @@ iniset_sudo $conf keystone_authtoken password "$NEUTRON_PASS"
# Configure nova related parameters
iniset_sudo $conf DEFAULT notify_nova_on_port_status_changes True
iniset_sudo $conf DEFAULT notify_nova_on_port_data_changes True
-iniset_sudo $conf DEFAULT nova_url http://controller:8774/v2
# Configure [nova] section.
iniset_sudo $conf nova auth_url http://controller:35357
@@ -131,9 +128,6 @@ iniset_sudo $conf vxlan enable_vxlan True
iniset_sudo $conf vxlan local_ip $OVERLAY_INTERFACE_IP_ADDRESS
iniset_sudo $conf vxlan l2_population True
-# Edit the [agent] section.
-iniset_sudo $conf agent prevent_arp_spoofing True
-
# Edit the [securitygroup] section.
iniset_sudo $conf securitygroup enable_security_group True
iniset_sudo $conf securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
@@ -160,6 +154,7 @@ iniset_sudo $conf DEFAULT interface_driver neutron.agent.linux.interface.BridgeI
iniset_sudo $conf DEFAULT dhcp_driver neutron.agent.linux.dhcp.Dnsmasq
iniset_sudo $conf DEFAULT enable_isolated_metadata True
+# Not in install-guide:
iniset_sudo $conf DEFAULT dnsmasq_config_file /etc/neutron/dnsmasq-neutron.conf
cat << DNSMASQ | sudo tee /etc/neutron/dnsmasq-neutron.conf
diff --git a/labs/osbash/scripts/ubuntu/setup_telemetry_compute.sh b/labs/osbash/scripts/ubuntu/setup_telemetry_compute.sh
index c7774bdd..68c3237a 100755
--- a/labs/osbash/scripts/ubuntu/setup_telemetry_compute.sh
+++ b/labs/osbash/scripts/ubuntu/setup_telemetry_compute.sh
@@ -15,13 +15,17 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Enable Compute service meters
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-nova.html
+# http://docs.openstack.org/project-install-guide/telemetry/newton/configure_services/nova/install-nova-ubuntu.html
#------------------------------------------------------------------------------
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Install and configure components
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
echo "Installing ceilometer."
sudo apt-get install -y ceilometer-agent-compute
-ceilometer_admin_user=$(service_to_user_name ceilometer)
+ceilometer_admin_user=ceilometer
conf=/etc/ceilometer/ceilometer.conf
echo "Configuring $conf."
@@ -49,15 +53,19 @@ 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 auth_url http://controller:5000
+iniset_sudo $conf service_credentials project_domain_id default
+iniset_sudo $conf service_credentials user_domain_id default
+iniset_sudo $conf service_credentials auth_type password
+iniset_sudo $conf service_credentials username "$ceilometer_admin_user"
+iniset_sudo $conf service_credentials project_name "$SERVICE_PROJECT_NAME"
+iniset_sudo $conf service_credentials password "$CEILOMETER_PASS"
iniset_sudo $conf service_credentials interface internalURL
iniset_sudo $conf service_credentials region_name "$REGION"
-# Marked "optional" in install-guide
-iniset_sudo $conf DEFAULT verbose True
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Configure Compute to use Telemetry
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Configuring nova.conf."
conf=/etc/ceilometer/ceilometer.conf
@@ -66,7 +74,12 @@ conf=/etc/ceilometer/ceilometer.conf
iniset_sudo $conf DEFAULT instance_usage_audit True
iniset_sudo $conf DEFAULT instance_usage_audit_period hour
iniset_sudo $conf DEFAULT notify_on_state_change vm_and_task_state
-iniset_sudo $conf DEFAULT notification_driver messagingv2
+
+iniset_sudo $conf oslo_messaging_notifications driver messagingv2
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Finalize installation
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
echo "Restarting telemetry service."
sudo service ceilometer-agent-compute restart
@@ -76,7 +89,7 @@ sudo service nova-compute restart
#------------------------------------------------------------------------------
# Enable Block Storage meters
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-cinder.html
+# http://docs.openstack.org/project-install-guide/telemetry/newton/configure_services/cinder/install-cinder-ubuntu.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -88,12 +101,12 @@ echo "Configuring $conf."
iniset_sudo $conf oslo_messaging_notifications driver messagingv2
-echo "Restarting cinder-volumes service."
+echo "Restarting the Block Storage services."
sudo service cinder-volume restart
#------------------------------------------------------------------------------
# Verify operation
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-verify.html
+# http://docs.openstack.org/project-install-guide/telemetry/newton/verify.html
#------------------------------------------------------------------------------
echo "Verifying the Telemetry installation."
diff --git a/labs/osbash/scripts/ubuntu/setup_telemetry_controller.sh b/labs/osbash/scripts/ubuntu/setup_telemetry_controller.sh
index e30a8015..8a0087b7 100755
--- a/labs/osbash/scripts/ubuntu/setup_telemetry_controller.sh
+++ b/labs/osbash/scripts/ubuntu/setup_telemetry_controller.sh
@@ -15,7 +15,7 @@ indicate_current_auto
#------------------------------------------------------------------------------
# Install the Telemetry service
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-install.html
+# http://docs.openstack.org/project-install-guide/telemetry/newton/install-base-ubuntu.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -23,7 +23,7 @@ indicate_current_auto
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Create Ceilometer user and database.
-ceilometer_admin_user=$(service_to_user_name ceilometer)
+ceilometer_admin_user=ceilometer
mongodb_user=$CEILOMETER_DB_USER
@@ -117,24 +117,54 @@ 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 auth_type password
+iniset_sudo $conf service_credentials os_auth_url http://controller:5000/v3
+iniset_sudo $conf service_credentials project_domain_name default
+iniset_sudo $conf service_credentials user_domain_name default
+iniset_sudo $conf service_credentials project_name "$SERVICE_PROJECT_NAME"
+iniset_sudo $conf service_credentials username "$ceilometer_admin_user"
+iniset_sudo $conf service_credentials password "$CEILOMETER_PASS"
iniset_sudo $conf service_credentials interface internalURL
iniset_sudo $conf service_credentials region_name "$REGION"
-iniset_sudo $conf DEFAULT verbose True
+# FIXME /var/www/cgi-bin/ceilometer/app does not exist
+echo "Creating /etc/apache2/sites-available/wsgi-ceilometer.conf"
+cat << WSGI | sudo tee -a /etc/apache2/sites-available/wsgi-ceilometer.conf
+Listen 8777
+
+
+ WSGIDaemonProcess ceilometer-api processes=2 threads=10 user=ceilometer group=ceilometer display-name=%{GROUP}
+ WSGIProcessGroup ceilometer-api
+ WSGIScriptAlias / "/var/www/cgi-bin/ceilometer/app"
+ WSGIApplicationGroup %{GLOBAL}
+ ErrorLog /var/log/apache2/ceilometer_error.log
+ CustomLog /var/log/apache2/ceilometer_access.log combined
+
+
+WSGISocketPrefix /var/run/apache2
+WSGI
+
+echo "Enabling the Telemetry service virtual hosts."
+
+# FIXME The documentation uses ceilometer here
+# https://bugs.launchpad.net/ceilometer/+bug/1631629
+sudo a2ensite wsgi-ceilometer
+
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+# Install and configure components
+# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+echo "Reloading the Apache HTTP server."
+sudo service apache2 reload
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
#------------------------------------------------------------------------------
# Enable Image service meters
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-glance.html
+# http://docs.openstack.org/project-install-guide/telemetry/newton/configure_services/glance/install-glance-ubuntu.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -169,12 +199,13 @@ 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"
+echo "Restarting the Image service."
sudo service glance-registry restart
sudo service glance-api restart
#------------------------------------------------------------------------------
# Enable Block Storage meters
-# http://docs.openstack.org/mitaka/install-guide-ubuntu/ceilometer-cinder.html
+# http://docs.openstack.org/project-install-guide/telemetry/newton/configure_services/cinder/install-cinder-ubuntu.html
#------------------------------------------------------------------------------
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -185,8 +216,8 @@ conf=/etc/cinder/cinder.conf
echo "Configuring $conf."
# Configure [oslo_messaging_notifications] section.
-iniset_sudo $conf oslo_messaging_notifications notification_driver messagingv2
+iniset_sudo $conf oslo_messaging_notifications driver messagingv2
-echo "Restarting cinder services."
+echo "Restarting the Block Storage services on the controller node."
sudo service cinder-api restart
sudo service cinder-scheduler restart
diff --git a/labs/osbash/tools/repeat-test.sh b/labs/osbash/tools/repeat-test.sh
old mode 100644
new mode 100755