变量与输出
学习使用输入变量使配置更加灵活且可复用,并使用输出值提取已部署基础设施的重要信息。
变量与输出 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
灵活的配置
Terraform 允许您以代码形式定义基础设施。但是,如果您想在不同环境或设置中复用代码,该怎么办呢?
这时就需要使用变量和输出。它们能让配置更加灵活且易于管理。
输入变量:灵活性
输入变量充当 Terraform 配置的参数。您可以使用它们自定义基础设施的某些方面,而无需修改核心代码。
- 避免直接在配置中写死值。
- 让模块和配置可以重复使用。
- 允许不同环境使用不同的值(例如开发环境和生产环境)。
声明变量
您可以在 .tf 文件中声明输入变量,该文件通常命名为 variables.tf。每个变量都需要一个唯一名称。
下面是一个基本声明:
variable "file_content" {
description = "Content to write to a local file."
type = string
}类型和默认值
变量可以使用不同的类型,例如 string、number、bool、list 或 map。您还可以提供默认值,使变量成为可选项。
variable "environment" {
description = "The deployment environment (e.g., dev, prod)."
type = string
default = "dev"
}
variable "instance_count" {
description = "Number of instances."
type = number
default = 1
}在代码中使用变量
声明变量后,您可以使用 var. 前缀加变量名称来引用变量的值(例如 var.environment)。
这样,资源就能根据提供的输入进行调整。
resource "local_file" "example" {
content = "Hello from ${var.environment}!"
filename = "example-${var.environment}.txt"
}提供值的方法
有多种方式可以为变量提供值:
- 命令行:在
terraform plan或apply中使用-var="key=value"。 .tfvars文件:创建一个类似terraform.tfvars或dev.tfvars的文件。- 环境变量:使用
TF_VAR_name=value。
terraform.tfvars 文件常用于设置值:
# terraform.tfvars
environment = "staging"
file_content = "This is some custom content."输出值:提取信息
正如输入变量允许您将数据传入配置一样,输出值允许您从配置中提取数据。
- 显示有关已部署资源的重要信息(例如 IP 地址、URL)。
- 在不同 Terraform 配置之间传递数据,尤其是在使用模块时。
- 便于查看 Terraform 已预配的内容。
声明输出值
您可以在 .tf 文件中声明输出值,该文件通常命名为 outputs.tf。每个输出值都需要一个唯一名称和一个 value 参数。
output "file_name" {
description = "The name of the generated local file."
value = local_file.example.filename
}查看输出值
运行 terraform apply 后,您可以使用 terraform output 命令查看输出值。
value 参数通常引用资源的某个属性,例如 resource_type.resource_name.attribute。
# After 'terraform apply', run:
terraform output file_name变量与输出值实战
让我们综合运用目前学到的内容。此示例使用变量指定内容和环境,并输出文件名与内容。请在一个目录中创建以下三个文件:
# main.tf
terraform {
required_providers {
local = {
source = "hashicorp/local"
version = "~> 2.1"
}
}
}
resource "local_file" "message" {
content = var.greeting_message
filename = "hello_${var.env}.txt"
}
# variables.tf
variable "greeting_message" {
description = "The message content for the file."
type = string
default = "Hello CoddyKit!"
}
variable "env" {
description = "Environment name."
type = string
default = "dev"
}
# outputs.tf
output "generated_filename" {
description = "The full path of the generated file."
value = local_file.message.filename
}
output "file_content_used" {
description = "The content actually written to the file."
value = local_file.message.content
}快速检查:变量与输出值
以下关于 Terraform 变量和输出值的说法哪些是 TRUE?
回顾:变量与输出值
做得很好!您已经学会了如何让 Terraform 配置变得动态:
- 输入变量允许您为基础设施定义参数。
- 您可以通过 CLI、
.tfvars文件或环境变量提供变量值。 - 输出值帮助您提取并显示已部署资源的重要信息。
接下来,您将深入了解 Terraform 如何通过状态管理跟踪您的基础设施!
常见问题解答
「变量与输出」课时是免费的吗?
是的 — 「变量与输出」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「变量与输出」这节课中我会学到什么?
学习使用输入变量使配置更加灵活且可复用,并使用输出值提取已部署基础设施的重要信息。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「变量与输出」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。