टेराफॉर्म - लूप्स
क्या यह संसाधन बनाने वाला लूप बनाना संभव है? समान संसाधनों का बहुत दोहराव है। मैंने एक लूप बनाने के लिए नक्शे का उपयोग करने की कोशिश की, लेकिन मानचित्र किसी अन्य डिफ़ॉल्ट ब्लॉक को स्वीकार नहीं करता है।
या सभी 4 संसाधनों को मैन्युअल रूप से बनाना सामान्य है? उत्तर के रूप में बस कुछ सुझाव पर्याप्त हैं, मैं इसे स्वयं सीखने की कोशिश कर रहा हूं।
resource "aws_subnet" "public-test-a" {
vpc_id = aws_vpc.vpc-test-02.id
cidr_block = "10.0.0.16/28"
map_public_ip_on_launch = true
availability_zone = var.AZ[1]
tags = {
Name = var.subnets_names[index]
}
}
resource "aws_subnet" "public-test-b" {
vpc_id = aws_vpc.vpc-test-02.id
cidr_block = "10.0.0.16/28"
map_public_ip_on_launch = true
availability_zone = var.AZ[1]
tags = {
Name = "public-test-b"
}
}
resource "aws_subnet" "private-test-a" {
vpc_id = aws_vpc.vpc-test-02.id
cidr_block = "10.0.0.32/28"
availability_zone = var.AZ[0]
tags = {
Name = "private-test-a"
}
}
resource "aws_subnet" "private-test-b" {
vpc_id = aws_vpc.vpc-test-02.id
cidr_block = "10.0.0.48/28"
availability_zone = var.AZ[1]
tags = {
Name = "private-test-b"
}
}
मैं कुछ इस तरह की कोशिश कर रहा था, लेकिन यह मान्य नहीं लगता है।
इसके अलावा, हम aws_vpc.vpc-test-02.idदूसरे tf के भाग के बाद से चर के अंदर उपयोग नहीं कर सकते हैं ।
variable "subnets" {
type = map
default = {
vpc_id = aws_vpc.vpc-test-02.id
}
public-test-a = {
map_public_ip_on_launch = true
availability_zone = var.AZ[0]
}
public-test-b = {
map_public_ip_on_launch = true
availability_zone = var.AZ[1]
}
private-test-a = {
availability_zone = var.AZ[0]
}
private-test-b = {
availability_zone = var.AZ[1]
}
}
variable "AZ" {
type = list
default = ["ap-south-1a", "ap-south-1b", "ap-south-1c"]
}
variable "subnets_cird" {
type = list
default = ["10.0.0.0/28", "10.0.0.16/26", "10.0.0.32/28", "10.0.0.48/28"]
}
variable "subnets_names" {
type = list
default = ["public-test-a", "public-test-b", "private-test-a", "private-test-b"]
}
जवाब
इस खोज के लिए और टेराफ़ॉर्म प्रलेखन में for_each की गणना करें। यहाँ एक उदाहरण है, आप सार्वजनिक-परीक्षण-ए और सार्वजनिक-परीक्षण-बी को एक सार्वजनिक-परीक्षण के साथ कैसे बदल सकते हैं:
variable "number_of_subnets" {
default = 2
}
resource "aws_subnet" "public-test" {
count = var.number_of_subnets
vpc_id = aws_vpc.vpc-test-02.id
cidr_block = "10.0.0.16/28"
map_public_ip_on_launch = true
availability_zone = var.AZ[1]
tags = {
# here you pick the right name according to the subnet index, where e.g subnets_names = ["public-test-a","public-test-b"]
Name = var.subnets_names[count.index]
}
}
वही प्राइवेट_टेस्ट के लिए किया जा सकता है।
आपके द्वारा आजमाई गई चीजों के बारे में। चर को एक और चर नहीं सौंपा जा सकता है। इस कार्यक्षमता को प्राप्त करने के लिए स्थानीय लोगों का उपयोग करें:
locals {
x = aws_vpc.vpc-test-02.id
}
और फिर जैसे मान को एक्सेस करें
local.x