【发布时间】:2020-12-19 19:58:58
【问题描述】:
我有以下代码,我希望有一个条件,仅当实例是公共子网的一部分时才会创建弹性 IP(或在需要时基于布尔值)。这是我目前拥有的代码,但我希望它不会为私有子网上的资源创建弹性 IP:
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
}
听起来 count 是做类似事情的最佳方式,但我不能这样做,因为我已经在使用 for_each 来实现资源创建。我试图用嵌套的 for 循环来做到这一点,但我无法完全弄清楚如何让语法正确,或者这是否是最好的方法。作为参考,我在上面找到的最佳资源是 for_each 条件:https://blog.gruntwork.io/terraform-tips-tricks-loops-if-statements-and-gotchas-f739bbae55f9
【问题讨论】:
标签: terraform