Install and configure Orchestration This section describes how to install and configure the Orchestration module, code-named heat, on the controller node. To configure prerequisites Before you install and configure Orchestration, you must create a database and Identity service credentials including endpoints. To create the database, complete these steps: Use the database access client to connect to the database server as the root user: $ mysql -u root -p Create the heat database: CREATE DATABASE heat; Grant proper access to the heat database: GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' \ IDENTIFIED BY 'HEAT_DBPASS'; GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' \ IDENTIFIED BY 'HEAT_DBPASS'; Replace HEAT_DBPASS with a suitable password. Exit the database access client. Source the admin credentials to gain access to admin-only CLI commands: $ source admin-openrc.sh To create the Identity service credentials, complete these steps: Create the heat user: $ keystone user-create --name heat --pass HEAT_PASS +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | | | enabled | True | | id | 7fd67878dcd04d0393469ef825a7e005 | | name | heat | | username | heat | +----------+----------------------------------+ Replace HEAT_PASS with a suitable password. Link the heat user to the service tenant and admin role: $ keystone user-role-add --user heat --tenant service --role admin This command provides no output. Create the heat_stack_user and heat_stack_owner roles: $ keystone role-create --name heat_stack_user $ keystone role-create --name heat_stack_owner By default, users created by Orchestration use the heat_stack_user role. Create the heat and heat-cfn services: $ keystone service-create --name heat --type orchestration \ --description "Orchestration" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Orchestration | | enabled | True | | id | 031112165cad4c2bb23e84603957de29 | | name | heat | | type | orchestration | +-------------+----------------------------------+ $ keystone service-create --name heat-cfn --type cloudformation \ --description "Orchestration" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Orchestration | | enabled | True | | id | 297740d74c0a446bbff867acdccb33fa | | name | heat-cfn | | type | cloudformation | +-------------+----------------------------------+ Create the Identity service endpoints: $ keystone endpoint-create \ --service-id $(keystone service-list | awk '/ orchestration / {print $2}') \ --publicurl http://controller:8004/v1/%\(tenant_id\)s \ --internalurl http://controller:8004/v1/%\(tenant_id\)s \ --adminurl http://controller:8004/v1/%\(tenant_id\)s \ --region regionOne +-------------+-----------------------------------------+ | Property | Value | +-------------+-----------------------------------------+ | adminurl | http://controller:8004/v1/%(tenant_id)s | | id | f41225f665694b95a46448e8676b0dc2 | | internalurl | http://controller:8004/v1/%(tenant_id)s | | publicurl | http://controller:8004/v1/%(tenant_id)s | | region | regionOne | | service_id | 031112165cad4c2bb23e84603957de29 | +-------------+-----------------------------------------+ $ keystone endpoint-create \ --service-id $(keystone service-list | awk '/ cloudformation / {print $2}') \ --publicurl http://controller:8000/v1 \ --internalurl http://controller:8000/v1 \ --adminurl http://controller:8000/v1 \ --region regionOne +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://controller:8000/v1 | | id | f41225f665694b95a46448e8676b0dc2 | | internalurl | http://controller:8000/v1 | | publicurl | http://controller:8000/v1 | | region | regionOne | | service_id | 297740d74c0a446bbff867acdccb33fa | +-------------+----------------------------------+ To install and configure the Orchestration components Run the following commands to install the packages: # apt-get install heat-api heat-api-cfn heat-engine python-heatclient # yum install openstack-heat-api openstack-heat-api-cfn openstack-heat-engine \ python-heatclient # zypper install openstack-heat-api openstack-heat-api-cfn openstack-heat-engine \ python-heatclient Edit the /etc/heat/heat.conf file and complete the following actions: In the [database] section, configure database access: [database] ... connection = mysql://heat:HEAT_DBPASS@controller/heat Replace HEAT_DBPASS with the password you chose for the Orchestration database. In the [DEFAULT] section, configure RabbitMQ message broker access: [DEFAULT] ... rpc_backend = rabbit rabbit_host = controller rabbit_password = RABBIT_PASS Replace RABBIT_PASS with the password you chose for the guest account in RabbitMQ. In the [keystone_authtoken] and [ec2authtoken] sections, configure Identity service access: [keystone_authtoken] ... auth_uri = http://controller:5000/v2.0 identity_uri = http://controller:35357 admin_tenant_name = service admin_user = heat admin_password = HEAT_PASS [ec2authtoken] ... auth_uri = http://controller:5000/v2.0 Replace HEAT_PASS with the password you chose for the heat user in the Identity service. Comment out any auth_host, auth_port, and auth_protocol options because the identity_uri option replaces them. In the [DEFAULT] section, configure the metadata and wait condition URLs: [DEFAULT] ... heat_metadata_server_url = http://controller:8000 heat_waitcondition_server_url = http://controller:8000/v1/waitcondition (Optional) To assist with troubleshooting, enable verbose logging in the [DEFAULT] section: [DEFAULT] ... verbose = True Populate the Orchestration database: # su -s /bin/sh -c "heat-manage db_sync" heat To install and configure the Orchestration components Run the following commands to install the packages: # apt-get install heat-api heat-api-cfn heat-engine python-heat-client Respond to prompts for database management, Identity service credentials, service endpoint registration, and message broker credentials. Edit the /etc/heat/heat.conf file and complete the following actions: In the [ec2authtoken] section, configure Identity service access: [ec2authtoken] ... auth_uri = http://controller:5000/v2.0 To finalize installation Restart the Orchestration services: # service heat-api restart # service heat-api-cfn restart # service heat-engine restart Start the Orchestration services and configure them to start when the system boots: # systemctl enable openstack-heat-api.service # systemctl enable openstack-heat-api-cfn.service # systemctl enable openstack-heat-engine.service # systemctl start openstack-heat-api.service # systemctl start openstack-heat-api-cfn.service # systemctl start openstack-heat-engine.service On SLES: # service openstack-heat-api start # service openstack-heat-api-cfn start # service openstack-heat-engine start # chkconfig openstack-heat-api on # chkconfig openstack-heat-api-cfn on # chkconfig openstack-heat-engine on On openSUSE: # systemctl enable openstack-heat-api.service # systemctl enable openstack-heat-api-cfn.service # systemctl enable openstack-heat-engine.service # systemctl start openstack-heat-api.service # systemctl start openstack-heat-api-cfn.service # systemctl start openstack-heat-engine.service By default, the Ubuntu packages create a SQLite database. Because this configuration uses a SQL database server, you can remove the SQLite database file: # rm -f /var/lib/heat/heat.sqlite