65 lines
1.3 KiB
Terraform
65 lines
1.3 KiB
Terraform
locals {
|
|
company = "ENI"
|
|
trigram = lower(var.trigram)
|
|
}
|
|
|
|
module "network" {
|
|
source = "./modules/network"
|
|
|
|
vpc_name = "${local.trigram}-main-vpc"
|
|
vpc_cidr_block = "10.1.0.0/16"
|
|
common_tags = var.common_tags
|
|
subnets = var.subnets
|
|
}
|
|
|
|
data "aws_ami" "ami" {
|
|
for_each = var.images
|
|
|
|
most_recent = true
|
|
|
|
filter {
|
|
name = "name"
|
|
values = [each.value.name_filter]
|
|
}
|
|
|
|
filter {
|
|
name = "virtualization-type"
|
|
values = ["hvm"]
|
|
}
|
|
|
|
owners = [each.value.owner]
|
|
}
|
|
|
|
resource "aws_network_interface" "example" {
|
|
for_each = var.instances
|
|
|
|
subnet_id = module.network.subnets_full[each.value.subnet].id
|
|
}
|
|
|
|
resource "aws_ebs_volume" "vol" {
|
|
for_each = var.instances
|
|
|
|
size = 10
|
|
availability_zone = aws_instance.instance[each.key].availability_zone
|
|
}
|
|
|
|
resource "aws_instance" "instance" {
|
|
for_each = var.instances
|
|
|
|
ami = data.aws_ami.ami[each.value.image].id
|
|
instance_type = each.value.instance_type
|
|
availability_zone = module.network.subnets_full[each.value.subnet].availability_zone
|
|
|
|
|
|
tags = merge(var.common_tags, {
|
|
Name = "${local.trigram}-${each.key}"
|
|
})
|
|
}
|
|
|
|
resource "aws_volume_attachment" "ebs_att" {
|
|
for_each = var.instances
|
|
|
|
device_name = "/dev/sdh"
|
|
volume_id = aws_ebs_volume.vol[each.key].id
|
|
instance_id = aws_instance.instance[each.key].id
|
|
} |