编排

编排

创建一个模板

Orchestration服务使用模版来描述栈。想要学习模版语言,参考`Heat developer documentation <http://docs.openstack.org/developer/heat/index.html>`__中的`the Template Guide <http://docs.openstack.org/developer/heat/template_guide/index.html>`__ 。

  • 使用下面的内容创建``demo-template.yml``文件:

    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 ] }
    

创建一个栈

使用``demo-template.yml`` 模版创建一个栈。

  1. 加载 ``demo``凭证,作为非管理员项目执行下面的步骤:

    $ source demo-openrc.sh
    
  2. 检测可用网络。

    $ 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  |
    +--------------------------------------+---------+-----------------------------------------------------+
    

    注解

    这个输出可能跟你的环境有所不同。

  3. 设置``NET_ID``环境变量表示网络ID。例如,使用``public`` 网络:

    $ export NET_ID=$(neutron net-list | awk '/ public / { print $2 }')
    
  4. 在公共网络上创建一个CirrOS实例的栈:

    $ 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. 等一段时间,验证栈的创建是否成功:

    $ 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. 查看实例的名称和IB地址并和``nova`` 命令的输出比较:

    $ 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. 删除栈。

    $ heat stack-delete stack
    
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.