heat ResourceGroup资源使用介绍
来源:互联网 发布:2016日本进出口数据 编辑:程序博客网 时间:2024/05/16 03:04
在heat中有一个ResourceGroup资源,类型是“OS::Heat::ResourceGroup”。
从名称就能够大概猜到该资源的作用:资源组,组内可以包括一个或多个相同的嵌套资源。
通过resource-type-show命令查看该资源的信息,可以看到该资源有以下几项输入属性:
属性类型描述countnumber定义资源组包含子资源个数,默认1index_varstring定义索引替换字符串,默认%index%removal_policiescomma_delimited_list定义要从资源组中删除的子资源,默认[]resource_defjson子资源定义,跟在模板中直接定义资源属性相同其中必须显示指定的属性是resource_def。另外,该资源的输出属性如下:
属性描述attributes输出子资源指定属性信息refs输出所有子资源ID列表show输出所有子资源详细信息下面通过一个例子来演示ResourceGroup资源的使用。
编辑模板文件template.yaml如下:
heat_template_version: 2015-04-30description: create a group of cinder volumeresources: resgroup: type: OS::Heat::ResourceGroup properties: count: 2 resource_def: type: OS::Cinder::Volume properties: name: vol-%index% size: 2outputs: myattributes: value: {"get_attr": [resgroup, "attributes", volume_type]} myrefs: value: {get_attr: ['resgroup', refs]} myshow: value: {get_attr: [resgroup, "show"]}
heat stack-create -f template.yaml mystack
查看创建成功后的结果:
# heat stack-list -n+--------------------------------------+-------------------------------+-----------------+---------------------+--------------------------------------+| id | stack_name | stack_status | creation_time | parent |+--------------------------------------+-------------------------------+-----------------+---------------------+--------------------------------------+| b309d171-b98e-4577-a596-ebce15556953 | mystack | CREATE_COMPLETE | 2015-08-31T05:56:30 | None || 9fe9df0b-d5db-4da4-8aa3-a65aed4a2775 | mystack-resgroup-pwgynlfi5p3g | CREATE_COMPLETE | 2015-08-31T05:56:34 | b309d171-b98e-4577-a596-ebce15556953 |+--------------------------------------+-------------------------------+-----------------+---------------------+--------------------------------------+# heat resource-list -n 1 mystack+---------------+--------------------------------------+-------------------------+-----------------+---------------------+-------------------------------+| resource_name | physical_resource_id | resource_type | resource_status | updated_time | stack_name |+---------------+--------------------------------------+-------------------------+-----------------+---------------------+-------------------------------+| resgroup | 9fe9df0b-d5db-4da4-8aa3-a65aed4a2775 | OS::Heat::ResourceGroup | CREATE_COMPLETE | 2015-08-31T05:56:34 | mystack || 0 | 0365818e-27ec-4773-a785-bb4875856a0b | OS::Cinder::Volume | CREATE_COMPLETE | 2015-08-31T05:56:35 | mystack-resgroup-pwgynlfi5p3g || 1 | db4935c4-6250-4778-893f-1e7683a667b8 | OS::Cinder::Volume | CREATE_COMPLETE | 2015-08-31T05:56:35 | mystack-resgroup-pwgynlfi5p3g |+---------------+--------------------------------------+-------------------------+-----------------+---------------------+-------------------------------+可以看到,ResourceGroup资源实际上是生成了一个嵌套stack(如上mystack-resgroup-pwgynlfi5p3g),资源组中的那些子资源实际是属于嵌套stack。
按照模板的配置,生成了两个Volume类型的子资源。
再来查看outputs:
# heat output-show mystack myattributes{ "1": "lvmdriver-1", "0": "lvmdriver-1"}# heat output-show mystack myrefs[ "0365818e-27ec-4773-a785-bb4875856a0b", "db4935c4-6250-4778-893f-1e7683a667b8"]按照模板配置,myattributes是输出的Volume子资源的volume_type属性(如上lvmdriver-1)。
而myrefs是输出的资源组的refs属性,实际效果是子资源ID列表。
还有一个myshow,是子资源的详细信息,由于输出太长这里没有贴出来。
看了上面的例子,对资源组的使用也就大体有了一个了解。
这时候就面临着另一个问题,如果stack创建完成后需要调整子资源的数量,怎么实现?
调整模板中的count参数,然后用stack-update命令即可。
例如在上面模板的基础上,把count改为3,stack-update之后再查看子资源,就会发现多了一个名称为2的子资源。
而如果把count改为1,stack-update之后,就只剩下名称为0的子资源了。
注:子资源移除是删除名称数字较大的,保留名称数字较小的。例如上面更新子资源数量为1后,就把名称为1和2的子资源删除了,剩下名称为0的子资源。
那是否能够删除指定的子资源呢?答案是肯定的。前面提到的removal_policies属性就是这个作用。
直接上例子。
按照前面的例子创建一个stack,创建成功后有两个子资源0和1。
这时候如果想删除子资源0,可以这样配置模板中的ResourceGroup资源,增加removal_policies属性:
resgroup: type: OS::Heat::ResourceGroup properties: count: 1 removal_policies: [{resource_list: [0]}] resource_def: type: OS::Cinder::Volume properties: name: vol-%index% size: 2
其中,resource_list键对应的是一个列表,列表包含的是要删除的子资源名称,也可以是子资源的ID。上面是指定的名称0。
更新stack之后,可以看到0子资源被删除了,1子资源保留下来了:# heat resource-list -n 1 mystack+---------------+--------------------------------------+-------------------------+-----------------+---------------------+-------------------------------+| resource_name | physical_resource_id | resource_type | resource_status | updated_time | stack_name |+---------------+--------------------------------------+-------------------------+-----------------+---------------------+-------------------------------+| 1 | affd7faf-8735-4a3a-ba09-6e0f50f385c8 | OS::Cinder::Volume | CREATE_COMPLETE | 2015-08-31T06:32:30 | mystack-resgroup-pwgynlfi5p3g || resgroup | 9fe9df0b-d5db-4da4-8aa3-a65aed4a2775 | OS::Heat::ResourceGroup | UPDATE_COMPLETE | 2015-08-31T07:04:21 | mystack |+---------------+--------------------------------------+-------------------------+-----------------+---------------------+-------------------------------+
至此,ResourceGroup资源的使用介绍完毕。
总结一下:ResourceGroup主要用在需要创建多个相同资源的场景,好处一是能够简化模板的编写,二是可以方便地调整资源数量。- heat ResourceGroup资源使用介绍
- Bug for heat template: ResourceGroup中的refs属性不支持索引
- heat中资源hook的使用
- OpenStack Heat服务介绍
- OpenStack Heat服务介绍
- OpenStack Heat服务介绍
- Heat安装及使用
- OpenStack-Heat使用命令
- 使用heat创建虚拟机
- [Heat]Heat中资源的扩展与加载
- ResourceGroup 关系
- Heat
- OpenStack Heat中添加新资源示例
- 利用environment文件实现heat资源注册
- openstack G版孵化项目Heat介绍
- OpenStack-Heat中template的formatversion介绍
- OpenStack Heat服务介绍 (一)
- OpenStack Heat服务介绍 (二)
- python 中文编码 #-*-coding:utf-8-*-
- hdu 2222 AC自动机模板题(指针版+数组版)
- 分析rails日志,计算响应率
- eclipse中outline中图标含义小结
- MySQL主从异步, 半同步配置
- heat ResourceGroup资源使用介绍
- 改进PHP的var_dump()方法使之适应显示从数据库中查出来的数据
- Hidden Number
- C/C++中各种类型int、long、double、char表示范围(最大最小值)
- linux中vmstat命令详解
- jquery 获取元素文本信息
- Spring 事务管理
- 《TenderUnity 从0开始Unity》 之 .Net Framework的认识
- DDOS