Configure a Block Storage Service controllerTo create the components that control the Block Storage
Service, complete the following steps on the controller
node.You can configure OpenStack to use various storage systems.
The examples in this guide show you how to configure LVM.Install the appropriate packages for the Block Storage
Service:#apt-get install cinder-api cinder-scheduler#yum install openstack-cinder openstack-utils openstack-selinux#zypper install openstack-cinder-api openstack-cinder-schedulerRespond to the prompts for database
management, [keystone_authtoken] settings,
RabbitMQ credentials
and API endpoint
registration.The Block Storage Service stores volume information in a
database. The examples in this section use the MySQL database
that is used by other OpenStack services.Configure the Block Storage Service to use the database.
Replace
CINDER_DBPASS
with a password of your choosing.#openstack-config --set /etc/cinder/cinder.conf \
database connection mysql://cinder:CINDER_DBPASS@controller/cinderEdit
/etc/cinder/cinder.conf and change the
[database] section.[database]
...
# The SQLAlchemy connection string used to connect to the
# database (string value)
connection = mysql://cinder:CINDER_DBPASS@localhost/cinder
...To create the Block Storage Service database and tables
and a cinder database user, run the
openstack-db command.#openstack-db --init --service cinder --password CINDER_DBPASSUse 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.#cinder-manage db syncCreate 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=adminAdd the credentials to the file
/etc/cinder/api-paste.ini. Open the
file in a text editor and locate the section
[filter:authtoken]. Set the following
options:[filter:authtoken]
paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory
auth_host=controller
auth_port = 35357
auth_protocol = http
admin_tenant_name=service
admin_user=cinder
admin_password=CINDER_PASSRegister the Block Storage Service with the Identity
Service so that other OpenStack services can locate it.
Register the service and specify the endpoint using the
keystone command.#keystone service-create --name=cinder --type=volume \
--description="Cinder Volume Service"Note the id property returned and use
it to create the endpoint.#keystone endpoint-create \
--service-id=the_service_id_above \
--publicurl=http://controller:8776/v1/%\(tenant_id\)s \
--internalurl=http://controller:8776/v1/%\(tenant_id\)s \
--adminurl=http://controller:8776/v1/%\(tenant_id\)sAlso register a service and endpoint for version 2 of the
Block Storage Service API.#keystone service-create --name=cinder --type=volumev2 \
--description="Cinder Volume Service V2"Note the id property returned and use
it to create the endpoint.#keystone endpoint-create \
--service-id=the_service_id_above \
--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 cinder service with its new settings:#service cinder-scheduler restart#service cinder-api restartStart the cinder services and configure them 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