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. Castle Windsor Ioc 一个接口多个实现解决方案

    介绍 Castle Windsor 是微软的Ioc类库,本文主要介绍解决一个接口多个实现的解决方案 接口和类 以下内容不是真实的实际场景,仅仅是提供解决一个接口多个实现的思路. 业务场景类 先假设有一 ...

  2. 个性化排序算法实践(一)——FM算法

    因子分解机(Factorization Machine,简称FM)算法用于解决大规模稀疏数据下的特征组合问题.FM可以看做带特征交叉的LR. 理论部分可参考FM系列,通过将FM的二次项化简,其复杂度可 ...

  3. Jenkins 参数化构建(Extended Choice Parameter)

    1.下载安装 Extended Choice Parameter 插件 2.打开job--->General--->参数化构建过程--->Extended Choice Parame ...

  4. 利用JS对象把值传到后台

    记得以前刚写asp.net 从前台往后台传值 都是var data=A,B,C,D,E; 循环添加用逗号隔开 后台还要被测试测出只输入,就错了 哈哈..后来用✈◆类似的符号隔开 不是长久之计... 现 ...

  5. Centos 改ssh 端口

    1.修改配置文件:/etc/ssh/sshd_config 2.修改 #Port 22 把前面的#注释删掉,然后添加一个Port XXXX 定义一个自己的.例如我喜欢 Port 22333 3.修改后 ...

  6. 点击按钮切换内容效果(使用CSS DIV与JavaScript)

    <head><script type="text/javascript">function change_div(id){  if (id == 'gsyw ...

  7. (转)Redis Cluster(集群)

    一.概述 在前面的文章中介绍过了redis的主从和哨兵两种集群方案,redis从3.0版本开始引入了redis-cluster(集群).从主从-哨兵-集群可以看到redis的不断完善:主从复制是最简单 ...

  8. LBA逻辑块地址

    LBA简介 磁盘读取发展 IO操作读取硬盘的三种方式: chs方式 :小于8G (8064MB) LBA28方式:小于137GB LBA48方式:小于144,000,000 GB LBA方式访问使用了 ...

  9. hashCode 的常规协定是:

    hashCode 的常规协定是:  . 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改 ...

  10. meshing-划分圆柱结构化网格

    原视频下载地址:https://yunpan.cn/cqjeckrzEpVkY  访问密码 eb5d