Русский
Русский
English
Статистика
Реклама

Перевод Знакомство с типичными примерами использования встроенных функций Terraform

Небольшая инструкция по использованию Terraform, чтобы изучить и применить различные типы встроенных функций, в том числе Numeric, String, и Date, и Time в этом инструменте IaC.


ИТ-команды могут использовать Terraform от HashiCorp для развертывания облачных и локальных ресурсов и управления ими. Чтобы оптимизировать использование инструмента, изучите и установите функции Terraform.


Администраторы могут использовать встроенные функции Terraform для выполнения различных математических вычислений, связанных с развертыванием, и для выполнения операций, таких как кодирование и декодирование или захват и отображение временных меток. Язык Terraform поддерживает только встроенные в него функции; специальные или определяемые пользователем функции недоступны.


Используйте это руководство по Terraform, чтобы изучить основы функций, а также некоторые общие способы их использования в корпоративных развертываниях.


Начнем с синтаксиса
Синтакс функции Terraform начинается с имени функции, за которым следуют круглые скобки, содержащие от нуля до нескольких аргументов, разделенных запятыми:


name(arg-1, arg-2,  arg-n)

Например, чтобы получить отметку времени, используйте функцию timestamp(), чтобы увидеть текущую дату и время:


> timestamp()2019-12-07T07:44:12Z

Чтобы прочитать содержимое из файла по заданному пути и вернуть это содержимое в виде строки, используйте функцию file() и укажите путь к файлу в качестве аргумента:



Поддержка интерполяции для функций Terraform


Язык конфигурации Terraform поддерживает интерполяцию, которая позволяет администраторам передавать функции в виде строки для выполнения различных операций. Эти интерполяции заключены в специальный синтаксис $ {builtinfunction ()}, как показано в следующем примере:


resource "myinstance" "web" {    tags = ["${var.env == "prod" ? var.prod_subnet : var.dev_subnet}"]}

Используйте консоль Terraform, чтобы наблюдать за интерполяцией и различными функциями в действии. Чтобы применить файл конфигурации в Terraform, используйте вышеупомянутый синтаксис интерполяции для ссылки на переменные и ресурсы и для вызова некоторых встроенных функций.


Давайте посмотрим на пример. В этом руководстве по Terraform у нас есть переменные с именем environment и мы сопоставляем различные среды, такие как тестирование и production, с зонами доступности AWS (AZs). Используйте другую переменную с именем availzone, чтобы сопоставить эти зоны с зонами доступности, например, us-east-1a, us-east-1b и us-east-1c. Это значения, разделенные запятыми, как вы можете видеть ниже:


variable "environment" {default = {    "test" = "us-east-1"    "prod" = "us-west-2"  }}variable "availzone" {  description = "Availability Zones Mapping"  default = {    "us-east-1" = "us-east-1a,us-east-1b,us-east-1c"    "us-west-2" = "us-west-2a,us-west-2b,us-east-1c"  }}

Чтобы захватить одну AZ, сначала используйте функцию lookup(), чтобы получить список значений, разделенных запятыми, а затем разделите его запятой (,) и функцией split().


Наконец, используйте функцию element() для захвата определенного индекса выбора. Это вернет AZ в виде строки. Поместите все эти функции внутри $ {}, как показано ниже, чтобы язык конфигурации Terraform понимал, что эти функции должны быть интерполированы перед развертыванием.


output "availabiltyzones" {  value = "${element(split(",", lookup(var.availzone,var.environment.prod)), 1)}"}

Взятые вместе, вышеуказанные шаги будут выглядеть следующим образом:



Список встроенных функций Terraform


Функции Terraform можно разделить на одну из следующих категорий в зависимости от сценария использования.


Числовые функции


Эти функции выполняют числовые операции, такие как вычисление максимума, минимума, степени / экспоненты и логарифма, как показано в следующем примере:



Строковые функции


Язык Terraform также предоставляет встроенные функции для управления строками. Например, функции title(), lower() и upper() изменяют регистр входных строк:



ИТ-специалисты также могут разделить строку, объединить две или более строк и заменить одну подстроку другой:



Функции даты и времени


Функции даты и времени полезны для захвата и отображения отметок времени при применении конфигурации Terraform. Как мы видели в предыдущем примере, встроенная функция timestamp() возвращает дату и время:



Используйте встроенную функцию formatdate(), чтобы расположить дату и время в более удобном формате:



Функции кодирования


Terraform имеет несколько встроенных функций, которые выполняют кодирование и декодирование строки. Например, функция base64encode('string') возвращает строку в кодировке Base64, которая полезна для развертывания ресурсов Azure, которые принимают настраиваемые сценарии в кодировке Base64 для настройки виртуальных машин. В приведенном ниже примере функция file() возвращает содержимое сценария в виде обычного текста, который затем кодируется функцией Base64encode() и передается в атрибут сценария ресурса:


resource "azurerm_virtual_machine_extension" "Example" {  name                 = "MyVM"  location             = "${azurerm_resource_group.test.location}"  resource_group_name  = "${azurerm_resource_group.test.name}"  virtual_machine_name = "${azurerm_virtual_machine.test.name}"  publisher            = "Microsoft.Azure.Extensions"  type                 = "CustomScript"  type_handler_version = "2.0"  settings = <

Функции Сбора (Collections)


Некоторые встроенные функции Terraform выполняют несколько операций, таких как определение длины списка или строки, над коллекциями значений:


length([1,12,31,14,5,2])length("this is a string")

Вы также можете ограничить возврат, чтобы найти только отдельные элементы в списке, или выполнить поиск в списке для определенного элемента:


Источник: habr.com
К списку статей
Опубликовано: 18.01.2021 10:10:41
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Devops

Terraform

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru