mirror of
https://github.com/status-im/libp2p-test-plans.git
synced 2025-02-17 17:27:39 +00:00
Our perf terraform setup differentiates in long lived and short lived resources. On CI, our long lived resources are spun up once and our short lived resources are spun up on each CI run. From time to time we have to adjust the long lived resources. End result is a new launch template that needs to be referenced in the short lived resources by version. Next to our CI, the perf terraform setup can as well be used on personal AWS accounts. Their long lived launch template version likely doesn't match the configured launch template version of the short lived aws_instance. Instead of specifying a specific version, instruct terraform to use the default, thus supporting both our CI and personal AWS account use-case.
123 lines
2.4 KiB
HCL
123 lines
2.4 KiB
HCL
terraform {
|
|
required_providers {
|
|
aws = {
|
|
source = "hashicorp/aws"
|
|
version = "4.67.0"
|
|
}
|
|
}
|
|
}
|
|
|
|
variable "region" {
|
|
description = "The AWS region of the provider"
|
|
}
|
|
|
|
variable "ami" {
|
|
description = "The Amazon Machine Image to use"
|
|
}
|
|
|
|
locals {
|
|
availability_zone = "${var.region}a"
|
|
}
|
|
|
|
resource "aws_vpc" "perf" {
|
|
cidr_block = "10.0.0.0/16"
|
|
}
|
|
|
|
resource "aws_subnet" "perf" {
|
|
vpc_id = aws_vpc.perf.id
|
|
cidr_block = "10.0.0.0/16"
|
|
availability_zone = local.availability_zone
|
|
map_public_ip_on_launch = true
|
|
}
|
|
|
|
resource "aws_internet_gateway" "perf" {
|
|
vpc_id = aws_vpc.perf.id
|
|
}
|
|
|
|
resource "aws_route_table" "perf" {
|
|
vpc_id = aws_vpc.perf.id
|
|
|
|
route {
|
|
cidr_block = "0.0.0.0/0"
|
|
gateway_id = aws_internet_gateway.perf.id
|
|
}
|
|
}
|
|
|
|
resource "aws_route_table_association" "perf" {
|
|
subnet_id = aws_subnet.perf.id
|
|
route_table_id = aws_route_table.perf.id
|
|
}
|
|
|
|
resource "aws_security_group" "restricted_inbound" {
|
|
name = "restricted_inbound"
|
|
description = "Allow SSH and port 4001 inbound traffic (TCP and UDP), allow all outbound traffic"
|
|
vpc_id = aws_vpc.perf.id
|
|
|
|
# ICMP
|
|
ingress {
|
|
from_port = -1
|
|
to_port = -1
|
|
protocol = "icmp"
|
|
cidr_blocks = ["0.0.0.0/0"]
|
|
}
|
|
|
|
# SSH (TCP)
|
|
ingress {
|
|
from_port = 22
|
|
to_port = 22
|
|
protocol = "tcp"
|
|
cidr_blocks = ["0.0.0.0/0"]
|
|
}
|
|
|
|
ingress {
|
|
from_port = 1
|
|
to_port = 65535
|
|
protocol = "tcp"
|
|
cidr_blocks = ["0.0.0.0/0"]
|
|
}
|
|
|
|
ingress {
|
|
from_port = 1
|
|
to_port = 65535
|
|
protocol = "udp"
|
|
cidr_blocks = ["0.0.0.0/0"]
|
|
}
|
|
|
|
egress {
|
|
from_port = 0
|
|
to_port = 0
|
|
protocol = "-1"
|
|
cidr_blocks = ["0.0.0.0/0"]
|
|
}
|
|
}
|
|
|
|
resource "aws_launch_template" "perf" {
|
|
name = "perf-node"
|
|
image_id = var.ami
|
|
instance_type = "m5n.8xlarge"
|
|
|
|
# Debug via:
|
|
# - /var/log/cloud-init.log and
|
|
# - /var/log/cloud-init-output.log
|
|
user_data = filebase64("${path.module}/files/user-data.sh")
|
|
|
|
instance_initiated_shutdown_behavior = "terminate"
|
|
|
|
network_interfaces {
|
|
subnet_id = aws_subnet.perf.id
|
|
security_groups = [aws_security_group.restricted_inbound.id]
|
|
delete_on_termination = true
|
|
}
|
|
|
|
block_device_mappings {
|
|
device_name = "/dev/xvda"
|
|
ebs {
|
|
volume_size = 100 # New root volume size in GiB
|
|
volume_type = "gp2"
|
|
delete_on_termination = true
|
|
}
|
|
}
|
|
|
|
update_default_version = true
|
|
}
|