Terraform基础
HCL 基础
# terraform.tf — 提供商和后端配置
terraform {
required_version = ">= 1.5.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
backend "s3" {
bucket = "my-terraform-state"
key = "prod/terraform.tfstate"
region = "us-east-1"
}
}
provider "aws" {
region = var.aws_region
}
资源与变量
# variables.tf
variable "aws_region" {
type = string
description = "AWS 区域"
default = "us-east-1"
}
# main.tf
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
enable_dns_hostnames = true
tags = {
Name = "main-vpc"
Environment = var.environment
}
}
resource "aws_subnet" "public" {
count = 2
vpc_id = aws_vpc.main.id
cidr_block = cidrsubnet("10.0.0.0/16", 8, count.index)
availability_zone = data.aws_availability_zones.available.names[count.index]
}
# outputs.tf
output "vpc_id" {
description = "VPC ID"
value = aws_vpc.main.id
}
常用 CLI 命令
# 初始化工作目录
terraform init
# 格式化代码
terraform fmt -recursive
# 验证配置
terraform validate
# 预览变更
terraform plan
terraform plan -out=tfplan
# 应用变更
terraform apply
terraform apply tfplan
terraform apply -auto-approve
# 销毁资源
terraform destroy
terraform destroy -target=aws_instance.web
# 状态管理
terraform state list
terraform state show aws_vpc.main
terraform import aws_s3_bucket.existing my-bucket-name