Install the Orchestration module on the controller node:
# apt-get install heat-api heat-api-cfn heat-engine
Respond to prompts for database management,
[keystone_authtoken]
settings, RabbitMQ credentials and API endpoint registration.
Install the Orchestration module on the controller node:
In the configuration file, specify the location of the database where the Orchestration service stores data. These examples use a MySQL database with a
heat
user on the controller node. ReplaceHEAT_DBPASS
with the password for the database user:Edit
/etc/heat/heat.conf
and modify the[database]
section:[database] # The SQLAlchemy connection string used to connect to the database connection = mysql://heat:
HEAT_DBPASS
@controller
/heatUse the password that you set previously to log in as
root
and create aheat
database user:$ mysql -u root -p mysql> CREATE DATABASE heat; mysql> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' \ IDENTIFIED BY '
HEAT_DBPASS
'; mysql> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' \ IDENTIFIED BY 'HEAT_DBPASS
';Create a
heat
user that the Orchestration service can use to authenticate with the Identity Service. Use theservice
tenant and give the user theadmin
role:$ keystone user-create --name=heat --pass=
HEAT_PASS
\ --email=[email protected]
$ keystone user-role-add --user=heat --tenant=service --role=adminEdit the
/etc/heat/heat.conf
file to change the[keystone_authtoken]
and[ec2authtoken]
sections to add credentials to the Orchestration Service:[keystone_authtoken] auth_host =
controller
auth_port = 35357 auth_protocol = http auth_uri = http://controller
:5000/v2.0 admin_tenant_name = service admin_user = heat admin_password =HEAT_PASS
[ec2authtoken] auth_uri = http://controller
:5000/v2.0Register the Heat and CloudFormation APIs with the Identity Service so that other OpenStack services can locate these APIs. Register the services and specify the endpoints:
$ keystone service-create --name=heat --type=orchestration \ --description="Orchestration" $ 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 $ keystone service-create --name=heat-cfn --type=cloudformation \ --description="Orchestration CloudFormation" $ 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