使用 Contrail Heat 模板
Heat 是 OpenStack 计划的编排引擎。Heat 支持基于由文本文件组成的模板启动多个云应用程序。
Heat 简介
Heat 模板描述了云应用程序的基础架构,例如网络、服务器、浮动 IP 地址等,并可用于管理该应用的整个生命周期。
当应用基础架构发生变化时,热火队模板可以修改,以自动反映这些更改。如果系统完成一个应用,Heat 还可以删除所有应用程序资源。
Heat 模板可以记录资源之间的关系,例如,哪些网络通过策略实施进行连接,随后调用 OpenStack REST API,该 API 以正确的顺序创建启动由 Heat 模板管理的应用程序所需的必要基础架构。
热架构
Heat 通过 Python 应用程序实现,包括以下内容:
heat-client
- 与heat-api
应用程序通信以运行 Heat API 的 CLI 工具。heat-api
-提供 OpenStack 原生 REST API,通过远程过程调用 (RPC) 将 API 请求发送至热火引擎,以处理 API 请求。heat-engine
- 负责编排模板的启动并将事件提供回 API 使用者。
支持 Heat 第 2 版资源
从 Contrail 3.0.2 版开始,Contrail Heat 资源和模板使用 Heat 版本 2 资源从 Contrail 方案自动生成。Contrail 3.0.2 版是 3.x 版本中使用热火与 Contrail 的最低要求版本。Contrail Heat 第 2 版资源属于以下层次结构: OS::ContrailV2::<ResourceName>
。
生成的资源和模板是 Contrail Python 软件包的一部分,位于目标安装中的以下目录中:
/usr/lib/python2.7/dist-packages/vnc_api/gen/heat/
heat/目录具有以下子目录:
资源/— 包含 Contrail-heat 插件的所有资源,该插件在热火引擎服务环境中运行。
templates/— 包含每个资源的示例模板。每个示例模板都会展示方案中的每个可能参数。当您为网络设计构建更复杂的模板时,请使用示例模板作为参考。
zhv/— 包含每个模板的输入环境。
下面包含 contrail-heat 支持的所有已生成插件资源列表:
https://github.com/tungstenfabric/tf-heat-plugin/tree/master/contrail_heat/new_templates
热第 1 版资源弃用
层级结构 OS::Contrail::<ResourceName>
中的 Heat 版本 1 资源已弃用,不应使用 Heat 版本 1 模板创建新的服务模板。
Heat 版本 2 使用服务模板和端口元组示例工作流程
使用 Contrail 服务模板第 2 版,用户可以创建端口,并通过端口元组对象将其绑定到基于虚拟机 (VM) 的服务实例。使用版本 2 服务模板创建的所有对象都对 Contrail 热火引擎直接可见,并由 Heat 直接管理。
下面显示了创建将由 Heat 管理的端口元和服务实例的基本工作流程步骤:
创建服务模板。在版本字段中选择 2。
为刚刚创建的服务模板创建服务实例。
创建端口元对象。
使用 Nova VM 启动或不启动虚拟机创建端口。
将每个端口标记为左、右、mgmt 等,并将端口添加到端口元对象中。
为单个端口元组中的每个端口使用唯一标签。名为左、右的标签用于转发。
将端口元组链接到服务实例。
启动服务实例。
示例:使用 Heat 创建服务模板
以下是如何使用 Heat 创建服务模板的示例。
定义一个模板以创建服务模板。
service_template.yaml heat_template_version: 2013-‐05-‐23 description: > HOT template to create a service template parameters: name: type: string description: Name of service template mode: type: string description: service mode type: type: string description: service type image: type: string description: Name of the image flavor: type: string description: Flavor service_interface_type_list: type: string description: List of interface types shared_ip_list: type: string description: List of shared ip enabled-‐disabled static_routes_list: type: string description: List of static routes enabled-‐disabled resources: service_template: type: OS::ContrailV2::ServiceTemplate properties: name: { get_param: name } service_mode: { get_param: mode } service_type: { get_param: type } image_name: { get_param: image } flavor: { get_param: flavor } service_interface_type_list: { "Fn::Split" : [ ",", Ref: service_interface_type_list ] } shared_ip_list: { "Fn::Split" : [ ",", Ref: shared_ip_list ] } static_routes_list: { "Fn::Split" : [ ",", Ref: static_routes_list ] } outputs: service_template_fq_name: description: FQ name of the service template value: { get_attr: [ service_template, fq_name] } }
创建环境文件以定义要放入模板文件中变量的值。
service_template.env parameters: name: contrail_svc_temp mode: transparent type: firewall image: cirros flavor: m1.tiny service_interface_type_list: management,left,right,other shared_ip_list: True,True,False,False static_routes_list: False,True,False,False
使用以下命令启动模板和环境文件,创建 Heat 堆栈:
heat stack create stack1 –f service_template.yaml –e service_template.env
或者对 OpenStack 的最新版本使用此命令
openstack stack create -e <env-file-name> -t <template-file-name> <stack-name>