DevOps Bootcamp · Урок

Встроенные функции Terraform

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

Урок 2 из 411 шагов

«Встроенные функции Terraform» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Откройте возможности динамических конфигураций

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

Они позволяют создавать динамичные, повторно используемые и более интеллектуальные определения инфраструктуры.

  • Преобразование данных: изменение строк, чисел или списков.
  • Вычисление значений: выполнение расчётов или логических проверок.
  • Генерация динамического содержимого: создание имён ресурсов или меток на лету.

Преобразование текста

Функции для работы со строками необходимы для обработки текста. Две базовые функции — upper() и lower(), которые изменяют регистр строки.

Они полезны для стандартизации соглашений об именовании или соответствия определённым требованиям.

variable "region_code" {
  type    = string
  default = "us-east-1"
}

output "upper_region" {
  value = upper(var.region_code)
}

output "lower_example" {
  value = lower("AWS_REGION")
}

Объединение и разделение строк

Функция join() объединяет элементы списка в одну строку, используя указанный разделитель. И наоборот, split() разбивает строку на список подстрок по разделителю.

Эти функции полезны для разбора данных или построения сложных имён.

variable "tags_list" {
  type    = list(string)
  default = ["web", "frontend", "prod"]
}

output "joined_tags" {
  value = join(",", var.tags_list)
}

output "split_string" {
  value = split("-", "server-01-app")
}

Математика в конфигурациях

Числовые функции помогают выполнять базовые математические операции. ceil() округляет вверх, floor() — вниз, а min()/max() находят наименьшее и наибольшее значения в наборе.

Они отлично подходят для вычисления количества ресурсов или определения их размера.

variable "instance_ratio" {
  type    = number
  default = 3.7
}

output "rounded_up_instances" {
  value = ceil(var.instance_ratio)
}

output "rounded_down_instances" {
  value = floor(var.instance_ratio)
}

output "smallest_val" {
  value = min(10, 5, 12, 8)
}

Работа со списками

Списки — это упорядоченные коллекции элементов. Такие функции, как length(), сообщают количество элементов в списке, а element() возвращает элемент по его числовому индексу (начиная с 0).

Это удобно для перебора элементов или выбора конкретных элементов.

variable "zones" {
  type    = list(string)
  default = ["us-east-1a", "us-east-1b", "us-east-1c"]
}

output "num_zones" {
  value = length(var.zones)
}

output "first_zone" {
  value = element(var.zones, 0)
}

Работа с данными «ключ — значение»

Карты хранят данные в виде пар «ключ — значение». Функция lookup() возвращает значение для заданного ключа, а при необходимости — значение по умолчанию, если ключ не найден. Функция merge() объединяет несколько карт в одну.

Это идеально подходит для управления метаданными или метками ресурсов.

variable "server_info" {
  type = map(string)
  default = {
    name = "backend-server"
    env  = "dev"
  }
}

variable "additional_info" {
  type = map(string)
  default = {
    owner = "team-a"
  }
}

output "server_name" {
  value = lookup(var.server_info, "name", "unknown")
}

output "merged_map" {
  value = merge(var.server_info, var.additional_info)
}

Изменение типов данных

Иногда для аргумента ресурса требуется значение определённого типа данных (например, строка вместо числа). Функции преобразования типов, такие как tostring() и tonumber(), помогают это сделать.

Это обеспечивает совместимость между разными частями конфигурации.

variable "port_number" {
  type    = number
  default = 8080
}

output "port_as_string" {
  value = tostring(var.port_number)
}

output "string_to_number" {
  value = tonumber("123") + 7
}

Функции в действии

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

variable "env" {
  type    = string
  default = "dev"
}

variable "service" {
  type    = string
  default = "app"
}

variable "instance_id" {
  type    = number
  default = 1
}

output "resource_name" {
  value = join("-", [
    upper(var.env),
    var.service,
    tostring(var.instance_id)
  ])
}

Рекомендации

При использовании функций стремитесь к ясности и удобству сопровождения:

  • Сохраняйте читаемость: не вкладывайте функции друг в друга слишком глубоко, если из-за этого код становится сложным для понимания.
  • Используйте переменные: сохраняйте сложные промежуточные результаты в локальных переменных, чтобы улучшить читаемость.
  • Проверяйте с помощью terraform console: быстро экспериментируйте с функциями, чтобы увидеть их результат до добавления в конфигурацию.

Задание на функции

Проверим, насколько хорошо Вы поняли совместную работу встроенных функций Terraform.

Функции освоены!

Вы изучили мощные встроенные функции Terraform!

Теперь Вы понимаете, как использовать функции для работы со строками, числами, коллекциями и преобразованием типов, чтобы сделать конфигурации динамичными и адаптируемыми. Эти инструменты необходимы для написания эффективного и повторно используемого кода инфраструктуры.

Можно начать бесплатно

Изучай DevOps Bootcamp с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
142
Уроки
568

Часто задаваемые вопросы

Урок «Встроенные функции Terraform» бесплатный?

Да — полный текст урока «Встроенные функции Terraform» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Встроенные функции Terraform»?

Изучите широкий набор встроенных функций Terraform для обработки строк, списков, преобразования типов и других задач, чтобы расширить возможности конфигураций. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Встроенные функции Terraform»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Циклы с `for_each` и `count`
  2. Встроенные функции Terraform
  3. Условные выражения и splat-выражения
  4. Динамические блоки для вложенной конфигурации
← Назад к DevOps Bootcamp