Terraform 中的变量:我的学习

发布: (2025年12月28日 GMT+8 19:41)
3 分钟阅读
原文: Dev.to

Source: Dev.to

介绍

Terraform 变量允许你存储可以在整个配置中重复使用的值。它们分为两类:

  • 输入变量 – 你提供给配置的值。
  • 输出变量terraform apply 之后产生的值。

输入变量

输入变量让你对配置进行参数化(例如实例类型、区域、实例数量)。

variable "example" {
  type        = string   # optional
  default     = "value"  # optional
  description = "A description of the variable"
}

输出变量

输出变量在运行后暴露信息,例如 EC2 实例的公网 IP。

output "example" {
  value       = aws_instance.example.public_ip
  description = "The public IP of the instance"
}

Terraform 中的数据类型

Terraform 支持 原始复合 数据类型。

原始数据类型

类型描述
string任意文本,例如 "us-east-1"
number整数或浮点数,例如 2
bool布尔值 truefalse

复合数据类型

List(列表)

有序的同类型值集合。

variable "regions" {
  type    = list(string)
  default = ["ap-south-1", "us-east-1", "us-west-1"]
}

Set(集合)

无序的 唯一 同类型值集合。

variable "unique_regions" {
  type    = set(string)
  default = ["ap-south-1", "us-east-1", "us-west-1"]
}

Map(映射)

键值对,键为字符串,值共享同一种类型。

variable "tags" {
  type = map(string)
  default = {
    name        = "ec2_instance"
    description = "ec2 instance for running the backend"
    env         = "prod"
  }
}

Tuple(元组)

有序且长度固定的集合,可以包含不同类型的值。元组是不可变的。

variable "network_addresses" {
  type    = tuple([string, string])
  default = ["192.168.1.2", "192.168.1.1"]
}

Object(对象)

结构化类型,具有命名属性,每个属性可以有不同的类型。

variable "user" {
  type = object({
    name  = string
    age   = number
    email = string
  })
  default = {
    name  = "Rohan"
    age   = 20
    email = "rohan@gmail.com"
  }
}

结论

Terraform 变量通过避免硬编码字面量并实现跨模块和资源的值复用,使配置更加简洁易维护。

Back to Blog

相关文章

阅读更多 »