Heat模板内部函数又称为Intrinsic functions。

注:Intrinsic functions只能用在 resource 的 properties 段 和 outputs 中。   

 

get_attr

作用:获取所创建资源的属性。

语法:

get_attr:
- <resource name>
- <attribute name>
- <key/index 1> (optional)
- <key/index 2> (optional)
- ...

Resource name:必须是模板 resouce 段中指定的资源。

Attribute name:要获取的属性,如果属性对应的值是list 或map, 则可以指定key/index来获取具体的值。

示例:

resources:
my_instance:
type: OS::Nova::Server
# ... outputs:
instance_ip:
description: IP address of the deployed compute instance
value: { get_attr: [my_instance, first_address] }
instance_private_ip:
description: Private IP address of the deployed compute instance
value: { get_attr: [my_instance, networks, private, 0] }

  

get_file

作用:获取文件的内容。

语法:

get_file: <content key>

示例:

resources:
my_instance:
type: OS::Nova::Server
properties:
# general properties ...
user_data:
get_file: my_instance_user_data.sh
my_other_instance:
type: OS::Nova::Server
properties:
# general properties ...
user_data:
get_file: http://example.com/my_other_instance_user_data.sh

get_param

作用:引用模板中指定的参数。

语法:

get_param:
- <parameter name>
- <key/index 1> (optional)
- <key/index 2> (optional)
- ...

示例:

parameters:
instance_type:
type: string
label: Instance Type
description: Instance type to be used.
server_data:
type: json resources:
my_instance:
type: OS::Nova::Server
properties:
flavor: { get_param: instance_type}
metadata: { get_param: [ server_data, metadata ] }
key_name: { get_param: [ server_data, keys, 0 ] }

输入参数是:

{"instance_type": "m1.tiny",
{"server_data": {"metadata": {"foo": "bar"},
"keys": ["a_key","other_key"]}}}

get_resource 

作用:获取模板中指定的资源。

语法:

get_resource: <resource ID>

示例:

resources:
instance_port:
type: OS::Neutron::Port
properties: ... instance:
type: OS::Nova::Server
properties:
...
networks:
port: { get_resource: instance_port }

list_join

作用:使用指定的分隔符将一个list中的字符串合成一个字符串。

语法:

list_join:
- <delimiter>
- <list to join>

示例输出:one, two, and three。

list_join: [', ', ['one', 'two', 'and three']]

digest           

作用:在指定的值上使用algorithm。

语法:

digest:
- <algorithm>
- <value>

algorithm 可用的值是hashlib(md5, sha1, sha224, sha256, sha384, and sha512) 或openssl的相关值

示例:

# from a user supplied parameter
pwd_hash: { digest: ['sha512', { get_param: raw_password }] }

 

repeat

作用:迭代fore_each中的列表,按照template的格式生成一个list。

语法:

repeat:
template:
<template>
for_each:
<var>: <list>

示例:

parameters:
ports:
type: comma_delimited_list
label: ports
default: "80,443,8080"
protocols:
type: comma_delimited_list
label: protocols
default: "tcp,udp" resources:
security_group:
type: OS::Neutron::SecurityGroup
properties:
name: web_server_security_group
rules:
repeat:
for_each:
<%port%>: { get_param: ports }
<%protocol%>: { get_param: protocols }
template:
protocol: <%protocol%>
port_range_min: <%port%>

结果是[{‘protocal’:tpc, ‘prot_range_min’:80},

{‘protocal’:tpc, ‘prot_range_min’:443},

{‘protocal’:tpc, ‘prot_range_min’:8080},

{‘protocal’:udp, ‘prot_range_min’:80},

{‘protocal’:udp, ‘prot_range_min’:443},

{‘protocal’:udp, ‘prot_range_min’:8080}]

resource_facade

作用:检索资源的数据。

语法:

resource_facade: <data type>

data type:metadata、deletion_policy、update_policy

9 str_replace

作用:使用params中的值替换template中的占位符,从而构造一个新的字符串。

语法:

str_replace:
template: <template string>
params: <parameter mappings>

示例:

resources:
my_instance:
type: OS::Nova::Server
# general metadata and properties ... outputs:
Login_URL:
description: The URL to log into the deployed application
value:
str_replace:
template: http://host/MyApplication
params:
host: { get_attr: [ my_instance, first_address ] }

template 中 host 将会被替换。

10 str_split

作用:将一个字符串按照分隔符分隔成一个list

语法:

str_split:
- ','
- string,to,split

示例:

str_split: [',', 'string,to,split']

结果是['string', 'to', 'split']

11 map_merge

作用:合并多个map,且后面的map会覆盖前面map中同一个key的值。

语法:

map_merge:
- <map 1>
- <map 2>
- ...

示例:

map_merge: [{'k1': 'v1', 'k2': 'v2'}, {'k1': 'v2'}]

结果是:{'k1': 'v2', 'k2': 'v2'}。

编者注:本文来自OpenStack开源团队工程师陈曾

OpenStack Heat模板内部函数的更多相关文章

  1. OpenStack Heat模板详解

    Heat模板全称为heat orchestration template,简称为HOT. 1 典型Heat模板结构 heat_template_version: 2015-04-30 descript ...

  2. 【译】OpenStack Heat基础介绍

    原文:http://blog.scottlowe.org/2014/05/01/an-introduction-to-openstack-heat/ 本文将简要地介绍OpenStack Heat. H ...

  3. heat模板

    Heat 目前支持两种格式的模板,一种是基于 JSON 格式的 CFN 模板:另外一种是基于 YAML 格式的 HOT 模板.CFN 模板主要是为了保持对 AWS 的兼容性.HOT 模板是 Heat ...

  4. OpenStack Heat 介绍

    Heat 是一个基于模板来编排复合云应用的服务. 它目前支持亚马逊的 CloudFormation 模板格式,也支持 Heat 自有的 Hot 模板格式.模板的使用简化了复杂基础设施,服务和应用的定义 ...

  5. OpenStack Heat总结之:Icehouse中通过Heat+Ceilometer实现Autoscaling

    在I版本号中,Heat中加入了对于AutoScaling资源的支持.github上也提供了相应的AutoScaling的模板(https://github.com/openstack/heat-tem ...

  6. 零基础学习openstack【完整中级篇】及openstack资源汇总

    1.你是如何学习openstack的?2.你对openstack的组件了解多少?3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩心事 ...

  7. OpenStack的Heat组件详解

    一:简介     一.什么Heat 1. Heat 是一套业务流程平台,旨在帮助用户更轻松地配置以 OpenStack 为基础的云体系.利用Heat应用程序,开发人员能够在程序中使用模板以实现资源的自 ...

  8. 发现 OpenStack: 架构、功能和交互

    原文:http://www.ibm.com/developerworks/cn/cloud/library/cl-openstack-overview/index.html OpenStack 是由 ...

  9. 如何用Tacker将NFV带入OpenStack?

    最初社区里很多人争论过NFV是否属于OpenStack,而后来可以确定的是OpenStack的确占据了NFV会话中的很大一部分,并且形象地反映在了下面的ETSI MANO概念架构图中,OpenStac ...

随机推荐

  1. OpenSSL和Python实现RSA Key公钥加密私钥解密

    基于非对称算法的RSA Key主要有两个用途,数字签名和验证(私钥签名,公钥验证),以及非对称加解密(公钥加密,私钥解密).本文提供一个基于OpenSSL和Python进行非对称加解密的例子. 1. ...

  2. js获取此刻时间或者把日期格式时间转换成字符串格式的时间

    getTime(val){ if (val&val instanceof Date){ d = val; }else{ d = new Date(); }; var year = d.getF ...

  3. PL/SQL块与表达式

    一.块(Block) 是PL/SQL的基本执行单元,由定义部分,执行部分(必须)和例外处理部分组成. Declare /*定义部分――定义常量.变量.游标.例外.复杂数据类型*/ Begin /*执行 ...

  4. go语言-数据类型及类型之间转换

    数据类型分类 一.数据类型-基本数据类型 1.整数型(int.有符号(int8/1字节.int16/2字节.int32/4字节.int64/8字节).无符号(uint.uint8.uint16.uin ...

  5. 54、servlet3.0-ServletContainerInitializer

    54.servlet3.0-ServletContainerInitializer Shared libraries(共享库) / runtimes pluggability(运行时插件能力) 1.S ...

  6. 学到了林海峰,武沛齐讲的Day23-完

    10月11号生了儿子,很高心..不好的是孩子住院了,14号出院,晚上外公去世了,15号赶回老家.....20号回贵阳,21号回公司办事....我要坚定的学习下去...以前几乎是卡在这里就学不下去了.加 ...

  7. Planet.Earth.II.EP05.2016

  8. ElasticSearch数据导入By Postman

    样例数据 为了更好的使用和理解ES,没有点样例数据还是不好模拟的.这里提供了一份官网上的数据,accounts.json.如果需要的话,也可以去这个网址玩玩,它可以帮助你自定义写随机的JSON数据. ...

  9. css添加了原始滚动条要隐藏滚动条的显示

    // 添加伪类 <style> ::-webkit-scrollbar {display:none} </style> <div style=" width:2 ...

  10. [bzoj 3534][Sdoi2014] 重建

    传送门 Description  T国有N个城市,用若干双向道路连接.一对城市之间至多存在一条道路. 在一次洪水之后,一些道路受损无法通行.虽然已经有人开始调查道路的损毁情况,但直到现在几乎没有消息传 ...