Keystone also acts as a service catalog to let other OpenStack systems know where relevant API endpoints exist for OpenStack Services. The OpenStack Dashboard, in particular, uses the service catalog heavily - and this must be configured for the OpenStack Dashboard to properly function.
There are two alternative ways of defining services with keystone:
Using a template file
Using a database backend
While using a template file is simpler, it is not
recommended except for development environments such as DevStack. The
template file does not enable CRUD operations on the service
catalog through keystone commands, but you can use the
service-list command when using the template catalog. A database
backend can provide better reliability, availability, and data
redundancy. This section describes how to populate the Keystone
service catalog using the database backend. Your
/etc/keystone/keystone.conf file should
contain the following lines if it is properly configured to use
the database backend.
[catalog]
driver = keystone.catalog.backends.sql.Catalog

