Add Heat Install

This adds an initial install of heat to the install guide.

The commands all work OK on Ubuntu, but actually using it
 has not been tested yet.

Does an include of the sample stack commands from the user guide.

Change-Id: I8fda98025753204afc7d0e32f2f571d1f4d8b167
This commit is contained in:
Tom Fifield 2013-10-14 19:48:52 +11:00 committed by Andreas Jaeger
parent 9925f9787d
commit 9b68d55e82
4 changed files with 173 additions and 24 deletions

View File

@ -2,29 +2,26 @@
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
xml:id="orchestration-service"> xml:id="orchestration-service">
<title>Orchestration Service</title> <title>Orchestration Service Overview</title>
<para>The Orchestration Service provides a template-based <para>The Orchestration service provides a template-based orchestration
orchestration for describing a cloud application by running for describing a cloud application by running OpenStack API calls to
OpenStack API calls to generate running cloud applications. generate running cloud applications. The software integrates other core
The software integrates other core components of OpenStack components of OpenStack into a one-file template system. The templates
into a one-file template system. The templates enable you to enable you to create most OpenStack resource types, such as instances,
create most OpenStack resource types, such as instances, floating IPs, volumes, security groups, users, and so on. Also, provides
floating IPs, volumes, security groups, users, and so on. some more advanced functionality, such as instance high availability,
Also, provides some more advanced functionality, such as instance auto-scaling, and nested stacks. By providing very tight
instance high availability, instance auto-scaling, and nested integration with other OpenStack core projects, all OpenStack core projects
stacks. By providing very tight integration with other could receive a larger user base.</para>
OpenStack core projects, all OpenStack core projects could <para>The service enables deployers to integrate with the Orchestration
receive a larger user base.</para> service directly or through custom plug-ins.</para>
<para>Enables deployers to integrate with the Orchestration <para>The Orchestration service consists of the following
Service directly or through custom plug-ins.</para>
<para>The Orchestration Service consists of the following
components:</para> components:</para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para><code>heat</code> tool. A CLI that communicates with <para><code>heat</code> tool. A CLI that communicates with the
the heat-api to run AWS CloudFormation APIs. End heat-api to run AWS CloudFormation APIs. End developers could also use
developers could also use the heat REST API the Orchestration REST API directly.</para>
directly.</para>
</listitem> </listitem>
<listitem> <listitem>
<para><code>heat-api</code> component. Provides an <para><code>heat-api</code> component. Provides an

View File

@ -4,7 +4,10 @@
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
xml:id="ch_heat"> xml:id="ch_heat">
<title>Adding Orchestration</title> <title>Adding Orchestration</title>
<para>Use the OpenStack Orchestration service to create cloud
<para>FIXME</para> resources using a template language called HOT. The
integrated project name is Heat.</para>
<xi:include href="../common/section_getstart_orchestration.xml"/> <xi:include href="../common/section_getstart_orchestration.xml"/>
<xi:include href="section_heat-install.xml" />
<xi:include href="section_heat-verify.xml" />
</chapter> </chapter>

View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<section xml:id="heat-install"
xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
<title>Installing the Orchestration Service</title>
<procedure>
<step>
<para>Install the Orchestration Service on the controller node:</para>
<screen os="ubuntu;deb"><prompt>#</prompt> <userinput>apt-get install heat-api heat-api-cfn</userinput></screen>
<screen os="rhel;centos;fedora"><prompt>#</prompt> <userinput>yum install openstack-heat-api FIXME</userinput></screen>
<screen os="opensuse"><prompt>#</prompt> <userinput>zypper install openstack-heat-api FIXME</userinput></screen>
</step>
<step>
<para>The Orchestration 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 <literal>heat</literal>. Replace
<literal><replaceable>HEAT_DBPASS</replaceable></literal>
with a suitable password for the database user.</para>
<screen os="rhel;centos;fedora;opensuse"><prompt>#</prompt> <userinput>openstack-config --set /etc/heat/heat.conf \
DEFAULT sql_connection mysql://heat:<replaceable>HEAT_DBPASS</replaceable>@controller/heat</userinput></screen>
<para os="ubuntu">Edit <filename>/etc/heat/heat.conf</filename> and change the <literal>[DEFAULT]</literal> section.</para>
<programlisting os="ubuntu" language="ini">
[DEFAULT]
# The SQLAlchemy connection string used to connect to the database
sql_connection = mysql://heat:HEAT_DBPASS@controller/heat
...
</programlisting>
</step>
<step os="rhel;centos;fedora;opensuse">
<para>Use the <command>openstack-db</command> command to create the
database and tables, as well as a database user called
<literal>keystone</literal> to connect to the database. Replace
<literal><replaceable>HEAT_DBPASS</replaceable></literal>
with the same password used in the previous step.</para>
<screen><prompt>#</prompt> <userinput>openstack-db --init --service heat --password <replaceable>HEAT_DBPASS</replaceable></userinput></screen>
</step>
<step os="ubuntu">
<para>First, we need to create a database user called <literal>heat</literal>, by logging in
as root using the password we set earlier.</para>
<screen><prompt>#</prompt> <userinput>mysql -u root -p</userinput>
<prompt>mysql></prompt> <userinput>CREATE DATABASE heat;</userinput>
<prompt>mysql></prompt> <userinput>GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' \
IDENTIFIED BY 'HEAT_DBPASS';</userinput></screen>
</step>
<step os="ubuntu">
<para>We now start the heat service and create its tables.</para>
<screen><prompt>#</prompt> <userinput>heat-manage db_sync</userinput>
<prompt>#</prompt> <userinput>service heat-api restart</userinput>
<prompt>#</prompt> <userinput>service heat-api-cfn restart</userinput></screen>
</step>
<step><para>Create a user called <literal>heat</literal> that the Orchestration
Service can use to authenticate with the Identity Service. Use the
<literal>service</literal> tenant and give the user the
<literal>admin</literal> role.</para>
<screen><prompt>#</prompt> <userinput>keystone user-create --name=heat --pass=<replaceable>HEAT_DBPASS</replaceable> --email=<replaceable>heat@example.com</replaceable></userinput>
<prompt>#</prompt> <userinput>keystone user-role-add --user=heat --tenant=service --role=admin</userinput></screen></step>
<step><para>Add the credentials to the Image Service's configuration files.</para>
<para >Edit <filename>/etc/heat/api-paste.ini</filename>
and change the <literal>[filter:authtoken]</literal> section.</para>
<programlisting language="ini">
...
[keystone_authtoken]
paste.filter_factory = heat.common.auth_password:filter_factory
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = heat
admin_password = HEAT_DBPASS
...
</programlisting>
</step>
<step><para>Register the Orchestration Service (both Heat and CloudFormation APIs)
with the Identity Service so that other OpenStack services can locate
it. Register the service and specify the endpoint using the
<command>keystone</command> command.</para>
<screen><prompt>#</prompt> <userinput>keystone service-create --name=heat --type=orchestration \
--description="Heat Orchestration API"</userinput></screen></step>
<step><para>Note the service's <literal>id</literal> property returned in the previous step and use it when
creating the endpoint.</para>
<screen><prompt>#</prompt> <userinput>keystone endpoint-create \
--service-id=<replaceable>the_service_id_above</replaceable> \
--publicurl=http://<replaceable>controller</replaceable>:8004/v1/%\(tenant_id\)s \
--internalurl=http://<replaceable>controller</replaceable>:8004/v1/%\(tenant_id\)s \
--adminurl=http://<replaceable>controller</replaceable>:8004/v1/%\(tenant_id\)s</userinput></screen>
<screen><prompt>#</prompt> <userinput>keystone service-create --name=heat-cfn --type=cloudformation \
--description="Heat CloudFormation API"</userinput></screen></step>
<step><para>Note the service's <literal>id</literal> property returned in the previous step and use it when
creating the endpoint.</para>
<screen><prompt>#</prompt> <userinput>keystone endpoint-create \
--service-id=<replaceable>the_service_id_above</replaceable> \
--publicurl=http://<replaceable>controller</replaceable>:8000/v1 \
--internalurl=http://<replaceable>controller</replaceable>:8000/v1 \
--adminurl=http://<replaceable>controller</replaceable>:8000/v1</userinput></screen>
</step>
<step os="ubuntu;debian">
<para>We now restart the service with its new settings.</para>
<screen><prompt>#</prompt> <userinput>service heat-api restart</userinput>
<prompt>#</prompt> <userinput>service heat-api-cfn restart</userinput></screen>
</step>
<step os="rhel;fedora;centos;opensuse"><para>Start the <literal>heat-api</literal> and
<literal>heat-api-cfn</literal> services and configure them to
start when the system boots.</para>
<screen os="rhel;fedora;centos"><prompt>#</prompt> <userinput>service openstack-heat-api start</userinput>
<prompt>#</prompt> <userinput>service openstack-heat-api-cfn start</userinput>
<prompt>#</prompt> <userinput>chkconfig openstack-heat-api on</userinput>
<prompt>#</prompt> <userinput>chkconfig openstack-heat-api-cfn on</userinput></screen>
<screen os="opensuse"><prompt>#</prompt> <userinput>systemctl start openstack-heat-api.service</userinput>
<prompt>#</prompt> <userinput>systemctl start openstack-heat-api-cfn.service</userinput>
<prompt>#</prompt> <userinput>systemctl enable openstack-heat-api.service</userinput>
<prompt>#</prompt> <userinput>systemctl enable openstack-heat-api-cfn.service</userinput></screen></step>
</procedure>
</section>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<section xml:id="heat-verify"
xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
<title>Verifying the Orchestration Service Installation</title>
<para>To verify the Identity Service is installed and configured
correctly, first ensure you have your credentials setup correctly
in an <filename>openrc</filename> file, then source it so your
environment has the username and password.</para>
<screen><prompt>#</prompt> <userinput>source openrc</userinput></screen>
<para>Next you can try creating some stacks, using the samples.</para>
<xi:include href="../user-guide/section_heat_cli.xml"/>
</section>