Skip to content

Использование переменных

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

Благодаря переменным вы можете:

  • настраивать ресурсы без изменения кода;
  • настраивать разные окружения с индивидуальными параметрами (например, одни параметры для тестовой среды, другие — для продуктивной);
  • безопасно хранить секреты.

Объявление переменных

Переменные в Terraform можно объявлять:

  • в файле main.tf в блоке variables (см. пример для быстрого старта) — такой способ подходит для небольших тестовых проектов;
  • в отдельном файле с переменными — предпочтительный способ для крупных проектов.

При объявлении переменной указываются:

  • имя;
  • краткое описание;
  • (опционально) значение по умолчанию.
Пример объявления переменных
hcl
variable "vm_name" {
  type        = string
  description = "Virtual machine name"
}

variable "network_name" {
  type        = string
  description = "Network name"
}

variable "subnet_name" {
  type        = string
  description = "Subnet name"
}

variable "allowed_ports" {
  type        = list(number)
  description = "List of allowed ports"
  default     = [80, 443, 22]
}

Присвоение значений переменным

Синтаксис при обращении к переменным

В описании ресурсов для обращения к переменным используйте синтаксис var.<имя переменной>, например:

hcl
resource "mws_vpc_network" "network" {
  network = var.network_name
}

resource "mws_vpc_subnet" "subnet" {
  subnet  = var.subnet_name
  network = mws_vpc_network.network.network
  cidr    = "192.168.0.0/16"
}

resource "mws_vpc_address" "vm_primary_network_interface_address" {
  network = mws_vpc_network.network.network
  subnet  = mws_vpc_subnet.subnet.metadata.id
  address = "${var.vm_name}-primary-network-interface-address"
}