一、什么Heat
-
Heat 是一套业务流程平台,旨在帮助用户更轻松地配置以 OpenStack 为基础的云体系。利用Heat应用程序,开发人员能够在程序中使用模板以实现资源的自动化部署。
Amazon Web Services 业务流程平台 CloudFormation (CFN) -
Heat 是 OpenStack 提供的自动编排功能的组件,基于描述性的模板,来编排复合云应用程序。
二、为什么需要Heat
1.Heat 采用了模板方式来设计或者定义编排,为方便用户使用,Heat 还提供了大量的模板例子,使用户能够方便地得到想要的编排。
- 更小的研发成本:引入 Heat,对于不了解 OpenStack 的研发者来说,可以更快的接入现有的业务系统。
三、概念
- 堆栈(stack):管理资源的集合。单个模板中定义的实例化资源的集合,是 Heat 管理应用程序的逻辑单元,往往对应一个应用程序。
- 模板(template):如何使用代码定义和描述堆栈。描述了所有组件资源以及组件资源之间的关系,是 Heat 的核心。
- 资源(resource):将在编排期间创建或修改的对象。资源可以是网络、路由器、子网、实例、卷、浮动IP、安全组等。
- 参数(parameters):heat模板中的顶级key,定义在创建或更新 stack 时可以传递哪些数据来定制模板。
- 参数组(parameter_groups):用于指定如何对输入参数进行分组,以及提供参数的顺序。
- 输出(outputs):heat模板中的顶级key,定义实例化后 stack 将返回的数据。
四:架构
Heat 服务重要的组件:
1. heat command-line client
CLI通过与 heat-api 通信,来调用 API 实现相关功能。终端开发者可以直接使用编排 REST API。
2. heat-api
实现 OpenStack 原生支持的 REST API。该组件通过把 API 请求经由 AMQP 传送给 Heat engine 来处理 API 请求。
3. heat-api-cfn
提供与 AWS CloudFormation 兼容的、AWS 风格的查询 API,处理请求并通过 AMQP 将它们发送到 heat-engine。
4. heat-engine
heat-engine是heat中的核心模块,处理主要的逻辑业务。此模块提供heat最主要的功能。
5. heat-cfntools
完成虚拟机实例内部的操作配置任务,需要单独下载。这个工具用来完成虚拟机实例内部的操作配置任务。在创建虚拟机镜像时,需要在镜像中安装heat-cfntools工具。
五.工作流程
Heat Engine 在这里的作用分为三层: 第一层处理 Heat 层面的请求,就是根据模板和输入参数来创建 Stack,这里的 Stack 是由各种资源组合而成。 第二层解析 Stack 里各种资源的依赖关系,Stack 和嵌套 Stack 的关系。第三层就是根据解析出来的关系,依次调用各种服务客户段来创建各种资源。
六.Heat 模板全称为heat orchestration template,简称为HOT
模版中有四个关键段:
. Parameters stack需要输入的参数 (可选)
. Mapping 一组静态的Key/ValuePair ,用Fn::FindlnMap 来查找对应的值(可选)
. Resource 资源 CPU Memory (必填)
. Output 用户的返回值(可选)
编排模板(HEAT)语言
列出可以用于指定模板版本的命令:
列出可用的资源类型:
HOT提供了几个内置函数,用于执行模板中的特定任务。编排模板中的内部函数将值分配给在创建堆栈期间可用的属性。
get_attr
get_attr函数引用资源的属性。
get_param
get_param函数引用模板的一个输入参数并返回该输入参数的值。
get_resource
get_resource函数引用模板中的一个资源。
str_replace
str_replace函数将输入字符串中的变量替换为您指定的值。
list_join
list_join函数将一组字符串附加到单个值中,由指定的分隔符分隔。