Expressions 表达式
条件表达式
condition ? true_val : false_val
- condition 条件
- true_val 条件为 true 的值
- false_val 条件为false 的值
当 region 变量存在时,region=var.region,反之 region="cn-hangzhou"
terraform console
> var.region != "" ? var.region: "cn-hangzhou"
"cn-beijing"
for 表达式
借助 for 表达式可以对数据进行处理,生成新的对象;
[ for VAR in OBJECT : VAR]
[ for INDEX, VAR in OBJECT: "="]
variable "env_list" {
type = list
default = ["dev", "test", "prod"]
}
> [for i in var.env_list : i]
[
"dev",
"test",
"prod",
]
> [for i,v in var.env_list : " = "]
[
"0 = dev",
"1 = test",
"2 = prod",
]
splat 表达式
splat 表达式提供了一种更简洁的方式来表达可以用 for 表达式执行的常见操作
variable "info_list" {
type = list
default = [{
name = "test",
role = "dev",
},
{
name = "whale",
role = "admin",
}
]
}
#
> var.info_list
tolist([
{
"name" = "test"
"role" = "dev"
},
{
"name" = "whale"
"role" = "admin"
},
])
> var.info_list[*].name
tolist([
"test",
"whale",
])
> var.info_list[*].role
tolist([
"dev",
"admin",
])
内置函数
Terrform 语言包含许多内置函数,可以从表达式中调用这些函数来转换。
函数调用的一般语法是函数名后跟括号中以逗号分隔的参数。
function(arg1, arg2)
数值函数
max() 获取最大值
min() 获取最小值
parseint() 将字符串解析为整数
whale@WhaledeMacBook-Pro dev % terraform console
> max(1,2,3,3,4,5)
5
> max([1,2,3,3,4,5]...)
5
> parseint("101", 10)
101
> parseint("101", 2)
5
String 字符串函数
format() 格式化
join() 字符串拼接
replace() 替换字符串
> format("Hello %s", "whale")
"Hello whale"
> join(",", ["name","age","title"])
"name,age,title"
> replace("a=b=c","=","+")
"a+b+c"
> split(",","name,age,title")
tolist([
"name",
"age",
"title",
])
Collection 集合函数
函数 | 功能 |
alltrue() anytrue() | 判断元素中都是、存在 为true |
chunklist(list, size) | 按照指定 |
compat(list) | 去除list中的课空元素 |
con(list1, list2) | 合并两个list |
contains(list, value) | 判断元素是否存在 list 中 |
distinct(list) | 去除 list 中的重复元素 |
element(list,index) list[index] | 根据index获取list中的元素 |
flatten(list,list,list) | 将多层 list 转换成单 list |
index(list,value) | 返回value元素的index |
Map 映射函数
函数 | 功能 |
length(list) | 计算list 的长度 |
lookup(map,key,default) | 检索map的key,不存在返回 default |
merge(map1,map2,map3) | 合并map,相同key 会被最后覆盖 |
keys(map) | 创建map中key 的list |
values(map) | 创建map中value 的list |