Изучение Terraform: работа со списком и переменными среды карты

Terraform — это мощный инструмент «Инфраструктура как код» (IaC), который позволяет определять инфраструктуру и управлять ею с помощью декларативных файлов конфигурации. При работе с Terraform переменные среды предоставляют удобный способ передачи значений конфигурации в ваши скрипты Terraform. В этой статье мы рассмотрим, как работать с типами списков и карт в переменных среды Terraform, предоставив вам примеры кода и различные методы для этого.

Метод 1: использование строки, разделенной запятыми.
Один подход заключается в использовании строки, разделенной запятыми, для представления списка или карты в переменной среды. Допустим, у нас есть переменная среды с именем SERVERS, которая представляет список имен серверов. Мы можем определить его следующим образом:

export SERVERS="web-01,web-02,web-03"

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

variable "servers" {
  type    = list(string)
  default = split(",", var.servers)
}

Метод 2. Использование кодировки JSON
Другой метод — использовать кодировку JSON для представления сложных структур данных, таких как списки и карты. Давайте рассмотрим переменную среды под названием CONFIG, которая представляет собой карту значений конфигурации. Мы можем определить это следующим образом:

export CONFIG='{"key1":"value1","key2":"value2","key3":"value3"}'

В Terraform мы можем использовать функцию jsondecode()для преобразования строки в кодировке JSON в карту:

variable "config" {
  type    = map(string)
  default = jsondecode(var.config)
}

Метод 3: использование синтаксиса HCL2
Terraform также поддерживает синтаксис HCL2 для определения переменных непосредственно в файлах конфигурации. Этот синтаксис позволяет определять сложные типы данных, такие как списки и карты, не полагаясь на переменные среды. Вот пример:

variable "servers" {
  type    = list(string)
  default = ["web-01", "web-02", "web-03"]
}
variable "config" {
  type    = map(string)
  default = {
    key1 = "value1"
    key2 = "value2"
    key3 = "value3"
  }
}

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