[英]Terraform lookup AWS region
我的 main.tf 文件中有以下代碼:
provider "aws" {
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
region = "us-east-1"
alias = "us-east-1"
}
provider "aws" {
access_key = "${var.aws_access_key}"
secret_key = "${var.aws_secret_key}"
region = "us-west-1"
alias = "us-west-1"
}
module "us-east_vpc" {
source = "./setup-networking"
providers = {
"aws.region" = "aws.us-east-1"
}
}
module "us-west_vpc" {
source = "./setup-networking"
providers = {
"aws.region" = "aws.us-west-1"
}
}
然后在我的模塊文件中,我有:
provider "aws" {
alias = "region"
}
resource "aws_vpc" "default" {
provider = "aws.region"
cidr_block = "${lookup(var.vpc_cidr, ${aws.region.region})}"
enable_dns_hostnames = true
tags {
Name = "AWS VPC"
}
}
resource "aws_internet_gateway" "default" {
provider = "aws.region"
vpc_id = "${aws_vpc.default.id}"
}
resource "aws_subnet" "default" {
provider = "aws.region"
vpc_id = "${aws_vpc.default.id}"
cidr_block = "${lookup(var.subnet_cidr, ${aws.region.region})}"
availability_zone = "aws.region"
tags {
Name = "AWS Subnet"
}
}
resource "aws_route_table" "default" {
provider = "aws.region"
vpc_id = "${aws_vpc.default.id}"
route {
cidr_block = "0.0.0.0/0"
gateway_id = "${aws_internet_gateway.default.id}"
}
tags {
Name = "Main Gateway"
}
}
正如您在模塊文件代碼中看到的那樣,我正在嘗試查找以從映射變量中查找 VPC CIDR 掩碼和子網 CIDR 掩碼。
問題是我似乎無法弄清楚如何將區域用作查找值。
如果我硬編碼這些值:
cidr_block = "10.10.0.0/16"
cidr_block = "10.10.10.0/24"
該腳本按預期工作,但我不想對值進行硬編碼。
有更多 Terraform 經驗的人可以幫助我了解如何正確引用該區域以查找正確的值嗎?
我正在為不同的問題尋找相同的答案。 我想獲取角色名稱的區域,我可以通過執行以下操作獲取信息:
1.- 創建一個類似data.tf
的文件並添加以下信息:
data "aws_region" "current" {}
2.- 通過在任何 TF 文件中調用此變量來從數據中獲取信息:
name = "${var.vpc-name}-${data.aws_region.current.name}-Bastion-Role"
這樣,它將獲取您正在執行代碼的區域,並且您不必弄亂provider.tf
文件。
您可以使用aws_region
數據源獲取提供商當前正在使用的區域。
因此,在您的情況下,您可以執行以下操作:
provider "aws" {
alias = "region"
}
data "aws_region" "current" {
provider = "aws.region"
}
resource "aws_vpc" "default" {
provider = "aws.region"
cidr_block = "${lookup(var.vpc_cidr, ${data.aws_region.current.name})}"
enable_dns_hostnames = true
tags {
Name = "AWS VPC"
}
}
...
provider "aws" {
alias = "region"
}
data "aws_region" "current" {
provider = "aws.region"
}
data "aws_availability_zone" "current" {
provider = "aws.region"
name = "${data.aws_region.current.name}a"
}
resource "aws_vpc" "default" {
provider = "aws.region"
cidr_block = "${lookup(var.vpc_cidr, data.aws_availability_zone.current.name)}"
enable_dns_hostnames = true
tags {
Name = "${data.aws_region.current.name} Security VPC1"
Region = "${data.aws_region.current.name}"
Account = "Security"
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.