OpenStack Heat模板内部函数
Heat模板内部函数又称为Intrinsic functions。
注:Intrinsic functions只能用在 resource 的 properties 段 和 outputs 中。
1 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] }
2 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
3 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"]}}}
4 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 }
5 list_join
作用:使用指定的分隔符将一个list中的字符串合成一个字符串。
语法:
list_join:
- <delimiter>
- <list to join>
示例输出:one, two, and three。
list_join: [', ', ['one', 'two', 'and three']]
6 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 }] }
7 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}]
8 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模板内部函数的更多相关文章
- OpenStack Heat模板详解
Heat模板全称为heat orchestration template,简称为HOT. 1 典型Heat模板结构 heat_template_version: 2015-04-30 descript ...
- 【译】OpenStack Heat基础介绍
原文:http://blog.scottlowe.org/2014/05/01/an-introduction-to-openstack-heat/ 本文将简要地介绍OpenStack Heat. H ...
- heat模板
Heat 目前支持两种格式的模板,一种是基于 JSON 格式的 CFN 模板:另外一种是基于 YAML 格式的 HOT 模板.CFN 模板主要是为了保持对 AWS 的兼容性.HOT 模板是 Heat ...
- OpenStack Heat 介绍
Heat 是一个基于模板来编排复合云应用的服务. 它目前支持亚马逊的 CloudFormation 模板格式,也支持 Heat 自有的 Hot 模板格式.模板的使用简化了复杂基础设施,服务和应用的定义 ...
- OpenStack Heat总结之:Icehouse中通过Heat+Ceilometer实现Autoscaling
在I版本号中,Heat中加入了对于AutoScaling资源的支持.github上也提供了相应的AutoScaling的模板(https://github.com/openstack/heat-tem ...
- 零基础学习openstack【完整中级篇】及openstack资源汇总
1.你是如何学习openstack的?2.你对openstack的组件了解多少?3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩心事 ...
- OpenStack的Heat组件详解
一:简介 一.什么Heat 1. Heat 是一套业务流程平台,旨在帮助用户更轻松地配置以 OpenStack 为基础的云体系.利用Heat应用程序,开发人员能够在程序中使用模板以实现资源的自 ...
- 发现 OpenStack: 架构、功能和交互
原文:http://www.ibm.com/developerworks/cn/cloud/library/cl-openstack-overview/index.html OpenStack 是由 ...
- 如何用Tacker将NFV带入OpenStack?
最初社区里很多人争论过NFV是否属于OpenStack,而后来可以确定的是OpenStack的确占据了NFV会话中的很大一部分,并且形象地反映在了下面的ETSI MANO概念架构图中,OpenStac ...
随机推荐
- Scala配置环境变量Linux
1.下载.上传并解压scala-2.11.6.tgz 2.配置环境变量vim /etc/profile 增加如下代码: export SCALA_HOME=/usr/scala/scala-2.11. ...
- mysql查询某一列的数据最大字节
语法:select 列名, length(列名) from 表名where length(列名) = ( select max(length(列名)) from 表名); 实例:select proj ...
- 【原创】SPFA判负环
[定义与概念] 给定一张有向图,若其中存在一个环的所有权值之和为负数,这个环称为负环. [算法实现] 当然,负环的求解可以暴搜,但是时间复杂度就难以入眼了,我们回到求解单源最短路径算法上面,看看它们能 ...
- JDK源码那些事儿之并发ConcurrentHashMap上篇
前面已经说明了HashMap以及红黑树的一些基本知识,对JDK8的HashMap也有了一定的了解,本篇就开始看看并发包下的ConcurrentHashMap,说实话,还是比较复杂的,笔者在这里也不会过 ...
- 前端学习笔记--CSS入门
1.css概述: 2.css语法: 3.css添加方法: 用单独的文件存储css样式的优点: 优先级: h3得到的样式是内嵌样式覆盖了外部样式. 4.css选择器 标签选择器: 类别选择器: ID选择 ...
- 你所不知道的printf函数
#include <stdio.h> int main(void) { int a = 4; int b = 3; int c = a / b; float d = *(float *)( ...
- Laravel $request 常用方法
request的方法 描述 input('key','default-value') 此方法可以获取get请求所带来的特定参数的值,如果没有该参数可以提供默认值 all() 此方法获取get请求的所有 ...
- POJ P2279 Mr. Young's Picture Permutations 题解
每日一题 day14 打卡 Analysis 五维dpf[a1,a2,a3,a4,a5]表示各排从左端起分别占了a1,a2,a3,a4,a5个人时合影方案数量然后我们枚举a1,a2,a3,a4,a5从 ...
- Poj 2104 K-th Number(主席树&&整体二分)
K-th Number Time Limit: 20000MS Memory Limit: 65536K Case Time Limit: 2000MS Description You are wor ...
- linux系列(四):mkdir命令
1.命令格式: mkdir [选项] 目录名 2.命令功能: 通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录.要创建文件夹或目录的用户必须对所创建的文 ...