Heat是OpenStack提供的自动编排功能的组件,基于描述性的模板,来编排复合云应用程序。
Heat向开发人员和系统管理员提供了一种简便地创建和管理一批相关的OpenStack资源的方法,并通过有序且可预测的方式对其进行资源配置和更新。
用户可以使用Heat的示例模板或自己创建模板来描述OpenStack资源以及应用程序运行时所需的任何相关依赖项或运行时参数。
当设置完成后,可通过按授权控制、可预测的方式修改和更新OpenStack资源。
用户可以通过OpenStack管理控制台、Heat命令行工具或 API对模板及其相关的资源集进行设置和更新。
1,更快更有效的管理OpenStack的资源
云平台系统在相对比较稳定的情况下,管理成本逐渐变成首要的解决问题。云上自动化能力是一个云平台的刚需,可以有效降低维护难度。
OpenStack原生提供命令行和 Horizon 来供用户管理资源。然而命令行和在浏览器中的点击,费时费力,不利于用户使用 Openstack 来进行大批量的管理以支撑 IT 应用。
Heat 在这种情况下应运而生。
Heat 采用了模板方式来设计或者定义编排。为方便用户使用,Heat 还提供了大量的模板例子,使用户能够方便地得到想要的编排。
2,更小的研发成本
引入Heat,对于不了解OpenStack的研发者来说,可以更快的接入现有的业务系统。开发者更关心的是授权认证和对虚拟资源的增删改,而对于底层的状态并不用太多了解。
1,stack
Stack概念来源于AWS,是OpenStack中用来管理一组资源的基本单位。一个stack往往对应一个应用程序。
Stack管理的是resource,而resource是个抽象的概念,它可以是虚拟机,可以是网络等。
Stack就是在单个模板中定义的实例化资源的集合,是Heat管理应用程序的逻辑单元。
2,template
heat的template描述了所用的所有组件资源以及组件资源之间的关系。
heat模版是heat的核心.
2.1,resource
资源是底层服务的抽象,CPU、memory、disk、网络等都可以看作是资源。一个stack可以拥有很多资源。
资源和资源之间会存在依赖关系。Heat在创建栈的时候会自动解析依赖关系,按顺序创建资源。
在heat的template中,resources用于模板中资源的声明,在HOT模板中,应该至少有一个资源的定义,否则在实例化模板时将不会做任何事情。
2.2,parameters
heat模板中的顶级key,定义在创建或更新stack时可以传递哪些数据来定制模板。
2.3,parameter_groups,
用于指定如何对输入参数进行分组,以及提供参数的顺序。
2.4,outputs
heat模板中的顶级key,定义实例化后stack将返回的数据。
顶级key包括七个:
heat_template_version、description、parameter_groups、parameters、resources、outputs、conditions。
除了heat_template_version和resources,其它都是可选部分。
Heat编排服务,通过使用描述性的模板格式,来编排复合云应用程序。
1,Heat提供基于模板的业务流程,调用相应的OpenStack API,生成运行的云应用程序。
2,Heat模板在文本文件中,描述了云应用程序的基础结构,这些文本文件可读可写,并且可以通过版本控制工具进行管理。
3,模板指定了资源之间的关系(例如,指定存储卷连接到指定服务器),这使Heat能够调用OpenStack APIs,以正确的顺序创建所有基础设施,启动应用程序。
4,Heat集成了OpenStack的其他组件,能够自动化调配大多数云资源(例如实例、浮动ip、卷、安全组、用户等),以及一些更高级的功能,例如高可用性、实例自动伸缩和嵌套stack。
5,Heat模板与软件配置管理工具(如Puppet和Ansible)的集成
6,操作人员可以通过安装插件定制Heat功能
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工具。