Configure a Block Storage service controllerThis scenario configures OpenStack Block Storage
services on the Controller node
and assumes that a
second node provides storage through the cinder-volume service.For
instructions on how to configure the second node, see .You can configure OpenStack to use various storage systems.
This example uses LVM.Install the appropriate packages for the Block Storage
service:#apt-get install cinder-api cinder-scheduler#yum install openstack-cinder#zypper install openstack-cinder-api openstack-cinder-schedulerRespond to the prompts for database
management, [keystone_authtoken] settings,
RabbitMQ
credentials, and API endpoint registration.Configure Block Storage to use your database.Run the following command
to set connection option in the
[database] section, which is in the
/etc/cinder/cinder.conf file, replace
CINDER_DBPASS with the password for the
Block Storage database that you will create in a later step:In the /etc/cinder/cinder.conf
file, set the connection option in the
[database] section and replace
CINDER_DBPASS with the password for the
Block Storage database that you will create in a later step:#openstack-config --set /etc/cinder/cinder.conf \
database connection mysql://cinder:CINDER_DBPASS@controller/cinder[database]
...
connection = mysql://cinder:CINDER_DBPASS@controller/cinderIn some distributions, the /etc/cinder/cinder.conf
file does not include the
[database] section header. You must add this
section header to the end of the file before you proceed.Use the password that you set to log in as root to create
a cinder database:$mysql -u root -pmysql>CREATE DATABASE cinder;mysql>GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'CINDER_DBPASS';mysql>GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'CINDER_DBPASS';Create the database tables for the Block Storage
service:#su -s /bin/sh -c "cinder-manage db sync" cinderCreate a cinder user.The Block Storage service uses this user to authenticate
with the Identity service.Use the service tenant and give the
user the admin role:$keystone user-create --name=cinder --pass=CINDER_PASS --email=cinder@example.com$keystone user-role-add --user=cinder --tenant=service --role=adminEdit the
/etc/cinder/cinder.conf configuration file:#openstack-config --set /etc/cinder/cinder.conf DEFAULT \
auth_strategy keystone#openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \
auth_uri http://controller:5000#openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \
auth_host controller#openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \
auth_protocol http#openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \
auth_port 35357#openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \
admin_user cinder#openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \
admin_tenant_name service#openstack-config --set /etc/cinder/cinder.conf keystone_authtoken \
admin_password CINDER_PASSEdit the
/etc/cinder/cinder.conf configuration
file and add this section for keystone credentials:...
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = cinder
admin_password = CINDER_PASSConfigure Block Storage to use the RabbitMQ message
broker.In the [DEFAULT] section in
the /etc/cinder/cinder.conf file, set
these configuration keys and replace
RABBIT_PASS with the password you
chose for RabbitMQ:[DEFAULT]
...
rpc_backend = cinder.openstack.common.rpc.impl_kombu
rabbit_host = controller
rabbit_port = 5672
rabbit_userid = guest
rabbit_password = RABBIT_PASSConfigure Block Storage to use the RabbitMQ message
broker.Replace RABBIT_PASS with the
password you chose for RabbitMQ:#openstack-config --set /etc/cinder/cinder.conf \
DEFAULT rpc_backend cinder.openstack.common.rpc.impl_kombu#openstack-config --set /etc/cinder/cinder.conf \
DEFAULT rabbit_host controller#openstack-config --set /etc/cinder/cinder.conf \
DEFAULT rabbit_port 5672#openstack-config --set /etc/cinder/cinder.conf \
DEFAULT rabbit_password RABBIT_PASSRegister the Block Storage service with the Identity
service so that other OpenStack services can locate it:$keystone service-create --name=cinder --type=volume --description="OpenStack Block Storage"$keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ volume / {print $2}') \
--publicurl=http://controller:8776/v1/%\(tenant_id\)s \
--internalurl=http://controller:8776/v1/%\(tenant_id\)s \
--adminurl=http://controller:8776/v1/%\(tenant_id\)sRegister a service and endpoint for version 2 of the Block
Storage service API:$keystone service-create --name=cinderv2 --type=volumev2 --description="OpenStack Block Storage v2"$keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ volumev2 / {print $2}') \
--publicurl=http://controller:8776/v2/%\(tenant_id\)s \
--internalurl=http://controller:8776/v2/%\(tenant_id\)s \
--adminurl=http://controller:8776/v2/%\(tenant_id\)sRestart the Block Storage services with the new
settings:#service cinder-scheduler restart#service cinder-api restartStart and configure the Block Storage services to start when
the system boots:#service openstack-cinder-api start#service openstack-cinder-scheduler start#chkconfig openstack-cinder-api on#chkconfig openstack-cinder-scheduler on