From 148ef079e4100483670185e9754ae57dce11a5c4 Mon Sep 17 00:00:00 2001 From: Roger Luethi Date: Tue, 26 Nov 2019 09:40:37 +0100 Subject: [PATCH] Introduce placement-api as a separate service - pre-download: download placement-api, not nova-placement-api - add setup_placement_controller.sh to install placement-api - scripts.ubuntu_cluster: add setup_placement_controller.sh - setup_nova_controller: remove code for placement openstack/nova commit f21b07153d7e7849883efde6a9b6c11288b17add Remove placement from nova install docs Change-Id: I7c9a4837c83318188043a3b6d66fc077db4ba02b --- labs/osbash/config/scripts.ubuntu_cluster | 1 + .../osbash/scripts/ubuntu/apt_pre-download.sh | 2 +- .../scripts/ubuntu/setup_nova_controller.sh | 56 +------- .../ubuntu/setup_placement_controller.sh | 134 ++++++++++++++++++ 4 files changed, 141 insertions(+), 52 deletions(-) create mode 100755 labs/osbash/scripts/ubuntu/setup_placement_controller.sh diff --git a/labs/osbash/config/scripts.ubuntu_cluster b/labs/osbash/config/scripts.ubuntu_cluster index f31d3868..052c5e90 100644 --- a/labs/osbash/config/scripts.ubuntu_cluster +++ b/labs/osbash/config/scripts.ubuntu_cluster @@ -25,6 +25,7 @@ cmd snapshot_cycle -n controller glance_installed # Compute cmd queue ubuntu/setup_nova_controller.sh +cmd queue ubuntu/setup_placement_controller.sh cmd snapshot_cycle -n controller nova-controller_installed # Networking diff --git a/labs/osbash/scripts/ubuntu/apt_pre-download.sh b/labs/osbash/scripts/ubuntu/apt_pre-download.sh index fdc5870a..260bcf9b 100755 --- a/labs/osbash/scripts/ubuntu/apt_pre-download.sh +++ b/labs/osbash/scripts/ubuntu/apt_pre-download.sh @@ -39,7 +39,7 @@ apt_download glance python3-glanceclient apt_download nova-api nova-conductor nova-novncproxy nova-scheduler # Placement Controller -apt_download nova-placement-api +apt_download placement-api # Neutron Controller apt_download neutron-server neutron-plugin-ml2 \ diff --git a/labs/osbash/scripts/ubuntu/setup_nova_controller.sh b/labs/osbash/scripts/ubuntu/setup_nova_controller.sh index bc979474..91260d3e 100755 --- a/labs/osbash/scripts/ubuntu/setup_nova_controller.sh +++ b/labs/osbash/scripts/ubuntu/setup_nova_controller.sh @@ -32,9 +32,6 @@ echo "Setting up first cell database." # https://docs.openstack.org/developer/nova/cells.html#fresh-install setup_database nova_cell0 "$NOVA_DB_USER" "$NOVA_DBPASS" -echo "Setting up placement database." -setup_database placement "$PLACEMENT_DB_USER" "$PLACEMENT_DBPASS" - echo "Sourcing the admin credentials." source "$CONFIG_DIR/admin-openstackrc.sh" @@ -74,50 +71,12 @@ openstack endpoint create \ --region "$REGION" \ compute admin http://controller:8774/v2.1 -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -echo "Creating placement user and giving it the admin role." -openstack user create \ - --domain default \ - --password "$PLACEMENT_PASS" \ - "$placement_admin_user" - -openstack role add \ - --project "$SERVICE_PROJECT_NAME" \ - --user "$placement_admin_user" \ - "$ADMIN_ROLE_NAME" - -echo "Creating the Placement API entry in the service catalog." -openstack service create \ - --name placement \ - --description "Placement API" \ - placement - -echo "Creating nova endpoints." -openstack endpoint create \ - --region "$REGION" \ - placement public http://controller:8778 - -openstack endpoint create \ - --region "$REGION" \ - placement internal http://controller:8778 - -openstack endpoint create \ - --region "$REGION" \ - placement admin http://controller:8778 - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Install and configure components # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - echo "Installing nova for controller node." -sudo apt install -y nova-api nova-conductor nova-novncproxy nova-scheduler \ - nova-placement-api - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# Reduce memory usage (not in install-guide) -conf=/etc/apache2/sites-enabled/nova-placement-api.conf -sudo sed -i --follow-symlinks '/WSGIDaemonProcess/ s/processes=[0-9]*/processes=1/' $conf -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +sudo apt install -y nova-api nova-conductor nova-novncproxy nova-scheduler conf=/etc/nova/nova.conf @@ -131,11 +90,6 @@ database_url="mysql+pymysql://$NOVA_DB_USER:$NOVA_DBPASS@controller/nova" echo "Setting database connection: $database_url." iniset_sudo $conf database connection "$database_url" -# Configure [placement_database] section. -database_url="mysql+pymysql://$PLACEMENT_DB_USER:$PLACEMENT_DBPASS@controller/placement" -echo "Setting placement database connection: $database_url." -iniset_sudo $conf placement_database connection "$database_url" - echo "Configuring nova services." echo "Configuring RabbitMQ message queue access." @@ -177,7 +131,7 @@ iniset_sudo $conf oslo_concurrency lock_path /var/lib/nova/tmp sudo grep "^log_dir" $conf sudo sed -i "/^log_dir/ d" $conf -echo "Configuring Placement services." +echo "Configuring access to the Placement service." iniset_sudo $conf placement region_name RegionOne iniset_sudo $conf placement project_domain_name Default iniset_sudo $conf placement project_name "$SERVICE_PROJECT_NAME" @@ -187,7 +141,7 @@ iniset_sudo $conf placement auth_url http://controller:5000/v3 iniset_sudo $conf placement username "$placement_admin_user" iniset_sudo $conf placement password "$PLACEMENT_PASS" -echo "Populating the nova-api and placement databases." +echo "Populating the nova-api databases." sudo nova-manage api_db sync echo "Registering the cell0 database." @@ -215,8 +169,8 @@ wait_for_keystone # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - echo "Restarting nova services." -declare -a nova_services=(nova-api nova-consoleauth nova-scheduler \ - nova-conductor nova-novncproxy) +declare -a nova_services=(nova-api nova-scheduler nova-conductor \ + nova-novncproxy) for nova_service in "${nova_services[@]}"; do echo "Restarting $nova_service." diff --git a/labs/osbash/scripts/ubuntu/setup_placement_controller.sh b/labs/osbash/scripts/ubuntu/setup_placement_controller.sh new file mode 100755 index 00000000..808488ec --- /dev/null +++ b/labs/osbash/scripts/ubuntu/setup_placement_controller.sh @@ -0,0 +1,134 @@ +#!/usr/bin/env bash + +set -o errexit -o nounset + +TOP_DIR=$(cd $(cat "../TOP_DIR" 2>/dev/null||echo $(dirname "$0"))/.. && pwd) + +source "$TOP_DIR/config/paths" +source "$CONFIG_DIR/credentials" +source "$LIB_DIR/functions.guest.sh" + +exec_logfile + +indicate_current_auto + +#------------------------------------------------------------------------------ +# Install Placement services +# https://docs.openstack.org/placement/train/install/install-ubuntu.html +#------------------------------------------------------------------------------ + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Prerequisites +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +echo "Setting up placement database." +setup_database placement "$PLACEMENT_DB_USER" "$PLACEMENT_DBPASS" + +echo "Sourcing the admin credentials." +source "$CONFIG_DIR/admin-openstackrc.sh" + +placement_admin_user=placement + +# Wait for keystone to come up +wait_for_keystone + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +echo "Creating placement user and giving it the admin role." +openstack user create \ + --domain default \ + --password "$PLACEMENT_PASS" \ + "$placement_admin_user" + +openstack role add \ + --project "$SERVICE_PROJECT_NAME" \ + --user "$placement_admin_user" \ + "$ADMIN_ROLE_NAME" + +echo "Creating the Placement API entry in the service catalog." +openstack service create \ + --name placement \ + --description "Placement API" \ + placement + +echo "Creating placement endpoints." +openstack endpoint create \ + --region "$REGION" \ + placement public http://controller:8778 + +openstack endpoint create \ + --region "$REGION" \ + placement internal http://controller:8778 + +openstack endpoint create \ + --region "$REGION" \ + placement admin http://controller:8778 + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Install and configure components +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +echo "Installing placement-api for controller node." +sudo apt install -y placement-api + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Reduce memory usage (not in install-guide) +conf=/etc/apache2/sites-enabled/placement-api.conf +sudo sed -i --follow-symlinks '/WSGIDaemonProcess/ s/processes=[0-9]*/processes=1/' $conf +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +conf=/etc/placement/placement.conf + +# Configure [placement_database] section. +database_url="mysql+pymysql://$PLACEMENT_DB_USER:$PLACEMENT_DBPASS@controller/placement" +echo "Setting placement database connection: $database_url." +iniset_sudo $conf placement_database connection "$database_url" + +iniset_sudo $conf api auth_strategy keystone + +echo "Configuring Placement services." +iniset_sudo $conf keystone_authtoken auth_url http://controller:5000/v3 +iniset_sudo $conf keystone_authtoken memcached_servers controller:11211 +iniset_sudo $conf keystone_authtoken auth_type password +iniset_sudo $conf keystone_authtoken project_domain_name Default +iniset_sudo $conf keystone_authtoken user_domain_name Default +iniset_sudo $conf keystone_authtoken project_name "$SERVICE_PROJECT_NAME" +iniset_sudo $conf keystone_authtoken username "$placement_admin_user" +iniset_sudo $conf keystone_authtoken password "$PLACEMENT_PASS" + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +echo "Populating the placement database." +sudo placement-manage db sync + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# Finalize installation +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +echo "Restarting apache2." +sudo service apache2 restart + +#------------------------------------------------------------------------------ +# Verify the Placement controller installation +# https://docs.openstack.org/placement/train/install/verify.html +#------------------------------------------------------------------------------ + +echo "Sourcing the admin credentials." +source "$CONFIG_DIR/admin-openstackrc.sh" + +# Wait for keystone to come up +wait_for_keystone + +# XXX difference to install-guide: root privileges seem to be needed for the +# placement-status upgrade check +echo "Performing status check." +sudo placement-status upgrade check + +# XXX not in the install-guide: install and use python3-pip (not python2) +echo "Installing python3-pip." +sudo apt install -y python3-pip + +echo "Installing the placement client." +sudo pip3 install osc-placement + +echo "Listing available resource classes and traits." +openstack --os-placement-api-version 1.2 resource class list --sort-column name +openstack --os-placement-api-version 1.6 trait list --sort-column name