Terraform for_中的条件语句围绕弹性IP循环
我有以下代码,我希望有一个条件,只有当实例是公共子网的一部分时(或者如果需要,基于布尔值),才会创建弹性IP。这是我目前使用的代码,但我不希望它为私有子网上的资源创建弹性IP:Terraform for_中的条件语句围绕弹性IP循环,terraform,Terraform,我有以下代码,我希望有一个条件,只有当实例是公共子网的一部分时(或者如果需要,基于布尔值),才会创建弹性IP。这是我目前使用的代码,但我不希望它为私有子网上的资源创建弹性IP: locals { instances_beta = { my-ec2 = { name = "myec2", ami = "ami-029e27fb2fc8ce9d8", instancety
locals {
instances_beta = {
my-ec2 = {
name = "myec2",
ami = "ami-029e27fb2fc8ce9d8",
instancetype = "t3.xlarge"
environment = "Beta",
securitygroups = [var.mysg],
subnetid = var.public-a,
elasticip = true
}
}
}
resource "aws_instance" "beta-instance" {
for_each = local.instances_beta
ami = each.value.ami
instance_type = each.value.instancetype
subnet_id = each.value.subnetid
key_name = "mykey"
vpc_security_group_ids = each.value.securitygroups
tags = {
Name = each.value.name
Environment = each.value.environment
}
}
resource "aws_eip" "beta-eip" {
for_each = local.instances_beta
instance = aws_instance.beta-instance[each.key].id
vpc = true
}
听起来计数是做类似事情的最好方法,但我不能这样做,因为我已经在使用for_each来实现资源创建。我试图用嵌套for循环来实现这一点,但我不太清楚如何获得正确的语法,或者这是否是最好的方法。作为参考,我在上面找到的最好的资源就是这里的每个条件:您可以使用
For
循环来创建过滤映射,例如:
for_each = {
for key, value in local.instances_beta: key => value if value.subnetid == var.public-a
}
它将过滤local.instances_beta
,并在subnetid
等于var.public-a
的位置保留项目。您可以根据需要调整条件
.您可以使用
for
循环来创建过滤映射,例如:
for_each = {
for key, value in local.instances_beta: key => value if value.subnetid == var.public-a
}
它将过滤local.instances_beta
,并在subnetid
等于var.public-a
的位置保留项目。您可以根据需要调整条件