openstack-manuals/doc/install-guide/source/launch-instance-heat.rst
Matthew Kassawara 6b11ba1de9 [install] Liberty updates for heat
Update heat configuration for Liberty. Includes moving
stack creation to the launch instance section. Also
addresses some consistency issues, mostly from the RST
conversion.

Changes and testing specific to distribution packages
primarily involve Ubuntu. Other distributions may require
additional patches.

Change-Id: Ib1ba4987eabe15a2100a58d1448507c203fc25f3
Implements: blueprint installguide-liberty
2015-10-13 10:10:47 -06:00

5.3 KiB

Orchestration

Create a template

The Orchestration module uses templates to describe stacks. To learn about the template language, see the Template Guide in the Heat developer documentation.

  1. Create the demo-template.yml file with the following content:

    heat_template_version: 2015-10-15
    description: Launch a basic instance using the ``m1.tiny`` flavor and one network.
    
    parameters:
      ImageID:
        type: string
        description: Image to use for the instance.
      NetID:
        type: string
        description: Network ID to use for the instance.
    
    resources:
      server:
        type: OS::Nova::Server
        properties:
          image: { get_param: ImageID }
          flavor: m1.tiny
          networks:
          - network: { get_param: NetID }
    
    outputs:
      instance_name:
        description: Name of the instance.
        value: { get_attr: [ server, name ] }
      instance_ip:
        description: IP address of the instance.
        value: { get_attr: [ server, first_address ] }

Create a stack

Create a stack using the demo-template.yml template.

  1. Source the demo credentials to perform the following steps as a non-administrative project:

    $ source demo-openrc.sh
  2. Determine available networks.

    $ neutron net-list
    +--------------------------------------+---------+-----------------------------------------------------+
    | id                                   | name    | subnets                                             |
    +--------------------------------------+---------+-----------------------------------------------------+
    | 9c13da20-4c4f-486f-a4e9-692e9ea397f1 | public  | 85140549-1f54-4bc6-a2c5-f08428de3f7a 203.0.113.0/24 |
    | 303a9aaf-40fd-4fc8-9213-39bff933467b | private | ddeba0b1-21eb-471a-8f31-10f0e290cc36 172.16.1.0/24  |
    +--------------------------------------+---------+-----------------------------------------------------+

    Note

    This output may differ from your environment.

  3. Set the NET_ID environment variable to reflect the ID of a network. For example, using the public network:

    $ export NET_ID=$(neutron net-list | awk '/ public / { print $2 }')
  4. Create a stack of one CirrOS instance on the public network:

    $ heat stack-create -f demo-template.yml \
      -P "ImageID=cirros;NetID=$NET_ID" stack
    +--------------------------------------+------------+--------------------+---------------------+--------------+
    | id                                   | stack_name | stack_status       | creation_time       | updated_time |
    +--------------------------------------+------------+--------------------+---------------------+--------------+
    | dbf46d1b-0b97-4d45-a0b3-9662a1eb6cf3 | stack      | CREATE_IN_PROGRESS | 2015-10-13T15:27:20 | None         |
    +--------------------------------------+------------+--------------------+---------------------+--------------+
  5. After a short time, verify successful creation of the stack:

    $ heat stack-list
    +--------------------------------------+------------+-----------------+---------------------+--------------+
    | id                                   | stack_name | stack_status    | creation_time       | updated_time |
    +--------------------------------------+------------+-----------------+---------------------+--------------+
    | dbf46d1b-0b97-4d45-a0b3-9662a1eb6cf3 | stack      | CREATE_COMPLETE | 2015-10-13T15:27:20 | None         |
    +--------------------------------------+------------+-----------------+---------------------+--------------+
  6. Show the name and IP address of the instance and compare with the output of the nova command:

    $ heat output-show --all stack
    [
      {
        "output_value": "stack-server-3nzfyfofu6d4",
        "description": "Name of the instance.",
        "output_key": "instance_name"
      },
      {
        "output_value": "10.4.31.106",
        "description": "IP address of the instance.",
        "output_key": "instance_ip"
      }
    ]
    
    $ nova list
    +--------------------------------------+---------------------------+--------+------------+-------------+---------------------------------+
    | ID                                   | Name                      | Status | Task State | Power State | Networks                        |
    +--------------------------------------+---------------------------+--------+------------+-------------+---------------------------------+
    | 0fc2af0c-ae79-4d22-8f36-9e860c257da5 | stack-server-3nzfyfofu6d4 | ACTIVE | -          | Running     | public=10.4.31.106              |
    +--------------------------------------+---------------------------+--------+------------+-------------+---------------------------------+
  7. Delete the stack.

    $ heat stack-delete stack