Added a heat template to build Faafo

The added template builds Faafo as an all-in-one install.

Change-Id: Ie5e2df904c7f1fb0cee6c1238c5523495d1b93f2
This commit is contained in:
Martin Paulo 2015-11-13 10:29:01 +11:00 committed by Diane Fleming
parent a6b7010488
commit 6bc079176f
6 changed files with 223 additions and 118 deletions

View File

@ -0,0 +1,90 @@
heat_template_version: 2014-10-16
description: |
A template to bring up the faafo application as an all in one install
parameters:
key_name:
type: string
description: Name of an existing KeyPair to enable SSH access to the instances
default: id_rsa
constraints:
- custom_constraint: nova.keypair
description: Must already exist on your cloud
flavor:
type: string
description: The flavor the application is to use
constraints:
- custom_constraint: nova.flavor
description: Must be a valid flavor provided by your cloud provider.
image_id:
type: string
description: ID of the image to use to create the instance
constraints:
- custom_constraint: glance.image
description: Must be a valid image on your cloud
faafo_source:
type: string
description: The http location of the faafo application install script
default: https://git.openstack.org/cgit/openstack/faafo/plain/contrib/install.sh
resources:
security_group:
type: OS::Neutron::SecurityGroup
properties:
description: "SSH and HTTP for the all in one server"
rules: [
{remote_ip_prefix: 0.0.0.0/0,
protocol: tcp,
port_range_min: 22,
port_range_max: 22},
{remote_ip_prefix: 0.0.0.0/0,
protocol: tcp,
port_range_min: 80,
port_range_max: 80},]
server:
type: OS::Nova::Server
properties:
image: { get_param: image_id }
flavor: { get_param: flavor }
key_name: { get_param: key_name }
security_groups:
- {get_resource: security_group}
user_data_format: RAW
user_data:
str_replace:
template: |
#!/usr/bin/env bash
curl -L -s faafo_installer | bash -s -- \
-i faafo -i messaging -r api -r worker -r demo
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
faafo_installer: { get_param: faafo_source }
wait_handle:
type: OS::Heat::WaitConditionHandle
wait_condition:
type: OS::Heat::WaitCondition
depends_on: server
properties:
handle: { get_resource: wait_handle }
count: 1
# we'll give it 10 minutes
timeout: 600
outputs:
faafo_ip:
description: The faafo url
value:
list_join: ['', ['Faafo can be found at: http://', get_attr: [server, first_address]]]

View File

@ -56,7 +56,7 @@ Fractal worker can use for configuration.
Using Object Storage instead of a database Using Object Storage instead of a database
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We haven't quite figured out how to do this yet, but the general steps involve We have not quite figured out how to do this yet, but the general steps involve
changing the fractal upload code to store metadata with the object in swift, changing the fractal upload code to store metadata with the object in swift,
then changing the API code such as "list fractals" to query swift to get the then changing the API code such as "list fractals" to query swift to get the
metadata. If you do this, you should be able to stop using a database. metadata. If you do this, you should be able to stop using a database.
@ -66,7 +66,7 @@ metadata. If you do this, you should be able to stop using a database.
Next steps Next steps
~~~~~~~~~~ ~~~~~~~~~~
Wow! If you've made it through this section, you know more than the authors of Wow! If you have made it through this section, you know more than the authors of
this guide know about working with OpenStack clouds. this guide know about working with OpenStack clouds.
Perhaps you can `contribute Perhaps you can `contribute

View File

@ -191,10 +191,10 @@ How the Fractals application interacts with OpenStack
The magic revisited The magic revisited
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
So what exactly was that request doing at the end of the previous So what exactly was that request doing at the end of the previous section?
section? Let us look at it again. (Note that in this subsection, we are Let us look at it again. In this subsection, we are just explaining what you
just explaining what you have already done in the previous section; you have already done in the previous section; you do not need to run these
do not need to execute these commands again.) commands again.
.. only:: shade .. only:: shade
@ -277,7 +277,7 @@ your cloud provider to confirm the user name.
:start-after: step-2 :start-after: step-2
:end-before: step-3 :end-before: step-3
.. note:: User data in openstacksdk must be encoded to base64. .. note:: User data in openstacksdk must be encoded to Base64.
After the instance is created, cloud-init downloads and runs a script called After the instance is created, cloud-init downloads and runs a script called
:code:`install.sh`. This script installs the Fractals application. Cloud-init :code:`install.sh`. This script installs the Fractals application. Cloud-init

View File

@ -5,17 +5,17 @@ Networking
.. todo:: Latter part of the chapter (LBaaS) needs to use Fractals app .. todo:: Latter part of the chapter (LBaaS) needs to use Fractals app
entities for the examples. entities for the examples.
Prior to this chapter, all of the nodes that comprise the fractal application In previous chapters, all nodes that comprise the fractal application were
were attached to the same network. attached to the same network.
In this section of the tutorial, we introduce the Networking API. This chapter introduces the Networking API. This will enable us to build
This will enable us to build networking topologies that separate networking topologies that separate public traffic accessing the application
public traffic accessing the application from traffic between the API from traffic between the API and the worker components. We also introduce
and the worker components. We also introduce load balancing for load balancing for resilience, and create a secure back-end network for
resilience, and create a secure back-end network for communication between communication between the database, webserver, file storage, and worker
the database, webserver, file storage, and worker components. components.
.. warning:: This section assumes your cloud provider has implemented the .. warning:: This section assumes that your cloud provider has implemented the
OpenStack Networking API (neutron). Users of clouds which have OpenStack Networking API (neutron). Users of clouds which have
implemented legacy networking (nova-network) will have access to implemented legacy networking (nova-network) will have access to
networking via the Compute API. Log in to the Horizon dashboard networking via the Compute API. Log in to the Horizon dashboard
@ -60,20 +60,19 @@ the database, webserver, file storage, and worker components.
.. warning:: PHP-OpenCloud supports the OpenStack Networking API, .. warning:: PHP-OpenCloud supports the OpenStack Networking API,
but this section has not been completed. but this section has not been completed.
Working with the CLI Work with the CLI
~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
As SDKs don't currently fully support the OpenStack Networking API, this section Because the SDKs do not fully support the OpenStack Networking API, this
uses the command-line clients. section uses the command-line clients.
Install the 'neutron' command-line client by following this guide: Use this guide to install the 'neutron' command-line client:
http://docs.openstack.org/cli-reference/content/install_clients.html http://docs.openstack.org/cli-reference/content/install_clients.html
Then set up the necessary variables for your cloud in an 'openrc' file Use this guide to set up the necessary variables for your cloud in an 'openrc' file:
using this guide:
http://docs.openstack.org/cli-reference/content/cli_openrc.html http://docs.openstack.org/cli-reference/content/cli_openrc.html
Ensure you have an openrc.sh file, source it and then check your Ensure you have an openrc.sh file, source it, and then check that your
neutron client works: :: neutron client works: ::
$ cat openrc.sh $ cat openrc.sh
@ -91,8 +90,8 @@ neutron client works: ::
Networking segmentation Networking segmentation
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
In traditional datacenters, network segments are In traditional data centers, network segments are dedicated to specific types
dedicated to specific types of network traffic. of network traffic.
The fractal application we are building contains three types of The fractal application we are building contains three types of
network traffic: network traffic:
@ -130,7 +129,7 @@ would be similar to the following diagram:
} }
} }
In this network layout, we are assuming that the OpenStack cloud in which In this network layout, we assume that the OpenStack cloud in which
you have been building your application has a public network and tenant router you have been building your application has a public network and tenant router
that was previously created by your cloud provider or by yourself, following that was previously created by your cloud provider or by yourself, following
the instructions in the appendix. the instructions in the appendix.
@ -194,8 +193,8 @@ worker back end is as follows:
* Allocate floating ips and assign them to the web server nodes. * Allocate floating ips and assign them to the web server nodes.
Creating networks Create networks
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Most cloud providers will make a public network accessible to you. Most cloud providers will make a public network accessible to you.
We will attach a router to this public network to grant Internet access We will attach a router to this public network to grant Internet access
@ -206,7 +205,7 @@ be accessed from the Internet.
Let's just confirm that we have a public network by listing the networks our Let's just confirm that we have a public network by listing the networks our
tenant has access to. The public network doesn't have to be named public - tenant has access to. The public network doesn't have to be named public -
it could be 'external', 'net04_ext' or something else - the important thing it could be 'external', 'net04_ext' or something else - the important thing
is it exists and can be used to reach the internet. is it exists and can be used to reach the Internet.
:: ::
@ -256,7 +255,7 @@ Next, create a network and subnet for the workers.
| tenant_id | f77bf3369741408e89d8f6fe090d29d2 | | tenant_id | f77bf3369741408e89d8f6fe090d29d2 |
+-------------------+--------------------------------------------+ +-------------------+--------------------------------------------+
Now, create a network and subnet for the webservers. Now, create a network and subnet for the web servers.
:: ::
@ -336,7 +335,7 @@ Next, create a network and subnet for the API servers.
| tenant_id | 0cb06b70ef67424b8add447415449722 | | tenant_id | 0cb06b70ef67424b8add447415449722 |
+-------------------+--------------------------------------------+ +-------------------+--------------------------------------------+
Now that you've got the networks created, go ahead and create two Now that you have got the networks created, go ahead and create two
Floating IPs, for web servers. Ensure that you replace 'public' with Floating IPs, for web servers. Ensure that you replace 'public' with
the name of the public/external network offered by your cloud provider. the name of the public/external network offered by your cloud provider.
@ -439,9 +438,9 @@ Now, attach our router to the worker, api, and webserver subnets.
Booting a worker Booting a worker
---------------- ----------------
Now that you've prepared the networking infrastructure, you can go Now that you have prepared the networking infrastructure, you can go
ahead and boot an instance on it. Ensure you use appropriate flavor ahead and boot an instance on it. Ensure you use appropriate flavor
and image values for your cloud - see :doc:`getting_started` if you've not and image values for your cloud - see :doc:`getting_started` if you have not
already. already.
.. todo:: Show how to create an instance in libcloud using the network .. todo:: Show how to create an instance in libcloud using the network

View File

@ -2,20 +2,14 @@
Orchestration Orchestration
============= =============
.. todo:: Needs to be restructured so that the fractals app is used as the example for the explanatory material. This guide describes the importance of durability and scalability for your
cloud-based applications. In most cases, you must automate tasks, such as
.. note:: Sorry! We're not quite happy with this chapter. It will give you an introduction to heat, scaling and other operational tasks, to achieve these goals.
but it's a little dry at the moment. We'd like to write a template for the Fractals app instead
of using the "hello world" style ones, so stay tuned!
Throughout this guide, we've talked about the importance of durability and scalability
for your cloud-based applications. In most cases, really achieving these qualities means
automating tasks such as scaling and other operational tasks.
The Orchestration module provides a template-based way to describe a cloud The Orchestration module provides a template-based way to describe a cloud
application, then coordinates running the needed OpenStack API calls to run application, then coordinates running the needed OpenStack API calls to run
cloud applications. The templates allow you to create most OpenStack resource cloud applications. The templates enable you to create most OpenStack resource
types, such as instances, networking information, volumes, security groups types, such as instances, networking information, volumes, security groups,
and even users. It also provides more advanced functionality, such as and even users. It also provides more advanced functionality, such as
instance high availability, instance auto-scaling, and nested stacks. instance high availability, instance auto-scaling, and nested stacks.
@ -25,45 +19,52 @@ The OpenStack Orchestration API contains the following constructs:
* Resources * Resources
* Templates * Templates
Stacks are created from Templates, which contain Resources. Resources You create stacks from templates, which contain resources. Resources are an
are an abstraction in the HOT (Heat Orchestration Template) template language, which enables you to define different abstraction in the HOT (Heat Orchestration Template) template language, which
cloud resources by setting the `type` attribute. enables you to define different cloud resources by setting the :code:`type`
attribute.
For example, you might use the Orchestration API to create two compute For example, you might use the Orchestration API to create two compute
instances by creating a Stack and by passing a Template to the Orchestration API. instances by creating a stack and by passing a template to the Orchestration
That Template would contain two Resources with the `type` attribute set to `OS::Nova::Server`. API. That template would contain two resources with the :code:`type` attribute
set to :code:`OS::Nova::Server`.
That's a simplistic example, of course, but the flexibility of the Resource object That is a simplistic example, of course, but the flexibility of the resource
enables the creation of Templates that contain all the required cloud object enables the creation of templates that contain all the required cloud
infrastructure to run an application, such as load balancers, block storage volumes, infrastructure to run an application, such as load balancers, block storage
compute instances, networking topology, and security policies. volumes, compute instances, networking topology, and security policies.
.. note:: The Orchestration module isn't deployed by default in every cloud. If these commands don't work, it means the Orchestration API isn't available; ask your support team for assistance. .. note:: The Orchestration module is not deployed by default in every cloud.
If these commands do not work, it means the Orchestration API is not
available; ask your support team for assistance.
This section introduces the `HOT templating language <http://docs.openstack.org/developer/heat/template_guide/hot_guide.html>`_, This section introduces the
and takes you through some of the common calls you will make when working with OpenStack Orchestration. `HOT templating language <http://docs.openstack.org/developer/heat/template_guide/hot_guide.html>`_,
and takes you through some common OpenStack Orchestration calls.
Unlike previous sections of this guide, in which you used your SDK to programmatically interact with Unlike in previous sections where you used your SDK to programatically
OpenStack, in this section you'll be using the Orchestration API directly through Template files, interact with OpenStack, you use the 'heat' command-line client to access the
so we'll work from the command line. Orchestration API directly through template files.
Install the 'heat' commandline client by following this guide: Use this guide to install the 'heat' command-line client:
http://docs.openstack.org/cli-reference/content/install_clients.html http://docs.openstack.org/cli-reference/content/install_clients.html
then set up the necessary variables for your cloud in an 'openrc' file using this guide: Then, use this guide to set up the necessary variables for your cloud in an 'openrc' file:
http://docs.openstack.org/cli-reference/content/cli_openrc.html http://docs.openstack.org/cli-reference/content/cli_openrc.html
.. only:: dotnet .. only:: dotnet
.. warning:: the .NET SDK does not currently support OpenStack Orchestration .. warning:: the .NET SDK does not currently support OpenStack Orchestration.
.. only:: fog .. only:: fog
.. note:: fog `does support OpenStack Orchestration <https://github.com/fog/fog/tree/master/lib/fog/openstack/models/orchestration>`_. .. note:: fog `does support OpenStack Orchestration
<https://github.com/fog/fog/tree/master/lib/fog/openstack/models/orchestration>`_.
.. only:: jclouds .. only:: jclouds
.. warning:: Jclouds does not currently support OpenStack Orchestration. See this `bug report <https://issues.apache.org/jira/browse/JCLOUDS-693>`_. .. warning:: Jclouds does not currently support OpenStack Orchestration.
See this `bug report <https://issues.apache.org/jira/browse/JCLOUDS-693>`_.
.. only:: libcloud .. only:: libcloud
@ -71,52 +72,51 @@ http://docs.openstack.org/cli-reference/content/cli_openrc.html
.. only:: pkgcloud .. only:: pkgcloud
.. note:: Pkgcloud supports OpenStack Orchestration :D:D:D but this section is `not written yet <https://github.com/pkgcloud/pkgcloud/blob/master/docs/providers/openstack/orchestration.md>`_ .. note:: Pkgcloud supports OpenStack Orchestration :D:D:D but this section
is `not written yet <https://github.com/pkgcloud/pkgcloud/blob/master/docs/providers/openstack/orchestration.md>`_
.. only:: openstacksdk .. only:: openstacksdk
.. warning:: OpenStack SDK does not currently support OpenStack Orchestration. .. warning:: The OpenStack SDK does not currently support OpenStack Orchestration.
.. only:: phpopencloud .. only:: phpopencloud
.. note:: PHP-opencloud supports orchestration :D:D:D but this section is not written yet. .. note:: PHP-opencloud supports OpenStack Orchestration :D:D:D but this section is not written yet.
HOT Templating Language HOT Templating Language
----------------------- -----------------------
The best place to learn about the template syntax for OpenStack Orchestration is the The best place to learn about the OpenStack Orchestration template syntax is the
`Heat Orchestration Template (HOT) Guide <http://docs.openstack.org/developer/heat/template_guide/hot_guide.html>`_ `Heat Orchestration Template (HOT) Guide <http://docs.openstack.org/developer/heat/template_guide/hot_guide.html>`_.
You should read the HOT Guide first to learn how to create basic templates, their inputs and outputs. Read this guide to learn about basic templates and their inputs and outputs.
Working with Stacks: Basics Work with stacks: Basics
--------------------------- ------------------------
.. todo:: **Stack create**
This section needs to have a HOT template written for deploying the Fractal Application The following example uses the
`hello_faafo <https://git.openstack.org/cgit/openstack/api-site/plain/firstapp/samples/heat/hello_faafo.yaml>`_ Hot template to
demonstrate how to create a compute instance that builds and runs the Fractal
application as an all-in-one installation. These configuration settings are
passed in as parameters:
.. todo:: - The flavor to use
- Your ssh key name
Replace the hello_world.yaml templte with the Fractal template - The unique identifier (UUID) of the image to use
* Stack create
In the following example, we use the `hello_world <https://github.com/openstack/heat-templates/blob/master/hot/hello_world.yaml>`_ Hot template to demonstrate creating
a Nova compute instance, with a few configuration settings passed in, such as an administrative password and the unique identifier (UUID)
of an image:
:: ::
$ wget https://raw.githubusercontent.com/openstack/heat-templates/master/hot/hello_world.yaml $ wget https://git.openstack.org/cgit/openstack/api-site/plain/firstapp/samples/heat/hello_faafo.yaml
$ heat stack-create --template-file hello_world.yaml \ $ heat stack-create --template-file hello_faafo.yaml \
--parameters admin_pass=Test123\;key_name=test\;image=5bbe4073-90c0-4ec9-833c-092459cc4539 hello_world --parameters flavor=m1.small\;key_name=test\;image_id=5bbe4073-90c0-4ec9-833c-092459cc4539 hello_faafo
+--------------------------------------+-------------+--------------------+----------------------+ +--------------------------------------+-------------+--------------------+----------------------+
| id | stack_name | stack_status | creation_time | | id | stack_name | stack_status | creation_time |
+--------------------------------------+-------------+--------------------+----------------------+ +--------------------------------------+-------------+--------------------+----------------------+
| 0db2c026-fb9a-4849-b51d-b1df244096cd | hello_world | CREATE_IN_PROGRESS | 2015-04-01T03:20:25Z | | 0db2c026-fb9a-4849-b51d-b1df244096cd | hello_faafo | CREATE_IN_PROGRESS | 2015-04-01T03:20:25Z |
+--------------------------------------+-------------+--------------------+----------------------+ +--------------------------------------+-------------+--------------------+----------------------+
The resulting stack creates a Nova instance automatically, which you can see here: The resulting stack automatically creates a Nova instance, as follows:
:: ::
@ -124,10 +124,10 @@ The resulting stack creates a Nova instance automatically, which you can see her
+--------------------------------------+---------------------------------+--------+------------+-------------+------------------+ +--------------------------------------+---------------------------------+--------+------------+-------------+------------------+
| ID | Name | Status | Task State | Power State | Networks | | ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+---------------------------------+--------+------------+-------------+------------------+ +--------------------------------------+---------------------------------+--------+------------+-------------+------------------+
| 9bdf0e2f-415e-43a0-90ea-63a5faf86cf9 | hello_world-server-dwmwhzfxgoor | ACTIVE | - | Running | private=10.0.0.3 | | 9bdf0e2f-415e-43a0-90ea-63a5faf86cf9 | hello_faafo-server-dwmwhzfxgoor | ACTIVE | - | Running | private=10.0.0.3 |
+--------------------------------------+---------------------------------+--------+------------+-------------+------------------+ +--------------------------------------+---------------------------------+--------+------------+-------------+------------------+
Verify that the stack was successfully created using the following command: Use the following command to verify that the stack was successfully created:
:: ::
@ -135,21 +135,38 @@ Verify that the stack was successfully created using the following command:
+--------------------------------------+-------------+-----------------+----------------------+ +--------------------------------------+-------------+-----------------+----------------------+
| id | stack_name | stack_status | creation_time | | id | stack_name | stack_status | creation_time |
+--------------------------------------+-------------+-----------------+----------------------+ +--------------------------------------+-------------+-----------------+----------------------+
| 0db2c026-fb9a-4849-b51d-b1df244096cd | hello_world | CREATE_COMPLETE | 2015-04-01T03:20:25Z | | 0db2c026-fb9a-4849-b51d-b1df244096cd | hello_faafo | CREATE_COMPLETE | 2015-04-01T03:20:25Z |
+--------------------------------------+-------------+-----------------+----------------------+ +--------------------------------------+-------------+-----------------+----------------------+
Remove the stack: The stack reports an initial :code:`CREATE_IN_PROGRESS` status. When all
software has been installed, the status changes to :code:`CREATE_COMPLETE`.
You might have to run the :code:`stack-list` command a few times before
the stack creation is complete.
**Show information about the stack**
Run this command to get more information about the stack:
:: ::
$ heat stack-delete hello_world $ heat stack-show hello_faafo
The `outputs` property shows the URL through which you can access the Fractal
app. You can SSH into the instance.
**Remove the stack**
::
$ heat stack-delete hello_faafo
+--------------------------------------+-------------+--------------------+----------------------+ +--------------------------------------+-------------+--------------------+----------------------+
| id | stack_name | stack_status | creation_time | | id | stack_name | stack_status | creation_time |
+--------------------------------------+-------------+--------------------+----------------------+ +--------------------------------------+-------------+--------------------+----------------------+
| 0db2c026-fb9a-4849-b51d-b1df244096cd | hello_world | DELETE_IN_PROGRESS | 2015-04-01T03:20:25Z | | 0db2c026-fb9a-4849-b51d-b1df244096cd | hello_faafo | DELETE_IN_PROGRESS | 2015-04-01T03:20:25Z |
+--------------------------------------+-------------+--------------------+----------------------+ +--------------------------------------+-------------+--------------------+----------------------+
Verify that the removal of the stack has deleted the nova instance: Verify the nova instance was deleted when the stack was removed:
:: ::
@ -159,40 +176,39 @@ Verify that the removal of the stack has deleted the nova instance:
+----+------+--------+------------+-------------+----------+ +----+------+--------+------------+-------------+----------+
+----+------+--------+------------+-------------+----------+ +----+------+--------+------------+-------------+----------+
While this stack is not very interesting - it just starts a single instance - it While this stack starts a single instance that builds and runs the Fractal app
is possible to make very complicated templates that involve dozens of instances as an all-in-one installation, you can make very complicated templates that
or adds and removes instances based on demand. Continue to the next section to impact dozens of instances or that add and remove instances on demand.
learn more. Continue to the next section to learn more.
Working with Stacks: Advanced Work with stacks: Advanced
----------------------------- --------------------------
.. todo:: needs more explanatory material .. todo:: needs more explanatory material
.. todo:: needs a heat template that uses fractal app .. todo:: needs a heat template that uses fractal app
With the use of the Orchestration API, the Fractal app can create an autoscaling With the Orchestration API, the Fractal app can create an auto-scaling group
group for all parts of the application, in order to dynamically provision more for all parts of the application to dynamically provision more compute
compute resources during periods of heavy utilization, and also terminate compute resources during periods of heavy utilization, and also terminate compute
instances to scale down, as demand decreases. instances to scale down as demand decreases.
There are two helpful articles available to learn about autoscaling with the To learn about auto-scaling with the Orchestration API, read these articles:
Orchestration API:
* http://superuser.openstack.org/articles/simple-auto-scaling-environment-with-heat * http://superuser.openstack.org/articles/simple-auto-scaling-environment-with-heat
* http://superuser.openstack.org/articles/understanding-openstack-heat-auto-scaling * http://superuser.openstack.org/articles/understanding-openstack-heat-auto-scaling
An example template that creates an auto-scaling wordpress instance can be found in For an example template that creates an auto-scaling Wordpress instance, see
`the heat template repository <https://github.com/openstack/heat-templates/blob/master/hot/autoscaling.yaml>`_ `the heat template repository <https://github.com/openstack/heat-templates/blob/master/hot/autoscaling.yaml>`_
Next Steps Next steps
---------- ----------
You should now be fairly confident working with the Orchestration service. You should now be fairly confident working with the Orchestration service. To
There are several calls we did not cover. To see these and more, see the calls that we did not cover, see the volume documentation for your
refer to the volume documentation of your SDK, or try a different step in the tutorial, including: SDK. Or, try one of these tutorial steps:
* :doc:`/networking` - to learn about more complex networking * :doc:`/networking`: Learn about complex networking.
* :doc:`/advice` - for advice for developers new to operations * :doc:`/advice`: Get advice about operations.
* :doc:`/craziness` - to see all the crazy things we think ordinary folks won't want to do ;) * :doc:`/craziness`. Learn some crazy things that you might not think to do ;)

View File

@ -51,7 +51,7 @@ fractals can be generated depends on the number of workers. With just
one worker, we can only produce one fractal at a time. Before long, it one worker, we can only produce one fractal at a time. Before long, it
will be clear that we need more resources. will be clear that we need more resources.
.. note:: If you don't have a working application, follow the steps in .. note:: If you do not have a working application, follow the steps in
:doc:`introduction` to create one. :doc:`introduction` to create one.
.. todo:: Ensure we have the controller_ip even if this is a new .. todo:: Ensure we have the controller_ip even if this is a new
@ -331,7 +331,7 @@ This was obviously a very manual process - figuring out we needed more
workers and then starting new ones required some effort. Ideally the workers and then starting new ones required some effort. Ideally the
system would do this itself. If your application has been built to system would do this itself. If your application has been built to
detect these situations, you can have it automatically request and detect these situations, you can have it automatically request and
remove resources, but you don't actually need to do this work remove resources, but you do not actually need to do this work
yourself. Instead, the OpenStack Orchestration service can monitor yourself. Instead, the OpenStack Orchestration service can monitor
load and start instances as appropriate. See :doc:`orchestration` to find load and start instances as appropriate. See :doc:`orchestration` to find
out how to set that up. out how to set that up.