[Системное администрирование, Системное программирование, DevOps] Функции Terraform (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В этом посте мы обсудим функции Terraform. Язык Terraform включает ряд встроенных функций, которые можно вызывать из выражений для преобразования и комбинирования значений. Общий синтаксис для вызовов функций — это имя функции, за которым следуют аргументы, разделенные запятыми, в круглых скобках.
<function_name>(<argument1>, <argument2>, …<argumentN>)
Далее мы собираемся объяснить функции Terraform на примерах. Мы будем использовать консоль terraform для этой демонстрации.
Функции Terraform:
Откройте terraform console
terraform console
Числовые функции
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
Выйти из консоли терраформа
exit
Полный список функций terraform смотрите ниже в документации terraform.
===========
Источник:
habr.com
===========
===========
Автор оригинала: Debjeet
===========Похожие новости:
- [Настройка Linux, DevOps] Что нового добавилось в Terraform v0.13
- [IT-инфраструктура, DevOps] Неужели нельзя обойтись без кафок и рэббитов, когда принимаешь 10 000 ивентов в секунду
- [Git, Управление продуктом, Конференции, DevOps] Acceleration Community Meetup 28/01
- [DevOps] Стать инженером DevOps в 2021 году: подробное руководство (перевод)
- [Системное администрирование, Системное программирование, DevOps] Режим высокой доступности HashiCorp Vault (HA) (перевод)
- [Системное администрирование, Программирование, IT-инфраструктура, DevOps] Тонкости настройки CI/CD: как работает GitLab runner, когда использовать Docker-in-Docker и где пригодится Argo CD
- [Apache, Big Data, DevOps, Kubernetes] Вебинар «Разворачиваем приложение на Spark в Kubernetes» 4 февраля от Mail.ru Group
- [Высокая производительность, Хранилища данных, DevOps, Data Engineering] Business Intelligence на больших данных — наш опыт интеграции
- [Анализ и проектирование систем, ERP-системы, Управление разработкой, DevOps] Как сделать хорошую интеграцию? Часть 2. Идемпотентные операции – основа устойчивой интеграции
- [Системное администрирование] Таков путь! Эволюция бэкапов в Timeweb: от rsync до ZFS
Теги для поиска: #_sistemnoe_administrirovanie (Системное администрирование), #_sistemnoe_programmirovanie (Системное программирование), #_devops, #_terraform, #_sistemnoe_administrirovanie (
Системное администрирование
), #_sistemnoe_programmirovanie (
Системное программирование
), #_devops
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 10:53
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В этом посте мы обсудим функции Terraform. Язык Terraform включает ряд встроенных функций, которые можно вызывать из выражений для преобразования и комбинирования значений. Общий синтаксис для вызовов функций — это имя функции, за которым следуют аргументы, разделенные запятыми, в круглых скобках. <function_name>(<argument1>, <argument2>, …<argumentN>)
Далее мы собираемся объяснить функции Terraform на примерах. Мы будем использовать консоль terraform для этой демонстрации. Функции Terraform: Откройте terraform console terraform console Числовые функции 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 Выйти из консоли терраформа exit Полный список функций terraform смотрите ниже в документации terraform. =========== Источник: habr.com =========== =========== Автор оригинала: Debjeet ===========Похожие новости:
Системное администрирование ), #_sistemnoe_programmirovanie ( Системное программирование ), #_devops |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 10:53
Часовой пояс: UTC + 5