OpenStack中的Heat分析
2013-12-02
声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:http://lingxiankong.github.io/
内容系本人及本人团队学习、研究和总结,如有雷同,实属荣幸!
Author:华为云计算工程师 孔令贤
Date: 2013-12-02
版本:2013.2
Heat
Heat是一套业务流程平台,旨在帮助用户更轻松地配置以OpenStack为基础的云体系。利用Heat应用程序,开发人员能够在程序中使用模板以实现资源的自动化部署。Heat能够启动应用、创建虚拟机并自动处理整个流程。它还拥有出色的跨平台兼容性,能够与Amazon Web Services业务流程平台CloudFormation相对接——这意味着用户完全可以将AWS模板引入OpenStack环境当中。
所以,在分析Heat的时候,不可避免的要与AWS的CloudFormation作对比。
Template
关于template,可以参考Amazon的文档,毕竟heat源于CloudFormation。 其实把Amazon CloudFormation的文档仔细读一遍,基本就能玩转Heat了。
需要说的就一点,虽然heat目前兼容CloudFormation,但openstack社区已经在慢慢支持自研的模板结构,叫HOT(heat orchestration template,本文暂不关注),所以目前有两种template解释器,依据模板文件开头是否是heat_template_version
字段识别。
目前CloudFormation Template中,Heat仅支持如下的字段:
'AWSTemplateFormatVersion', 'Description', 'Mappings', 'Parameters', 'Resources', 'Outputs'
而CloudFormation中的'Conditions'字段目前还不支持。
Function Reference
在CloudFormation中,支持如下的函数:
Fn::Base64, Fn::FindInMap, Fn::GetAtt, Fn::GetAZs, Fn::Join, Fn::Select, Ref,目前Heat都支持。因为尚不支持Conditions
字段,所以也不支持Fn::And, Fn::Equals, Fn::If, Fn::Not, Fn::Or,这些条件判断函数。
Resource Attributes: DeletionPolicy
定义资源时,可以定义DeletionPolicy
属性,表示在删除stack时,资源的删除策略,默认是Delete
。在CloudFormation中,可以指定Retain
,表示不删除该资源,对于有快照功能的资源(比如AWS::EC2::Volume),也可以指定Snapshot
,表示在删除前先做快照。
Resource Attributes: DependsOn
显式的定义资源的依赖关系。在资源定义时已经有一些函数(比如Ref
或Fn::GetAtt
)可以判定依赖关系,但除了这些,可能还需要手工指定依赖。一个典型的用法就是配合AWS::CloudFormation::WaitCondition
(关于WaitCondition一个使用示例可以参见这里),它的作用是暂停stack的创建,等待某个信号,然后再恢复执行。比如在虚拟机创建完后,需要等待应用的下载和配置结束,然后才能真正认为该虚拟机创建完毕。一个例子:
"myWaitCondition" : {
"Type" : "AWS::CloudFormation::WaitCondition",
"DependsOn" :