
Pada postingan kali ini, kita akan membahas fitur Terraform. Bahasa Terraform menyertakan sejumlah fungsi bawaan yang dapat Anda panggil dari ekspresi untuk mengubah dan menggabungkan nilai. Sintaks umum untuk pemanggilan fungsi adalah nama fungsi, diikuti dengan argumen, dipisahkan dengan koma, dalam tanda kurung.
<function_name>(<argument1>, <argument2>, โฆ<argumentN>)
Selanjutnya, kami akan menjelaskan fitur Terraform dengan contoh. Kami akan menggunakan konsol terraform untuk demo ini.
Fitur Terraform:
Buka konsol terraform
terraform console
Fungsi numerik
abs(number): .
abs(-19.86)
# 19.86
ceil(number): ,
ceil(7.1)
# 8
floor(number): ,
floor(7.1)
# 7
log(number, base): log .
log(16,2)
# 4
max(N1,N2,..Nn): .
max(3,2,6,8.8,7)
# 8.8
min(N1,N2,..Nn): .
min(3,2,6,8.8,7)
# 2
pow(number,power): , .
pow(8,2)
# 64
signum(number): , -1 1 .
signum(-4)
# -1
signum(4)
# 1
chomp("string"): .
chomp("cloudaffaire\n")
# cloudaffaire
(** \ n )
format(spec, values...):
format("Welcome, to %s", "CloudAffaire")
# Welcome, to CloudAffaire
format("The year is %d", 2019)
# The year is 2019
format("%4.4f+", 3.86)
# 3.8600+
formatlist(spec, values...): formatlist
. , .
formatlist("www.%s.com",list("azure","aws","google"))
# [www.azure.com,www.aws.com,www.google.com]
indent(num_spaces, string): , , .
indent(8,"hi, \n welcome \n to \n cloudaffaire")
#1st line hi has no indentaton
join(separator, list): , .
join(".",list("www","google","com"))
# www.google.com
lower(string): .
lower("CLOUDAFFAIRE")
# cloudaffaire
upper(string): .
upper("cloudaffaire")
# CLOUDAFFAIRE
replace(string, substring, replacement): ,
.
replace("www.google.com","google","cloudaffaire")
# www.cloudaffaire.com
split(separator, string): , .
split(".","www.google.com")
# ["www","google","com"]
strrev(string): . , Unicode.
strrev("google")
#: elgoog
( terraform 0.12 )
substr(string, offset, length): .
substr("www.google.com",4,6)
# google
title(string): .
title("welcome to cloudaffaire")
# Welcome To Cloudaffaire
trimspace(string): .
trimspace(" hello, all ")
# "hello, all
"
chunklist(list, chunk_size): , .
chunklist(list("a","b","c","d","e","f"),3)
# [["a","b","c"],["d","e","f"]]
coalesce(strings\numbers): , .
coalesce("",1,"a")
# 1
coalescelist(list1, list2,โฆ listn): .
coalescelist(list(),list("a","b","c"),list("d","e"))
# ["a","b","c",]
compact(list(string)): .
compact(list("a","","c","","d"))
# ["a","c","d"]
concat(list1, list2,โฆ listn): .
concat(list("a","b"),list("c","d"),list("e","f"))
# ["a","b","c","d","e","f"]
contains(list, value): , .
contains(list("a","b","c"),"a")
# true
contains(list("a","b","c"),"d")
# false
distinct(list): .
distinct(list("a","b","b","c"))
# ["a","b","c",]
element(list, index): .
element(list("a","b","c"),2)
# c #index start from 0
index(list, value): .
index(list("a","b","c"),"b")
# 1
flatten(list(list1,list2,..,listn)): , .
flatten(list(list("a","b"),list("c"),list(),list("d","e")))
# ["a","b","c","d","e",]
keys(map): , .
keys(map("name","debjeet","sex","male"))
# ["name","sex",]
length(list\map\string): , .
length(list("a","b"))
# 2
length("debjeet")
# 7
length(map("name","debjeet","sex","male"))
# 2
list(): , .
list("a","b","c")
# ["a","b","c",]
lookup(map, key, default): , . , .
lookup(map("name","debjeet","sex","male"),"sex","not found!")
# male
lookup(map("name","debjeet","","male"),"gender","not found!")
# not found!
map("key1","value1","key2","value2",...,"keyn","valuen"): ,
.
map("name","debjeet","sex","male")
# {"name" = "debjeet" "sex" = "male"}
matchkeys(valueslist, keyslist, searchset): , ,
.
matchkeys(list("a","b","c"),list("one","two","three"),list("two"))
# b
matchkeys(list("a","b","c"),list("one","two","three"),list("one"))
# a
matchkeys(list("a","b","c"),list("one","two","three"),list("three"))
# c
merge(map1,map2,..,mapn):
.
merge(map("a","one"),map("b","two"),map("c","three"))
# {"a" = "one" "b" = "two" "c" = "three"}
reverse(list): .
, , .
reverse(list("a","b","c"))
#: ["c","b","a",]
( terraform 0.12 )
setintersection(sets...): , , .
setintersection(list("a","b"),list("b","c"),list("b","d"))
# ["b",]
( terraform 0.12 )
setproduct(sets...): , .
setproduct(list("a","b"),list("c","d"))
# [["a","c"],["a","d"],["b","c"],["b","d"],]
( terraform 0.12 )
setunion(sets...): , .
, .
setunion(list("a","b"),list("c","d"))
# ["a","b","c","d",]
( terraform 0.12 )
slice(list, startindex, endindex):
slice(list("zero","one","two","three"),1,3)
# ["one","two"]
sort(list): , .
sort(list("d","c","a","b"))
# ["a","b","c","d",]
transpose(): , .
transpose(map("a",list("one","two"),"b",list("three","four")))
# {"four"=["b",] "one"=["a",] "three"=["b",] "two"=["a",]}
values(map): , .
values(map("name","debjeet","sex","male"))
# ["debjeet","male",]
zipmap(keyslist, valueslist): .
zipmap(list("name","sex"),list("debjeet","male"))
# {"name" = "debjeet" "sex" = "male"}
base64encode(string): Base64 .
base64encode("cloudaffaire")
# Y2xvdWRhZmZhaXJl
base64gzip(string): gzip, Base64.
base64gzip("cloudaffaire")
# H4sIAAAAAAAA/0rOyS9NSUxLS8wsSgUAAAD//wEAAP//38z9sQwAAAA=
base64decode(string): , Base64, .
base64decode("Y2xvdWRhZmZhaXJl")
# cloudaffaire
csvdecode(string): , CSV, , .
csvdecode("a,b,c\n1,2,3\n")
# [{"a"="1" "b"="2" "c"="3"},]
( terraform 0.12 )
jsonencode(): , JSON.
jsonencode(map("name","debjeet"))
# {"name":"debjeet"}
jsondecode(): JSON, .
jsondecode("{\"name\":\"debjeet\"}")
# {"name" = "debjeet"} ( terraform 0.12 )
urlencode(): URL .
urlencode("https://cloudaffaire.com/?s=terraform")
# https%3A%2F%2Fcloudaffaire.com%2F%3Fs%3Dterraform
dirname(string): , , .
dirname("/home/ec2-user/terraform/main.tf")
# /home/ec2-user/terraform
pathexpand(): , ~,
, .
pathexpand("~/.ssh/id_rsa")
# /home/ec2-user/.ssh/id_rsa
basename(string): , , , .
basename("/home/ec2-user/terraform/main.tf")
# main.tf
file(path):
file("/home/ec2-user/terraform/main.tf")
# content of main.tf
fileexists(path): , .
fileexists("/home/ec2-user/terraform/main.tf")
# true if main.tf exist
( terraform 0.12 )
filebase64(path): base64.
filebase64("/home/ec2-user/terraform/main.tf")
# main.tf base64. ( terraform 0.12 )
templatefile(path, vars): , .
formatdate(spec, timestamp): .
formatdate("MMM DD, YYYY", "2018-01-02T23:12:01Z")
# Jan 02, 2018
( terraform 0.12 ). https://www.terraform.io/docs/configuration/functions/formatdate.html
timeadd(timestamp, duration): , .
โ , , ยซ1,5 ยป ยซ1 30 ยป.
: "ns", "us" (or "ยตs"), "ms", "s", "m", and "h".
, , "-2h5m".
timeadd("2019-05-10T00:00:00Z", "10m")
# 2019-05-10T00:10:00Z
timestamp():
timestamp()
IP
cidrhost(prefix, hostnum): IP- IP- .
cidrhost("10.0.0.0/16", 4)
# 10.0.0.4
cidrhost("10.0.0.0/16", -4)`` #
10.0.255.252`
cidrnetmask(prefix): IPv4-, CIDR, .
cidrnetmask("10.0.0.0/16")
# 255.255.0.0
cidrnetmask("10.0.0.0/24")
# 255.255.255.0
cidrsubnet(prefix, newbits, netnum): cidrsubnet IP- .
CIDR
newbits
โ , .
netnum
โ , , newbits
cidrsubnet("10.0.0.0/16",8,2)
# 10.0.2.0/24
cidrsubnet("10.0.0.0/24",8,1)
# 10.0.0.1/32
Keluar dari konsol terraform
exit
Untuk daftar lengkap fungsi terraform, lihat dokumentasi terraform di bawah ini.