# SPDX-License-Identifier: CC-BY-SA-3.0
terraform {
+ required_version = "~> 1.3.0"
required_providers {
aws = {
source = "hashicorp/aws"
+ version = "~> 4.38.0"
}
}
}
resource "aws_instance" "arvados_service" {
for_each = toset(concat(local.public_hosts, local.private_hosts))
ami = local.instance_ami_id
- instance_type = var.default_instance_type
+ instance_type = try(var.instance_type[each.value], var.instance_type.default)
user_data = templatefile("user_data.sh", {
"hostname": each.value,
"deploy_user": var.deploy_user,
private_ip = local.private_ip[each.value]
subnet_id = contains(local.user_facing_hosts, each.value) ? data.terraform_remote_state.vpc.outputs.public_subnet_id : data.terraform_remote_state.vpc.outputs.private_subnet_id
vpc_security_group_ids = [ data.terraform_remote_state.vpc.outputs.arvados_sg_id ]
- # This should be done in a more readable way
- iam_instance_profile = each.value == "controller" ? aws_iam_instance_profile.dispatcher_instance_profile.name : length(regexall("^keep[0-9]+", each.value)) > 0 ? aws_iam_instance_profile.keepstore_instance_profile.name : aws_iam_instance_profile.default_instance_profile.name
+ iam_instance_profile = try(local.instance_profile[each.value], local.instance_profile.default).name
tags = {
- Name = "arvados_service_${each.value}"
+ Name = "${local.cluster_name}_arvados_service_${each.value}"
}
root_block_device {
volume_type = "gp3"
- volume_size = (each.value == "controller" && !local.use_external_db) ? 70 : 20
+ volume_size = try(var.instance_volume_size[each.value], var.instance_volume_size.default)
}
lifecycle {
Action: [
"iam:PassRole",
],
- Resource: "arn:aws:iam::*:role/${aws_iam_instance_profile.keepstore_instance_profile.name}"
+ Resource: "arn:aws:iam::*:role/${aws_iam_instance_profile.compute_node_instance_profile.name}"
}]
})
}