mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-26 08:26:20 +00:00
96 lines
No EOL
3 KiB
HCL
96 lines
No EOL
3 KiB
HCL
data template_file container_definition {
|
|
for_each = var.nodeKeys
|
|
template = "${file("${path.module}/container-definition.tpl")}"
|
|
|
|
vars = {
|
|
image_environment = "${lookup(each.value, "imageEnvironment", "devnet")}"
|
|
image_tag = "${lookup(each.value, "imageTag", "latest")}"
|
|
node_name = "${each.key}"
|
|
private_key = "${each.value.pk}"
|
|
cloudwatch_group = "tf-${each.key}"
|
|
cloudwatch_region = "${var.region}"
|
|
log_level = "${lookup(each.value, "logLevel", "${var.logLevel}")}"
|
|
chain_network = var.network
|
|
}
|
|
}
|
|
|
|
resource "aws_ecs_task_definition" "task_definition_group" {
|
|
for_each = var.nodeKeys
|
|
|
|
family = "${var.network}-${each.key}"
|
|
requires_compatibilities = ["FARGATE"]
|
|
network_mode = "awsvpc"
|
|
container_definitions = data.template_file.container_definition[each.key].rendered
|
|
execution_role_arn = var.xdc_ecs_tasks_execution_role_arn
|
|
task_role_arn = var.xdc_ecs_tasks_execution_role_arn
|
|
|
|
# New nodes will consume a lot more CPU usage than existing nodes.
|
|
# This is due to sync is resource heavy. Recommending set to below if doing sync:
|
|
# CPU = 2048, Memory = 4096
|
|
# Please set it back to cpu 256 and memory of 2048 after sync is done to save the cost
|
|
# cpu = 256
|
|
# memory = 2048
|
|
cpu = var.cpu
|
|
memory = var.memory
|
|
volume {
|
|
name = "efs"
|
|
|
|
efs_volume_configuration {
|
|
file_system_id = aws_efs_file_system.efs[each.key].id
|
|
root_directory = "/"
|
|
transit_encryption = "ENABLED"
|
|
authorization_config {
|
|
access_point_id = aws_efs_access_point.efs_access_point[each.key].id
|
|
iam = "DISABLED"
|
|
}
|
|
}
|
|
}
|
|
|
|
tags = {
|
|
Name = "Tf${var.network}Ecs-${each.key}"
|
|
}
|
|
}
|
|
|
|
data "aws_ecs_task_definition" "ecs_task_definition" {
|
|
for_each = var.nodeKeys
|
|
task_definition = aws_ecs_task_definition.task_definition_group[each.key].family
|
|
}
|
|
|
|
# ECS cluster
|
|
resource "aws_ecs_cluster" "ecs_cluster" {
|
|
name = "${var.network}-xdcnode-cluster"
|
|
tags = {
|
|
Name = "Tf${var.network}EcsCluster"
|
|
}
|
|
}
|
|
|
|
|
|
resource "aws_ecs_service" "ecs_service" {
|
|
for_each = var.enableFixedIp ? {} : var.nodeKeys
|
|
name = "ecs-service-${each.key}"
|
|
cluster = aws_ecs_cluster.ecs_cluster.id
|
|
task_definition = "${aws_ecs_task_definition.task_definition_group[each.key].family}:${max(aws_ecs_task_definition.task_definition_group[each.key].revision, data.aws_ecs_task_definition.ecs_task_definition[each.key].revision)}"
|
|
launch_type = "FARGATE"
|
|
scheduling_strategy = "REPLICA"
|
|
desired_count = 1
|
|
force_new_deployment = true
|
|
deployment_minimum_healthy_percent = 0
|
|
deployment_maximum_percent = 100
|
|
|
|
network_configuration {
|
|
subnets = [aws_subnet.subnet.id]
|
|
assign_public_ip = true
|
|
security_groups = [
|
|
aws_default_security_group.xdcnode_security_group.id
|
|
]
|
|
}
|
|
|
|
deployment_circuit_breaker {
|
|
enable = true
|
|
rollback = false
|
|
}
|
|
|
|
tags = {
|
|
Name = "Tf${var.network}EcsService-${each.key}"
|
|
}
|
|
} |