Provider 参考
required_providers 块
terraform {
required_version = ">= 1.6.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
google = {
source = "hashicorp/google"
version = ">= 5.0, < 6.0"
}
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.80"
}
}
}
AWS Provider 配置
provider "aws" {
region = "us-east-1"
profile = "production"
# 跨账号扮演角色
assume_role {
role_arn = "arn:aws:iam::123456789012:role/TerraformRole"
session_name = "terraform-session"
}
default_tags {
tags = {
ManagedBy = "terraform"
Environment = var.environment
}
}
}
# 多区域 provider 别名
provider "aws" {
alias = "us_west"
region = "us-west-2"
}
resource "aws_s3_bucket" "west" {
provider = aws.us_west
bucket = "my-west-bucket"
}
GCP Provider 配置
provider "google" {
project = var.gcp_project_id
region = "us-central1"
}
provider "google-beta" {
project = var.gcp_project_id
region = "us-central1"
}
# 使用 beta provider 的特定资源
resource "google_container_cluster" "primary" {
provider = google-beta
name = "my-cluster"
location = "us-central1"
}
Azure Provider 配置
provider "azurerm" {
features {
key_vault {
purge_soft_delete_on_destroy = true
}
resource_group {
prevent_deletion_if_contains_resources = true
}
}
subscription_id = var.azure_subscription_id
tenant_id = var.azure_tenant_id
}
版本约束语法
| 约束 | 含义 | 示例 |
|---|---|---|
= 5.0.0 | 精确版本 | 仅 5.0.0 |
>= 5.0 | 最低版本 | 5.0 及以上 |
~> 5.0 | 仅补丁更新 | 5.0.x(不含 5.1) |
>= 5.0, < 6.0 | 版本范围 | 任意 5.x |