Heat简介
Heat是OpenStack的负责编排计划的主要项目。它可以基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性。目前Heat自身的模板格式(HOT)正在不停的改进,同时也支持AWS
CloudFormation 模板(CFN),HOT的目标是在不远的将来可以完全的替代CFN。
Heat提供了一个OpenStack的原生REST API和CloudFormation兼容的查询API。
Heat的工作原理
Heat主要是基于模板文件对应用进行管理,在模板文件中可以定义应用需要的资源,资源可以包括多种类型(CFN以及HOT支持的资源类型可能会存在一定的差别)例如IP,网络,镜像,用户,实例等。定义资源的同时也可以指定资源之间的依赖关系,例如使用云硬盘创建创建一个实例时,可以指定在创建实例时必须要创建云硬盘。
编辑完模板文件后,可以使用该模板文件创建Stack,创建的过程中Heat引擎会根据模板文件中定义的资源,调用对应的资源插件创建资源。创建完Stack之后,Heat可以管理Stack中所有资源的生命周期,例如可以删除资源,也可以通过更新模板的方式来更新Stack中资源的定义。
Heat的简单原理如下:
Heat引擎的执行逻辑大概如下:
Heat目前能做什么
Heat相对于OpenStack的其他项目(例如 Nova)而言还很年轻,受到重视应该是从H版本开始,所以它可能还存在很多的不足。下面简单的列一下在I版本中支持的特性
- 对HOT,CFN模板格式的支持
HOT中的资源类型在Icehouse版本中有了较大的扩充,完整列表请参考 http://docs.openstack.org/developer/heat/template_guide/openstack.html
- 通过Ceilometer实现自动收缩
- 模板资源的更新
- Heat引擎的Scaling
- 支持Cloud-init资源的定义
- 对Puttet,Chef等配置工具的支持
OpenStack 入门学习之四:icehouse版本中Heat的简单介绍