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
This commit is contained in:
parent
6b77657816
commit
148ef079e4
|
@ -25,6 +25,7 @@ cmd snapshot_cycle -n controller glance_installed
|
||||||
|
|
||||||
# Compute
|
# Compute
|
||||||
cmd queue ubuntu/setup_nova_controller.sh
|
cmd queue ubuntu/setup_nova_controller.sh
|
||||||
|
cmd queue ubuntu/setup_placement_controller.sh
|
||||||
cmd snapshot_cycle -n controller nova-controller_installed
|
cmd snapshot_cycle -n controller nova-controller_installed
|
||||||
|
|
||||||
# Networking
|
# Networking
|
||||||
|
|
|
@ -39,7 +39,7 @@ apt_download glance python3-glanceclient
|
||||||
apt_download nova-api nova-conductor nova-novncproxy nova-scheduler
|
apt_download nova-api nova-conductor nova-novncproxy nova-scheduler
|
||||||
|
|
||||||
# Placement Controller
|
# Placement Controller
|
||||||
apt_download nova-placement-api
|
apt_download placement-api
|
||||||
|
|
||||||
# Neutron Controller
|
# Neutron Controller
|
||||||
apt_download neutron-server neutron-plugin-ml2 \
|
apt_download neutron-server neutron-plugin-ml2 \
|
||||||
|
|
|
@ -32,9 +32,6 @@ echo "Setting up first cell database."
|
||||||
# https://docs.openstack.org/developer/nova/cells.html#fresh-install
|
# https://docs.openstack.org/developer/nova/cells.html#fresh-install
|
||||||
setup_database nova_cell0 "$NOVA_DB_USER" "$NOVA_DBPASS"
|
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."
|
echo "Sourcing the admin credentials."
|
||||||
source "$CONFIG_DIR/admin-openstackrc.sh"
|
source "$CONFIG_DIR/admin-openstackrc.sh"
|
||||||
|
|
||||||
|
@ -74,50 +71,12 @@ openstack endpoint create \
|
||||||
--region "$REGION" \
|
--region "$REGION" \
|
||||||
compute admin http://controller:8774/v2.1
|
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
|
# Install and configure components
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
echo "Installing nova for controller node."
|
echo "Installing nova for controller node."
|
||||||
sudo apt install -y nova-api nova-conductor nova-novncproxy nova-scheduler \
|
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
|
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
|
|
||||||
conf=/etc/nova/nova.conf
|
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."
|
echo "Setting database connection: $database_url."
|
||||||
iniset_sudo $conf 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 nova services."
|
||||||
|
|
||||||
echo "Configuring RabbitMQ message queue access."
|
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 grep "^log_dir" $conf
|
||||||
sudo sed -i "/^log_dir/ d" $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 region_name RegionOne
|
||||||
iniset_sudo $conf placement project_domain_name Default
|
iniset_sudo $conf placement project_domain_name Default
|
||||||
iniset_sudo $conf placement project_name "$SERVICE_PROJECT_NAME"
|
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 username "$placement_admin_user"
|
||||||
iniset_sudo $conf placement password "$PLACEMENT_PASS"
|
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
|
sudo nova-manage api_db sync
|
||||||
|
|
||||||
echo "Registering the cell0 database."
|
echo "Registering the cell0 database."
|
||||||
|
@ -215,8 +169,8 @@ wait_for_keystone
|
||||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
echo "Restarting nova services."
|
echo "Restarting nova services."
|
||||||
declare -a nova_services=(nova-api nova-consoleauth nova-scheduler \
|
declare -a nova_services=(nova-api nova-scheduler nova-conductor \
|
||||||
nova-conductor nova-novncproxy)
|
nova-novncproxy)
|
||||||
|
|
||||||
for nova_service in "${nova_services[@]}"; do
|
for nova_service in "${nova_services[@]}"; do
|
||||||
echo "Restarting $nova_service."
|
echo "Restarting $nova_service."
|
||||||
|
|
|
@ -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
|
Loading…
Reference in New Issue