Terraform — это инструмент «инфраструктура как код» (IaC) с открытым исходным кодом, который позволяет определять и предоставлять ресурсы инфраструктуры различным поставщикам облачных услуг. Одной из ключевых особенностей Terraform является поддержка переменных, которые позволяют параметризовать конфигурации вашей инфраструктуры и делать их более гибкими и пригодными для повторного использования. В этой статье мы рассмотрим различные типы переменных, доступных в Terraform, и приведем примеры кода, иллюстрирующие их использование.
- Строковые переменные:
Строковые переменные используются для хранения текстовых значений и управления ими. Они определяются с использованием типаstring, и им можно присвоить значения по умолчанию или оставить их необязательными. Вот пример:
variable "region" {
type = string
default = "us-west-2"
}
- Числовые переменные:
Числовые переменные используются для хранения числовых значений. Их можно определить с использованием типаnumberи назначить значения по умолчанию или оставить необязательными. Вот пример:
variable "instance_count" {
type = number
default = 2
}
- Логические переменные.
Логические переменные используются для хранения значенийtrueилиfalse. Они определяются с использованием типаbool, и им можно присвоить значения по умолчанию или оставить их необязательными. Вот пример:
variable "enable_logging" {
type = bool
default = true
}
- Переменные списка:
Переменные списка используются для хранения последовательности значений. Они определяются с использованием типаlistи могут содержать элементы смешанных типов. Вот пример:
variable "subnets" {
type = list(string)
default = ["subnet-abc123", "subnet-def456"]
}
- Переменные карты.
Переменные карты используются для хранения пар ключ-значение. Они определяются с использованием типаmapи могут содержать элементы смешанных типов. Вот пример:
variable "tags" {
type = map(string)
default = {
"environment" = "production"
"owner" = "John Doe"
}
}
- Объектные переменные.
Объектные переменные используются для хранения сложных структур данных. Они определяются с использованием типаobjectи могут содержать вложенные атрибуты. Вот пример:
variable "instance" {
type = object({
name = string
size = string
subnet = string
security = list(string)
})
default = {
name = "web-server"
size = "t2.micro"
subnet = "subnet-abc123"
security = ["sg-12345678"]
}
}
В этой статье мы рассмотрели различные типы переменных, доступных в Terraform, включая строковые, числовые, логические, списки, карты и объектные переменные. Понимание этих типов переменных имеет решающее значение для создания гибких и повторно используемых конфигураций инфраструктуры. Используя возможности переменных Terraform, вы можете параметризовать код инфраструктуры и легко адаптировать его к различным средам и сценариям.