Heat是OpenStack提供的自动编排功能的组件,基于描述性的模板,来编排复合云应用程序。
Heat向开发人员和系统管理员提供了一种简便地创建和管理一批相关的OpenStack资源的方法,并通过有序且可预测的方式对其进行资源配置和更新。
用户可以使用Heat的示例模板或自己创建模板来描述OpenStack资源以及应用程序运行时所需的任何相关依赖项或运行时参数。
当设置完成后,可通过按授权控制、可预测的方式修改和更新OpenStack资源。
用户可以通过OpenStack管理控制台、Heat命令行工具或 API对模板及其相关的资源集进行设置和更新。
1,更快更有效的管理OpenStack的资源
云平台系统在相对比较稳定的情况下,管理成本逐渐变成首要的解决问题。云上自动化能力是一个云平台的刚需,可以有效降低维护难度。
OpenStack原生提供命令行和 Horizon 来供用户管理资源。然而命令行和在浏览器中的点击,费时费力,不利于用户使用 Openstack 来进行大批量的管理以支撑 IT 应用。
Heat 在这种情况下应运而生。
Heat 采用了模板方式来设计或者定义编排。为方便用户使用,Heat 还提供了大量的模板例子,使用户能够方便地得到想要的编排。
2,更小的研发成本
引入Heat,对于不了解OpenStack的研发者来说,可以更快的接入现有的业务系统。开发者更关心的是授权认证和对虚拟资源的增删改,而对于底层的状态并不用太多了解。
顶级key包括七个:
heat_template_version、description、parameter_groups、parameters、resources、outputs、conditions。
1,heat command-line client
CLI通过与heat-api通信,来调用API实现相关功能。终端开发者可以直接使用编排REST API。
2,heat-api
一个OpenStack本地REST API,通过RPC,把发送来的API请求在发给heat-engine。
heat-api,提供了原生restful API对外使用。用户对API的调用,由heat-api处理之后,最终通过RPC传递给Heat-engine来进一步处理。
3,heat-api-cfn
组件提供了Amazon style 的查询 API,可以完全兼容于Amazon的CloudFormation,对于API的请求同heat-api类似,处理之后,通过RPC传递给heat-engine进一步处理。
4,heat-engine
heat-engine是heat中的核心模块,处理主要的逻辑业务。
此模块提供heat最主要的功能,执行模板内容,最终完成应用系统的创建和部署,并把执行结果返回给API调用者。
当 heat engine 拿到请求后,会把请求解析为各种类型的资源,每种资源都对应 OpenStack 其它的服务客户端,然后通过发送 REST 的请求给其它服务。通过如此的解析和协作,最终完成请求的处理。
5,heat-cfntools
独立于heat组件的一个的工具,需要单独下载。这个工具用来完成虚拟机实例内部的操作配置任务。在创建虚拟机镜像时,需要在镜像中安装heat-cfntools工具。
1.用户在 Horizon 中或者命令行中提交包含模板和参数输入的请求
2.Horizon 或者命令行工具会将接收到的请求转化为 REST 格式的 API 调用Heat-api 或者是 Heat-api-cfn。
3.Heat-api 和 Heat-api-cfn 会验证模板的正确性,然后通过 AMQP 异步传递给 Heat Engine 来处理请求。
4.Heat Engine 接收到请求后,会把请求解析为各种类型的资源,每种资源都对应 OpenStack 其它的服务客户端,然后通过发送 REST 的请求给其它服务。
5.Heat Engine 在这里的作用分为三层: 第一层处理 Heat 层面的请求,就是根据模板和输入参数来创建 Stack,这里的 Stack 是由各种资源组合而成。 第二 层解析 Stack 里各种资源的依赖关系,Stack 和嵌套 Stack 的关系。第三层就是根据解析出来的关系,依次调用各种服务客户段来创建各种资源。