terraform - 如何为 EC2、安全组和 ebs 卷进行 for_each 和 for 循环?
问题描述
我是 Terraform 的新手,想知道我是否有办法做到这一点。我想用它自己的安全组创建多个 EC2 实例,并附加不同大小和类型的卷。
module "ec2_sg" {
source = "../../modules/sgs"
for_each = var.ec2_info
name = each.value.name
description = "Security group for ${each.value.name}"
vpc_id = each.value.vpc
ingress_cidr_blocks = each.value.ingress_cidr_blocks
ingress_rules = each.value.ingress_rules
egress_cidr_blocks = each.value.egress_cidr_blocks
egress_rules = each.value.egress_rules
}
module "ec2_instance" {
source = "../../modules/ec2"
for_each = var.ec2_info
name = each.value.name
ami = var.AMIS.linux_ami
instance_type = each.value.ec2_instance_type
vpc_security_group_ids = module.ec2_sg.security_group_id[each.key]
}
resource "aws_ebs_volume" "volume_disk" {
for_each = var.ec2_info
type = each.value.type
iops = each.value.iops
availability_zone = each.value.availability_zone
size = each.value.size
}
resource "aws_volume_attachment" "volume_disk" {
for_each = var.ec2_info
device_name = each.value.device_name
volume_id = aws_ebs_volume.data1[each.key].id
instance_id = module.ec2_instance.id[each.key]
}
这是我迄今为止尝试过的,但我无法让音量部分正常工作。ec2_info 包含有关我要创建的 2 个不同 EC2 实例的信息。我应该做什么样的数据操作来实现这一点?您认为对磁盘使用单独的变量可以实现这一点吗?就像是:
resource "aws_ebs_volume" "volume_disk" {
for_each = var.disks_info
type = each.value.type
iops = each.value.iops
availability_zone = each.value.availability_zone
size = each.value.size
}
resource "aws_volume_attachment" "volume_disk" {
for_each = var.disks_info
device_name = each.value.device_name
volume_id = aws_ebs_volume.data1[each.key].id
instance_id = module.ec2_instance.id[each.key]
}
但如果我这样做呢?如何确保每个磁盘都连接到预期的 EC2 实例?谢谢你。
解决方案
您可以尝试使用“count”参数。
https://www.terraform.io/docs/language/meta-arguments/count.html
推荐阅读
- r - 减少/删除 R 可反应表中 htmlwidget ggplotly 对象的填充
- swiftui - 将数组传递给另一个视图 SwiftUI
- flutter - 错误:不能在“FormState”上调用方法“保存”?因为它可能为空
- java - 方法不能被超类替换
- r - 自变量在回归摘要中出现两次?
- extentreports - ExtentReport.core 包安装失败,Visual Studio C# 项目
- kotlin - Kotlin 中的连续子数组求和
- reactjs - 无法弄清楚为什么 useState 挂钩没有正确更新
- python - pythonic 写入文本文件的方法,替换 Windows 的这个 bash 命令
- html - 响应式图像,多图像/格式延迟加载的图片元素