Installing the Identity Service Install the Identity Service on the controller node: # apt-get install keystone python-keystone python-keystoneclient # yum install openstack-keystone python-keystoneclient # zypper install openstack-keystone python-keystoneclient openstack-utils The Identity Service uses a database to store information. Specify the location of the database in the configuration file. In this guide, we use a MySQL database on the controller node with the username keystone. Replace KEYSTONE_DBPASS with a suitable password for the database user. # openstack-config --set /etc/keystone/keystone.conf \ sql connection mysql://keystone:KEYSTONE_DBPASS@controller/keystone Edit /etc/keystone/keystone.conf and change the [sql] section. ... [sql] # The SQLAlchemy connection string used to connect to the database connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone ... Use the openstack-db command to create the database and tables, as well as a database user called keystone to connect to the database. Replace KEYSTONE_DBPASS with the same password used in the previous step. # openstack-db --init --service keystone --password KEYSTONE_DBPASS First, we need to create a database user called keystone, by logging in as root using the password we set earlier. # mysql -u root -p mysql> CREATE DATABASE keystone; mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \ IDENTIFIED BY 'KEYSTONE_DBPASS'; We now start the keystone service and create its tables. # keystone-manage db_sync # service keystone restart You need to define an authorization token that is used as a shared secret between the Identity Service and other OpenStack services. Use openssl to generate a random token, then store it in the configuration file. # ADMIN_TOKEN=$(openssl rand -hex 10) # echo $ADMIN_TOKEN # openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN # openssl rand -hex 10 Edit /etc/keystone/keystone.conf and change the [DEFAULT] section, replacing ADMIN_TOKEN with the results of the command. [DEFAULT] # A "shared secret" between keystone and other openstack services admin_token = ADMIN_TOKEN ... By default Keystone will use PKI tokens. Create the signing keys and certificates. # keystone-manage pki_setup --keystone-user keystone --keystone-group keystone # chown -R keystone:keystone /etc/keystone/* /var/log/keystone/keystone.log # keystone-manage pki_setup --keystone-user openstack-keystone --keystone-group openstack-keystone # chown -R openstack-keystone:openstack-keystone /etc/keystone/* /var/log/keystone/keystone.log Setup the /etc/keystone/default_catalog.templates file: # KEYSTONE_CATALOG=/etc/keystone/default_catalog.templates # sed -e "s,%SERVICE_HOST%,192.168.0.10,g" -e "s/%S3_SERVICE_PORT%/8080/" \ $KEYSTONE_CATALOG.sample > $KEYSTONE_CATALOG Restart the Identity service. # service keystone restart Start the Identity Service and enable it so it start when the system boots. # service openstack-keystone start # chkconfig openstack-keystone on # systemctl start openstack-keystone.service # systemctl enable openstack-keystone.service