openstack_dockers/docker-nova-service/bootstrap.sh

117 lines
3.4 KiB
Bash
Raw Normal View History

#!/bin/bash
#
# This script sets up the openstack users and regions..
# as well as the database for the nova controller.
# This guide was used:
# https://docs.openstack.org/ocata/install-guide-ubuntu/nova-controller-install.
# write the configuration files with values from the environment.
/etc/write_conf.sh
cat << EOF > /root/admin-openrc.sh
#!/bin/bash
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=${OS_PASSWORD}
export OS_AUTH_URL=http://${KEYSTONE_HOST}:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_IMAGE_API_VERSION=2
EOF
source /root/admin-openrc.sh
# create database for nova
mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -h "$MYSQL_HOST" << EOF
DROP DATABASE IF EXISTS nova;
DROP DATABASE IF EXISTS nova_compute; -- db for nova compute service
DROP DATABASE IF EXISTS nova_api;
DROP DATABASE IF EXISTS nova_cell0;
CREATE DATABASE nova;
CREATE DATABASE nova_compute;
CREATE DATABASE nova_api;
CREATE DATABASE nova_cell0;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY "${NOVA_PASSWORD}";
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY "${NOVA_PASSWORD}";
GRANT ALL PRIVILEGES ON nova_compute.* TO 'nova_compute'@'localhost' \
IDENTIFIED BY "${NOVA_PASSWORD}";
GRANT ALL PRIVILEGES ON nova_compute.* TO 'nova_compute'@'%' \
IDENTIFIED BY "${NOVA_PASSWORD}";
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
IDENTIFIED BY "${NOVA_PASSWORD}";
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY "${NOVA_PASSWORD}";
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY "${NOVA_PASSWORD}";
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY "${NOVA_PASSWORD}";
EOF
openstack user create nova --domain default --password "$NOVA_PASSWORD"
openstack role add --project service --user nova admin
openstack service create --name nova --description "OpenStack Compute" compute
# compute endpoints
openstack endpoint create --region RegionOne \
compute public http://"$MY_IP":8774/v2.1
openstack endpoint create --region RegionOne \
compute internal http://"$MY_IP":8774/v2.1
openstack endpoint create --region RegionOne \
compute admin http://"$MY_IP":8774/v2.1
openstack user create --domain default --password "$NOVA_PLACEMENT_PASSWORD" placement
openstack role add --project service --user placement admin
openstack service create --name placement --description "Placement API" placement
# placement endpoints
openstack endpoint create --region RegionOne placement public http://"$MY_IP":8778
openstack endpoint create --region RegionOne placement internal http://"$MY_IP":8778
openstack endpoint create --region RegionOne placement admin http://"$MY_IP":8778
#Populate the nova-api database
nova-manage api_db sync
# Register the cell0 database:
nova-manage cell_v2 map_cell0
# Create the cel1 cell
nova-manage cell_v2 create_cell --name=cell1 --verbose
# sync the database
nova-manage db sync
e nova_api;
# Prevent crashes when nova api server tries to insert None in config_drive
mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -h "$MYSQL_HOST" << EOF
alter table nova_api.build_requests drop constraint CONSTRAINT_1;
EOF
# https://bugs.launchpad.net/packstack/+bug/1673305
# discover compute hosts.
nova-manage cell_v2 discover_hosts
# Verify nova cell0 and cell1 are registered correctly:
nova-manage cell_v2 list_cells