From 35745292159b66502066f93ba15ffa8469a25a80 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 20 Mar 2025 15:47:56 +0000 Subject: [PATCH 1/4] Added 24.04 base image, EC deployments, and benchmark client deployment with latest base image --- .../common.tf | 12 ++ .../output.tf | 11 ++ .../resources.tf | 58 +++++++ .../shared_resources.tf | 17 ++ .../variables.tf | 160 ++++++++++++++++++ .../common.tf | 12 ++ .../ec-1-primaries-v8-m7g.2xlarge-tls/ec.tf | 16 ++ .../output.tf | 6 + .../shared_resources.tf | 17 ++ .../variables.tf | 5 + .../ec-1-primaries-v8-m7g.2xlarge/common.tf | 12 ++ terraform/ec-1-primaries-v8-m7g.2xlarge/ec.tf | 18 ++ .../ec-1-primaries-v8-m7g.2xlarge/output.tf | 6 + .../shared_resources.tf | 17 ++ .../variables.tf | 5 + .../common.tf | 12 ++ .../ec-1-primaries-v8-m7g.4xlarge-tls/ec.tf | 18 ++ .../output.tf | 6 + .../shared_resources.tf | 17 ++ .../variables.tf | 5 + .../ec-1-primaries-v8-m7g.large-tls/common.tf | 12 ++ .../ec-1-primaries-v8-m7g.large-tls/ec.tf | 33 ++++ .../ec-1-primaries-v8-m7g.large-tls/output.tf | 5 + .../shared_resources.tf | 17 ++ .../variables.tf | 5 + .../ec-1-primaries-v8-m7g.large/common.tf | 12 ++ terraform/ec-1-primaries-v8-m7g.large/ec.tf | 30 ++++ .../ec-1-primaries-v8-m7g.large/output.tf | 5 + .../shared_resources.tf | 17 ++ .../ec-1-primaries-v8-m7g.large/variables.tf | 5 + .../common.tf | 12 ++ .../ec-1-primaries-v8-m7g.xlarge-tls/ec.tf | 18 ++ .../output.tf | 6 + .../shared_resources.tf | 17 ++ .../variables.tf | 5 + .../ec-1-primaries-v8-m7g.xlarge/common.tf | 12 ++ terraform/ec-1-primaries-v8-m7g.xlarge/ec.tf | 18 ++ .../ec-1-primaries-v8-m7g.xlarge/output.tf | 6 + .../shared_resources.tf | 17 ++ .../ec-1-primaries-v8-m7g.xlarge/variables.tf | 5 + .../common.tf | 13 ++ .../install_memtier.sh | 14 ++ .../install_redis.sh | 10 ++ .../output.tf | 16 ++ .../resources.tf | 102 +++++++++++ .../shared_resources.tf | 17 ++ .../variables.tf | 160 ++++++++++++++++++ 47 files changed, 1019 insertions(+) create mode 100644 terraform/bench-client-ubuntu24.04-c7i.4xlarge/common.tf create mode 100644 terraform/bench-client-ubuntu24.04-c7i.4xlarge/output.tf create mode 100644 terraform/bench-client-ubuntu24.04-c7i.4xlarge/resources.tf create mode 100644 terraform/bench-client-ubuntu24.04-c7i.4xlarge/shared_resources.tf create mode 100644 terraform/bench-client-ubuntu24.04-c7i.4xlarge/variables.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.2xlarge-tls/common.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.2xlarge-tls/ec.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.2xlarge-tls/output.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.2xlarge-tls/shared_resources.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.2xlarge-tls/variables.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.2xlarge/common.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.2xlarge/ec.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.2xlarge/output.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.2xlarge/shared_resources.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.2xlarge/variables.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.4xlarge-tls/common.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.4xlarge-tls/ec.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.4xlarge-tls/output.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.4xlarge-tls/shared_resources.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.4xlarge-tls/variables.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.large-tls/common.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.large-tls/ec.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.large-tls/output.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.large-tls/shared_resources.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.large-tls/variables.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.large/common.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.large/ec.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.large/output.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.large/shared_resources.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.large/variables.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.xlarge-tls/common.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.xlarge-tls/ec.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.xlarge-tls/output.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.xlarge-tls/shared_resources.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.xlarge-tls/variables.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.xlarge/common.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.xlarge/ec.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.xlarge/output.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.xlarge/shared_resources.tf create mode 100644 terraform/ec-1-primaries-v8-m7g.xlarge/variables.tf create mode 100644 terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/common.tf create mode 100644 terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/install_memtier.sh create mode 100644 terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/install_redis.sh create mode 100644 terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/output.tf create mode 100644 terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/resources.tf create mode 100644 terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/shared_resources.tf create mode 100644 terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/variables.tf diff --git a/terraform/bench-client-ubuntu24.04-c7i.4xlarge/common.tf b/terraform/bench-client-ubuntu24.04-c7i.4xlarge/common.tf new file mode 100644 index 0000000..846bfd2 --- /dev/null +++ b/terraform/bench-client-ubuntu24.04-c7i.4xlarge/common.tf @@ -0,0 +1,12 @@ + +################################################################################ +# This is the bucket holding this specific setup tfstate +################################################################################ +terraform { + backend "s3" { + bucket = "performance-cto-group" + region = "us-east-1" + key = "bench-client-ubuntu24.04-c7i.4xlarge.tfstate" + } +} + diff --git a/terraform/bench-client-ubuntu24.04-c7i.4xlarge/output.tf b/terraform/bench-client-ubuntu24.04-c7i.4xlarge/output.tf new file mode 100644 index 0000000..200880d --- /dev/null +++ b/terraform/bench-client-ubuntu24.04-c7i.4xlarge/output.tf @@ -0,0 +1,11 @@ +output "server_public_ip" { + value = aws_instance.server_2a[*].public_ip +} + +output "server_private_ip" { + value = aws_instance.server_2a[*].private_ip +} + +output "server_instance_type" { + value = var.server_instance_type +} diff --git a/terraform/bench-client-ubuntu24.04-c7i.4xlarge/resources.tf b/terraform/bench-client-ubuntu24.04-c7i.4xlarge/resources.tf new file mode 100644 index 0000000..437f3d6 --- /dev/null +++ b/terraform/bench-client-ubuntu24.04-c7i.4xlarge/resources.tf @@ -0,0 +1,58 @@ + +resource "aws_instance" "server_2a" { + count = var.server_instance_count + ami = var.instance_ami + instance_type = var.server_instance_type + subnet_id = data.terraform_remote_state.shared_resources.outputs.subnet_public_id + vpc_security_group_ids = ["${data.terraform_remote_state.shared_resources.outputs.performance_cto_sg_id}"] + key_name = var.key_name + availability_zone = "us-east-2a" + + root_block_device { + volume_size = var.instance_volume_size + volume_type = var.instance_volume_type + encrypted = var.instance_volume_encrypted + delete_on_termination = true + } + + volume_tags = { + Environment = "${var.environment}" + Project = "${var.environment}" + Name = "ebs_block_device-${var.setup_name}-${count.index + 1}" + setup = "${var.setup_name}" + triggering_env = "${var.triggering_env}" + github_actor = "${var.github_actor}" + github_org = "${var.github_org}" + github_repo = "${var.github_repo}" + github_sha = "${var.github_sha}" + } + + tags = { + Environment = "${var.environment}" + Project = "${var.environment}" + Name = "${var.setup_name}-${count.index + 1}" + setup = "${var.setup_name}" + triggering_env = "${var.triggering_env}" + github_actor = "${var.github_actor}" + github_org = "${var.github_org}" + github_repo = "${var.github_repo}" + github_sha = "${var.github_sha}" + } + + ################################################################################ + # This will ensure we wait here until the instance is ready to receive the ssh connection + ################################################################################ + provisioner "remote-exec" { + script = "./../scripts/wait_for_instance.sh" + connection { + host = self.public_ip # The `self` variable is like `this` in many programming languages + type = "ssh" # in this case, `self` is the resource (the server). + user = var.ssh_user + private_key = file(var.private_key) + #need to increase timeout to larger then 5m for metal instances + timeout = "5m" + agent = "false" + } + } + +} diff --git a/terraform/bench-client-ubuntu24.04-c7i.4xlarge/shared_resources.tf b/terraform/bench-client-ubuntu24.04-c7i.4xlarge/shared_resources.tf new file mode 100644 index 0000000..824e6b9 --- /dev/null +++ b/terraform/bench-client-ubuntu24.04-c7i.4xlarge/shared_resources.tf @@ -0,0 +1,17 @@ +# provider +provider "aws" { + region = var.region +} + +################################################################################ +# This is the shared resources bucket key -- you will need it across environments like security rules,etc... +# !! do not change this !! +################################################################################ +data "terraform_remote_state" "shared_resources" { + backend = "s3" + config = { + bucket = "performance-cto-group" + key = "benchmarks/infrastructure/shared_resources.tfstate" + region = "us-east-1" + } +} diff --git a/terraform/bench-client-ubuntu24.04-c7i.4xlarge/variables.tf b/terraform/bench-client-ubuntu24.04-c7i.4xlarge/variables.tf new file mode 100644 index 0000000..695c81b --- /dev/null +++ b/terraform/bench-client-ubuntu24.04-c7i.4xlarge/variables.tf @@ -0,0 +1,160 @@ +################################################################################ +# Variables used for deployment tag +################################################################################ + +variable "setup_name" { + description = "setup name" + default = "bench-client-ubuntu24.04-c7i.4xlarge" +} + +variable "github_actor" { + description = "The name of the person or app that initiated the deployment." + default = "N/A" +} + +variable "github_repo" { + description = " The owner and repository name. For example, testing-infrastructure." + default = "N/A" +} + +variable "triggering_env" { + description = " The triggering environment. For example circleci." + default = "N/A" +} + +variable "environment" { + description = " The cost tag." + default = "BENCH-CLIENT" +} + +variable "github_org" { + description = " The owner name. For example, RedisModules." + default = "N/A" +} + +variable "github_sha" { + description = "The commit SHA that triggered the deployment." + default = "N/A" +} + +variable "timeout_secs" { + description = "The maximum time to wait prior destroying the VM via the watchdog." + default = "3600" +} + + + +################################################################################ +# Access keys +################################################################################ +variable "private_key" { + description = "private key" + default = "/tmp/benchmarks.redislabs.pem" +} + +variable "key_name" { + description = "key name" + default = "perf-cto-us-east-2" +} + +variable "region" { + default = "us-east-2" +} + +# (Ubuntu 24.04 + memtier + redis) +# https://us-east-2.console.aws.amazon.com/ec2/home?region=us-east-2#ImageDetails:imageId=ami-09070824ce6e19e5a +variable "instance_ami" { + description = "AMI for aws EC2 instance - us-east-2 Ubuntu 24.04 + memtier + redis" + default = "ami-09070824ce6e19e5a" +} + + +variable "instance_device_name" { + description = "EC2 instance device name" + default = "/dev/sda1" +} + +variable "redis_module" { + description = "redis_module" + default = "N/A" +} + +variable "instance_volume_size" { + description = "EC2 instance volume_size" + default = "256" +} + +variable "instance_volume_type" { + description = "EC2 instance volume_type" + default = "gp3" +} + + +variable "instance_volume_iops" { + description = "EC2 instance volume_iops" + default = "3000" +} + +variable "client_instance_volume_size" { + description = "EC2 instance volume_size" + default = "256" +} + +variable "client_instance_volume_type" { + description = "EC2 instance volume_type" + default = "gp3" +} + + +variable "instance_volume_encrypted" { + description = "EC2 instance instance_volume_encrypted" + default = "false" +} + +variable "instance_root_block_device_encrypted" { + description = "EC2 instance instance_root_block_device_encrypted" + default = "false" +} + +variable "instance_cpu_threads_per_core" { + description = "CPU threads per core for aws EC2 instance" + default = 1 +} + +variable "instance_cpu_threads_per_core_hyperthreading" { + description = "CPU threads per core when hyperthreading is enabled for aws EC2 instance" + default = 2 +} + +variable "instance_network_interface_plus_count" { + description = "number of additional network interfaces to add to aws EC2 instance" + default = 0 +} + +variable "os" { + description = "os" + default = "ubuntu24.04" +} + +variable "ssh_user" { + description = "ssh_user" + default = "ubuntu" +} + +################################################################################ +# Specific DB machine variables +################################################################################ +variable "server_instance_type" { + description = "type for aws EC2 instance" + default = "c7i.4xlarge" +} + +variable "server_instance_count" { + description = "count of aws EC2 instances" + default = 1 +} + +variable "server_instance_cpu_core_count" { + description = "CPU core count for aws EC2 instance" + default = 8 +} diff --git a/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/common.tf b/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/common.tf new file mode 100644 index 0000000..23504bc --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/common.tf @@ -0,0 +1,12 @@ + +################################################################################ +# This is the bucket holding this specific setup tfstate +################################################################################ +terraform { + backend "s3" { + bucket = "performance-cto-group" + region = "us-east-1" + key = "ec-1-primaries-v8-m7g.2xlarge-tls" + } +} + diff --git a/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/ec.tf b/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/ec.tf new file mode 100644 index 0000000..65acc8f --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/ec.tf @@ -0,0 +1,16 @@ +resource "aws_elasticache_replication_group" "ec" { + automatic_failover_enabled = false + preferred_cache_cluster_azs = ["us-east-2a"] + replication_group_id = "ec-1-primaries-v8-m7g-2xlarge-tls" + description = "2xlarge cache" + node_type = "cache.m7g.2xlarge" + num_cache_clusters = 1 + parameter_group_name = "default.valkey8" + engine = "valkey" + port = 6379 + security_group_ids = ["${data.terraform_remote_state.shared_resources.outputs.performance_cto_sg_id}"] + subnet_group_name = "ec-subnet" + at_rest_encryption_enabled = false + data_tiering_enabled = false + transit_encryption_enabled = true +} diff --git a/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/output.tf b/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/output.tf new file mode 100644 index 0000000..6c0095e --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/output.tf @@ -0,0 +1,6 @@ + +output "ec_members" { + value = ["${aws_elasticache_replication_group.ec}"] + sensitive = true +} + diff --git a/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/shared_resources.tf b/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/shared_resources.tf new file mode 100644 index 0000000..824e6b9 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/shared_resources.tf @@ -0,0 +1,17 @@ +# provider +provider "aws" { + region = var.region +} + +################################################################################ +# This is the shared resources bucket key -- you will need it across environments like security rules,etc... +# !! do not change this !! +################################################################################ +data "terraform_remote_state" "shared_resources" { + backend = "s3" + config = { + bucket = "performance-cto-group" + key = "benchmarks/infrastructure/shared_resources.tfstate" + region = "us-east-1" + } +} diff --git a/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/variables.tf b/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/variables.tf new file mode 100644 index 0000000..0a84a53 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.2xlarge-tls/variables.tf @@ -0,0 +1,5 @@ + + +variable "region" { + default = "us-east-2" +} diff --git a/terraform/ec-1-primaries-v8-m7g.2xlarge/common.tf b/terraform/ec-1-primaries-v8-m7g.2xlarge/common.tf new file mode 100644 index 0000000..cb78f7c --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.2xlarge/common.tf @@ -0,0 +1,12 @@ + +################################################################################ +# This is the bucket holding this specific setup tfstate +################################################################################ +terraform { + backend "s3" { + bucket = "performance-cto-group" + region = "us-east-1" + key = "ec-1-primaries-v8-m7g.2xlarge" + } +} + diff --git a/terraform/ec-1-primaries-v8-m7g.2xlarge/ec.tf b/terraform/ec-1-primaries-v8-m7g.2xlarge/ec.tf new file mode 100644 index 0000000..f1ca724 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.2xlarge/ec.tf @@ -0,0 +1,18 @@ + +resource "aws_elasticache_replication_group" "ec" { + automatic_failover_enabled = false + preferred_cache_cluster_azs = ["us-east-2a"] + replication_group_id = "ec-1-primaries-v8-m7g-2xlarge" + description = "xlarge cache" + node_type = "cache.m7g.2xlarge" + num_cache_clusters = 1 + parameter_group_name = "default.valkey8" + engine = "valkey" + port = 6379 + security_group_ids = ["${data.terraform_remote_state.shared_resources.outputs.performance_cto_sg_id}"] + subnet_group_name = "ec-subnet" + at_rest_encryption_enabled = false + data_tiering_enabled = false +} + + diff --git a/terraform/ec-1-primaries-v8-m7g.2xlarge/output.tf b/terraform/ec-1-primaries-v8-m7g.2xlarge/output.tf new file mode 100644 index 0000000..6c0095e --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.2xlarge/output.tf @@ -0,0 +1,6 @@ + +output "ec_members" { + value = ["${aws_elasticache_replication_group.ec}"] + sensitive = true +} + diff --git a/terraform/ec-1-primaries-v8-m7g.2xlarge/shared_resources.tf b/terraform/ec-1-primaries-v8-m7g.2xlarge/shared_resources.tf new file mode 100644 index 0000000..824e6b9 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.2xlarge/shared_resources.tf @@ -0,0 +1,17 @@ +# provider +provider "aws" { + region = var.region +} + +################################################################################ +# This is the shared resources bucket key -- you will need it across environments like security rules,etc... +# !! do not change this !! +################################################################################ +data "terraform_remote_state" "shared_resources" { + backend = "s3" + config = { + bucket = "performance-cto-group" + key = "benchmarks/infrastructure/shared_resources.tfstate" + region = "us-east-1" + } +} diff --git a/terraform/ec-1-primaries-v8-m7g.2xlarge/variables.tf b/terraform/ec-1-primaries-v8-m7g.2xlarge/variables.tf new file mode 100644 index 0000000..0a84a53 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.2xlarge/variables.tf @@ -0,0 +1,5 @@ + + +variable "region" { + default = "us-east-2" +} diff --git a/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/common.tf b/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/common.tf new file mode 100644 index 0000000..fb1ad01 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/common.tf @@ -0,0 +1,12 @@ + +################################################################################ +# This is the bucket holding this specific setup tfstate +################################################################################ +terraform { + backend "s3" { + bucket = "performance-cto-group" + region = "us-east-1" + key = "ec-1-primaries-v8-m7g.4xlarge-tls" + } +} + diff --git a/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/ec.tf b/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/ec.tf new file mode 100644 index 0000000..55c1bca --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/ec.tf @@ -0,0 +1,18 @@ +resource "aws_elasticache_replication_group" "ec" { + automatic_failover_enabled = false + preferred_cache_cluster_azs = ["us-east-2a"] + replication_group_id = "ec-1-primaries-v8-m7g-4xlarge-tls" + description = "4xlarge cache" + node_type = "cache.m7g.4xlarge" + num_cache_clusters = 1 + parameter_group_name = "default.valkey8" + engine = "valkey" + port = 6379 + security_group_ids = ["${data.terraform_remote_state.shared_resources.outputs.performance_cto_sg_id}"] + subnet_group_name = "ec-subnet" + at_rest_encryption_enabled = false + data_tiering_enabled = false + transit_encryption_enabled = true +} + + diff --git a/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/output.tf b/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/output.tf new file mode 100644 index 0000000..6c0095e --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/output.tf @@ -0,0 +1,6 @@ + +output "ec_members" { + value = ["${aws_elasticache_replication_group.ec}"] + sensitive = true +} + diff --git a/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/shared_resources.tf b/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/shared_resources.tf new file mode 100644 index 0000000..824e6b9 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/shared_resources.tf @@ -0,0 +1,17 @@ +# provider +provider "aws" { + region = var.region +} + +################################################################################ +# This is the shared resources bucket key -- you will need it across environments like security rules,etc... +# !! do not change this !! +################################################################################ +data "terraform_remote_state" "shared_resources" { + backend = "s3" + config = { + bucket = "performance-cto-group" + key = "benchmarks/infrastructure/shared_resources.tfstate" + region = "us-east-1" + } +} diff --git a/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/variables.tf b/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/variables.tf new file mode 100644 index 0000000..0a84a53 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.4xlarge-tls/variables.tf @@ -0,0 +1,5 @@ + + +variable "region" { + default = "us-east-2" +} diff --git a/terraform/ec-1-primaries-v8-m7g.large-tls/common.tf b/terraform/ec-1-primaries-v8-m7g.large-tls/common.tf new file mode 100644 index 0000000..7f7e0c9 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.large-tls/common.tf @@ -0,0 +1,12 @@ + +################################################################################ +# This is the bucket holding this specific setup tfstate +################################################################################ +terraform { + backend "s3" { + bucket = "performance-cto-group" + region = "us-east-1" + key = "ec-1-primaries-v8-r7g.large-tls" + } +} + diff --git a/terraform/ec-1-primaries-v8-m7g.large-tls/ec.tf b/terraform/ec-1-primaries-v8-m7g.large-tls/ec.tf new file mode 100644 index 0000000..f78dd60 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.large-tls/ec.tf @@ -0,0 +1,33 @@ +# resource "aws_elasticache_cluster" "ec" { +# cluster_id = "ec-1-primaries-v8-r7g-xlarge" +# node_type = "cache.m7g.xlarge" +# port = 6379 +# apply_immediately = true +# parameter_group_name = "default.valkey8" +# engine = "valkey" +# num_cache_nodes = 1 +# security_group_ids = ["${data.terraform_remote_state.shared_resources.outputs.performance_cto_sg_id}"] +# subnet_group_name = "ec-subnet" +# availability_zone = "us-east-2a" +# } + +resource "aws_elasticache_replication_group" "ec" { + automatic_failover_enabled = false + preferred_cache_cluster_azs = ["us-east-2a"] + replication_group_id = "ec-1-primaries-v8-r7g-large-tls" + description = "xlarge cache" + node_type = "cache.m7g.large" + num_cache_clusters = 1 + parameter_group_name = "default.valkey8" + engine = "valkey" + port = 6379 + security_group_ids = ["${data.terraform_remote_state.shared_resources.outputs.performance_cto_sg_id}"] + subnet_group_name = "ec-subnet" + at_rest_encryption_enabled = false + data_tiering_enabled = false + transit_encryption_enabled = true + + + +} + diff --git a/terraform/ec-1-primaries-v8-m7g.large-tls/output.tf b/terraform/ec-1-primaries-v8-m7g.large-tls/output.tf new file mode 100644 index 0000000..ecaffce --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.large-tls/output.tf @@ -0,0 +1,5 @@ + +output "ec_members" { + value = ["${aws_elasticache_replication_group.ec}"] +} + diff --git a/terraform/ec-1-primaries-v8-m7g.large-tls/shared_resources.tf b/terraform/ec-1-primaries-v8-m7g.large-tls/shared_resources.tf new file mode 100644 index 0000000..824e6b9 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.large-tls/shared_resources.tf @@ -0,0 +1,17 @@ +# provider +provider "aws" { + region = var.region +} + +################################################################################ +# This is the shared resources bucket key -- you will need it across environments like security rules,etc... +# !! do not change this !! +################################################################################ +data "terraform_remote_state" "shared_resources" { + backend = "s3" + config = { + bucket = "performance-cto-group" + key = "benchmarks/infrastructure/shared_resources.tfstate" + region = "us-east-1" + } +} diff --git a/terraform/ec-1-primaries-v8-m7g.large-tls/variables.tf b/terraform/ec-1-primaries-v8-m7g.large-tls/variables.tf new file mode 100644 index 0000000..0a84a53 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.large-tls/variables.tf @@ -0,0 +1,5 @@ + + +variable "region" { + default = "us-east-2" +} diff --git a/terraform/ec-1-primaries-v8-m7g.large/common.tf b/terraform/ec-1-primaries-v8-m7g.large/common.tf new file mode 100644 index 0000000..cf6f7ef --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.large/common.tf @@ -0,0 +1,12 @@ + +################################################################################ +# This is the bucket holding this specific setup tfstate +################################################################################ +terraform { + backend "s3" { + bucket = "performance-cto-group" + region = "us-east-1" + key = "ec-1-primaries-v8-r7g.large" + } +} + diff --git a/terraform/ec-1-primaries-v8-m7g.large/ec.tf b/terraform/ec-1-primaries-v8-m7g.large/ec.tf new file mode 100644 index 0000000..67ff7a4 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.large/ec.tf @@ -0,0 +1,30 @@ +# resource "aws_elasticache_cluster" "ec" { +# cluster_id = "ec-1-primaries-v8-r7g-xlarge" +# node_type = "cache.m7g.xlarge" +# port = 6379 +# apply_immediately = true +# parameter_group_name = "default.valkey8" +# engine = "valkey" +# num_cache_nodes = 1 +# security_group_ids = ["${data.terraform_remote_state.shared_resources.outputs.performance_cto_sg_id}"] +# subnet_group_name = "ec-subnet" +# availability_zone = "us-east-2a" +# } + +resource "aws_elasticache_replication_group" "ec" { + automatic_failover_enabled = false + preferred_cache_cluster_azs = ["us-east-2a"] + replication_group_id = "ec-1-primaries-v8-r7g-large" + description = "xlarge cache" + node_type = "cache.m7g.large" + num_cache_clusters = 1 + parameter_group_name = "default.valkey8" + engine = "valkey" + port = 6379 + security_group_ids = ["${data.terraform_remote_state.shared_resources.outputs.performance_cto_sg_id}"] + subnet_group_name = "ec-subnet" + at_rest_encryption_enabled = false + data_tiering_enabled = false +} + + diff --git a/terraform/ec-1-primaries-v8-m7g.large/output.tf b/terraform/ec-1-primaries-v8-m7g.large/output.tf new file mode 100644 index 0000000..ecaffce --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.large/output.tf @@ -0,0 +1,5 @@ + +output "ec_members" { + value = ["${aws_elasticache_replication_group.ec}"] +} + diff --git a/terraform/ec-1-primaries-v8-m7g.large/shared_resources.tf b/terraform/ec-1-primaries-v8-m7g.large/shared_resources.tf new file mode 100644 index 0000000..824e6b9 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.large/shared_resources.tf @@ -0,0 +1,17 @@ +# provider +provider "aws" { + region = var.region +} + +################################################################################ +# This is the shared resources bucket key -- you will need it across environments like security rules,etc... +# !! do not change this !! +################################################################################ +data "terraform_remote_state" "shared_resources" { + backend = "s3" + config = { + bucket = "performance-cto-group" + key = "benchmarks/infrastructure/shared_resources.tfstate" + region = "us-east-1" + } +} diff --git a/terraform/ec-1-primaries-v8-m7g.large/variables.tf b/terraform/ec-1-primaries-v8-m7g.large/variables.tf new file mode 100644 index 0000000..0a84a53 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.large/variables.tf @@ -0,0 +1,5 @@ + + +variable "region" { + default = "us-east-2" +} diff --git a/terraform/ec-1-primaries-v8-m7g.xlarge-tls/common.tf b/terraform/ec-1-primaries-v8-m7g.xlarge-tls/common.tf new file mode 100644 index 0000000..5cecf7a --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.xlarge-tls/common.tf @@ -0,0 +1,12 @@ + +################################################################################ +# This is the bucket holding this specific setup tfstate +################################################################################ +terraform { + backend "s3" { + bucket = "performance-cto-group" + region = "us-east-1" + key = "ec-1-primaries-v8-m7g.xlarge-tls" + } +} + diff --git a/terraform/ec-1-primaries-v8-m7g.xlarge-tls/ec.tf b/terraform/ec-1-primaries-v8-m7g.xlarge-tls/ec.tf new file mode 100644 index 0000000..4c7b3ac --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.xlarge-tls/ec.tf @@ -0,0 +1,18 @@ +resource "aws_elasticache_replication_group" "ec" { + automatic_failover_enabled = false + preferred_cache_cluster_azs = ["us-east-2a"] + replication_group_id = "ec-1-primaries-v8-m7g-xlarge-tls" + description = "xlarge cache" + node_type = "cache.m7g.xlarge" + num_cache_clusters = 1 + parameter_group_name = "default.valkey8" + engine = "valkey" + port = 6379 + security_group_ids = ["${data.terraform_remote_state.shared_resources.outputs.performance_cto_sg_id}"] + subnet_group_name = "ec-subnet" + at_rest_encryption_enabled = false + data_tiering_enabled = false + transit_encryption_enabled = true +} + + diff --git a/terraform/ec-1-primaries-v8-m7g.xlarge-tls/output.tf b/terraform/ec-1-primaries-v8-m7g.xlarge-tls/output.tf new file mode 100644 index 0000000..6c0095e --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.xlarge-tls/output.tf @@ -0,0 +1,6 @@ + +output "ec_members" { + value = ["${aws_elasticache_replication_group.ec}"] + sensitive = true +} + diff --git a/terraform/ec-1-primaries-v8-m7g.xlarge-tls/shared_resources.tf b/terraform/ec-1-primaries-v8-m7g.xlarge-tls/shared_resources.tf new file mode 100644 index 0000000..824e6b9 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.xlarge-tls/shared_resources.tf @@ -0,0 +1,17 @@ +# provider +provider "aws" { + region = var.region +} + +################################################################################ +# This is the shared resources bucket key -- you will need it across environments like security rules,etc... +# !! do not change this !! +################################################################################ +data "terraform_remote_state" "shared_resources" { + backend = "s3" + config = { + bucket = "performance-cto-group" + key = "benchmarks/infrastructure/shared_resources.tfstate" + region = "us-east-1" + } +} diff --git a/terraform/ec-1-primaries-v8-m7g.xlarge-tls/variables.tf b/terraform/ec-1-primaries-v8-m7g.xlarge-tls/variables.tf new file mode 100644 index 0000000..0a84a53 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.xlarge-tls/variables.tf @@ -0,0 +1,5 @@ + + +variable "region" { + default = "us-east-2" +} diff --git a/terraform/ec-1-primaries-v8-m7g.xlarge/common.tf b/terraform/ec-1-primaries-v8-m7g.xlarge/common.tf new file mode 100644 index 0000000..69c7cbd --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.xlarge/common.tf @@ -0,0 +1,12 @@ + +################################################################################ +# This is the bucket holding this specific setup tfstate +################################################################################ +terraform { + backend "s3" { + bucket = "performance-cto-group" + region = "us-east-1" + key = "ec-1-primaries-v8-m7g.xlarge" + } +} + diff --git a/terraform/ec-1-primaries-v8-m7g.xlarge/ec.tf b/terraform/ec-1-primaries-v8-m7g.xlarge/ec.tf new file mode 100644 index 0000000..d62c083 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.xlarge/ec.tf @@ -0,0 +1,18 @@ + +resource "aws_elasticache_replication_group" "ec" { + automatic_failover_enabled = false + preferred_cache_cluster_azs = ["us-east-2a"] + replication_group_id = "ec-1-primaries-v8-m7g-xlarge" + description = "xlarge cache" + node_type = "cache.m7g.xlarge" + num_cache_clusters = 1 + parameter_group_name = "default.valkey8" + engine = "valkey" + port = 6379 + security_group_ids = ["${data.terraform_remote_state.shared_resources.outputs.performance_cto_sg_id}"] + subnet_group_name = "ec-subnet" + at_rest_encryption_enabled = false + data_tiering_enabled = false +} + + diff --git a/terraform/ec-1-primaries-v8-m7g.xlarge/output.tf b/terraform/ec-1-primaries-v8-m7g.xlarge/output.tf new file mode 100644 index 0000000..6c0095e --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.xlarge/output.tf @@ -0,0 +1,6 @@ + +output "ec_members" { + value = ["${aws_elasticache_replication_group.ec}"] + sensitive = true +} + diff --git a/terraform/ec-1-primaries-v8-m7g.xlarge/shared_resources.tf b/terraform/ec-1-primaries-v8-m7g.xlarge/shared_resources.tf new file mode 100644 index 0000000..824e6b9 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.xlarge/shared_resources.tf @@ -0,0 +1,17 @@ +# provider +provider "aws" { + region = var.region +} + +################################################################################ +# This is the shared resources bucket key -- you will need it across environments like security rules,etc... +# !! do not change this !! +################################################################################ +data "terraform_remote_state" "shared_resources" { + backend = "s3" + config = { + bucket = "performance-cto-group" + key = "benchmarks/infrastructure/shared_resources.tfstate" + region = "us-east-1" + } +} diff --git a/terraform/ec-1-primaries-v8-m7g.xlarge/variables.tf b/terraform/ec-1-primaries-v8-m7g.xlarge/variables.tf new file mode 100644 index 0000000..0a84a53 --- /dev/null +++ b/terraform/ec-1-primaries-v8-m7g.xlarge/variables.tf @@ -0,0 +1,5 @@ + + +variable "region" { + default = "us-east-2" +} diff --git a/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/common.tf b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/common.tf new file mode 100644 index 0000000..7e05df4 --- /dev/null +++ b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/common.tf @@ -0,0 +1,13 @@ + +################################################################################ +# This is the bucket holding this specific setup tfstate +################################################################################ +terraform { + backend "s3" { + bucket = "performance-cto-group" + region = "us-east-1" + key = "benchmarks/infrastructure/perf-base-image-ubuntu24.04-m6i.8xlarge.tfstate" + + } +} + diff --git a/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/install_memtier.sh b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/install_memtier.sh new file mode 100644 index 0000000..d2ee41d --- /dev/null +++ b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/install_memtier.sh @@ -0,0 +1,14 @@ +#!/bin/bash +export DEBIAN_FRONTEND=noninteractive +sudo DEBIAN_FRONTEND=noninteractive apt update -y +sudo DEBIAN_FRONTEND=noninteractive apt install lsb-release curl gpg -y + +curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg + +echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list + +sudo apt-get update -y + +sudo apt-get install memtier-benchmark -y + + diff --git a/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/install_redis.sh b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/install_redis.sh new file mode 100644 index 0000000..c10f909 --- /dev/null +++ b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/install_redis.sh @@ -0,0 +1,10 @@ +#!/bin/bash +export DEBIAN_FRONTEND=noninteractive +sudo DEBIAN_FRONTEND=noninteractive apt update -y +sudo DEBIAN_FRONTEND=noninteractive apt install zip git libssl-dev make gcc pkg-config python3-pip -y +# install libssl1 due to search +sudo git clone https://github.com/redis/redis --depth 1 +sudo bash -c "cd redis && sudo make BUILD_TLS=yes -j && sudo make BUILD_TLS=yes install" +# check +echo "Printing redis-server info" +redis-server --version diff --git a/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/output.tf b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/output.tf new file mode 100644 index 0000000..7602306 --- /dev/null +++ b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/output.tf @@ -0,0 +1,16 @@ +output "server_public_ip" { + value = aws_instance.server_2a[*].public_ip +} + +output "server_private_ip" { + value = aws_instance.server_2a[*].private_ip +} + +output "server_instance_type" { + value = var.server_instance_type +} + + +output "ami_id" { + value = aws_ami_from_instance.perf_ami.id +} diff --git a/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/resources.tf b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/resources.tf new file mode 100644 index 0000000..05d5cf5 --- /dev/null +++ b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/resources.tf @@ -0,0 +1,102 @@ + +resource "aws_instance" "server_2a" { + count = var.server_instance_count + ami = var.instance_ami + instance_type = var.server_instance_type + subnet_id = data.terraform_remote_state.shared_resources.outputs.subnet_public_id + vpc_security_group_ids = ["${data.terraform_remote_state.shared_resources.outputs.performance_cto_sg_id}"] + key_name = var.key_name + availability_zone = "us-east-2a" + + root_block_device { + volume_size = var.instance_volume_size + volume_type = var.instance_volume_type + encrypted = var.instance_volume_encrypted + delete_on_termination = true + } + + volume_tags = { + Environment = "${var.environment}" + Project = "${var.environment}" + Name = "ebs_block_device-${var.setup_name}-${count.index + 1}" + setup = "${var.setup_name}" + triggering_env = "${var.triggering_env}" + github_actor = "${var.github_actor}" + github_org = "${var.github_org}" + github_repo = "${var.github_repo}" + github_sha = "${var.github_sha}" + } + + tags = { + Environment = "${var.environment}" + Project = "${var.environment}" + Name = "${var.setup_name}-${count.index + 1}" + setup = "${var.setup_name}" + triggering_env = "${var.triggering_env}" + github_actor = "${var.github_actor}" + github_org = "${var.github_org}" + github_repo = "${var.github_repo}" + github_sha = "${var.github_sha}" + } + + ################################################################################ + # This will ensure we wait here until the instance is ready to receive the ssh connection + ################################################################################ + provisioner "remote-exec" { + script = "./../scripts/wait_for_instance.sh" + connection { + host = self.public_ip # The `self` variable is like `this` in many programming languages + type = "ssh" # in this case, `self` is the resource (the server). + user = var.ssh_user + private_key = file(var.private_key) + #need to increase timeout to larger then 5m for metal instances + timeout = "5m" + agent = "false" + } + } + + + ################################################################################ + # Deployment related + ################################################################################ + + ################################################################################ + # Install memtier + ################################################################################ + provisioner "remote-exec" { + script = "./install_memtier.sh" + connection { + host = self.public_ip # The `self` variable is like `this` in many programming languages + type = "ssh" # in this case, `self` is the resource (the server). + user = var.ssh_user + private_key = file(var.private_key) + #need to increase timeout to larger then 5m for metal instances + timeout = "5m" + agent = "false" + } + } + + + ################################################################################ + # Install redis + ################################################################################ + provisioner "remote-exec" { + script = "./install_redis.sh" + connection { + host = self.public_ip # The `self` variable is like `this` in many programming languages + type = "ssh" # in this case, `self` is the resource (the server). + user = var.ssh_user + private_key = file(var.private_key) + #need to increase timeout to larger then 5m for metal instances + timeout = "5m" + agent = "false" + } + } + +} + + +resource "aws_ami_from_instance" "perf_ami" { + name = "${var.setup_name}-${formatdate("YYYYMMDD-HHmm", timestamp())}" + source_instance_id = aws_instance.server_2a[0].id +} \ No newline at end of file diff --git a/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/shared_resources.tf b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/shared_resources.tf new file mode 100644 index 0000000..824e6b9 --- /dev/null +++ b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/shared_resources.tf @@ -0,0 +1,17 @@ +# provider +provider "aws" { + region = var.region +} + +################################################################################ +# This is the shared resources bucket key -- you will need it across environments like security rules,etc... +# !! do not change this !! +################################################################################ +data "terraform_remote_state" "shared_resources" { + backend = "s3" + config = { + bucket = "performance-cto-group" + key = "benchmarks/infrastructure/shared_resources.tfstate" + region = "us-east-1" + } +} diff --git a/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/variables.tf b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/variables.tf new file mode 100644 index 0000000..3730c6a --- /dev/null +++ b/terraform/perf-base-image-ubuntu24.04-m6i.8xlarge/variables.tf @@ -0,0 +1,160 @@ +################################################################################ +# Variables used for deployment tag +################################################################################ + +variable "setup_name" { + description = "setup name" + default = "perf-base-image-ubuntu24.04-m6i.8xlarge" +} + +variable "github_actor" { + description = "The name of the person or app that initiated the deployment." + default = "N/A" +} + +variable "github_repo" { + description = " The owner and repository name. For example, testing-infrastructure." + default = "N/A" +} + +variable "triggering_env" { + description = " The triggering environment. For example circleci." + default = "N/A" +} + +variable "environment" { + description = " The cost tag." + default = "CI-BASE-IMAGE" +} + +variable "github_org" { + description = " The owner name. For example, RedisModules." + default = "N/A" +} + +variable "github_sha" { + description = "The commit SHA that triggered the deployment." + default = "N/A" +} + +variable "timeout_secs" { + description = "The maximum time to wait prior destroying the VM via the watchdog." + default = "3600" +} + + + +################################################################################ +# Access keys +################################################################################ +variable "private_key" { + description = "private key" + default = "/tmp/benchmarks.redislabs.pem" +} + +variable "key_name" { + description = "key name" + default = "perf-cto-us-east-2" +} + +variable "region" { + default = "us-east-2" +} + +# (Ubuntu 24.04) +# Jammy Jellyfish 24.04 LTS amd64 hvm:ebs-ssd 20250305 ami-04f167a56786e4b09 hvm +variable "instance_ami" { + description = "AMI for aws EC2 instance - us-east-2 Ubuntu 24.04 LTS 20250305" + default = "ami-04f167a56786e4b09" +} + + +variable "instance_device_name" { + description = "EC2 instance device name" + default = "/dev/sda1" +} + +variable "redis_module" { + description = "redis_module" + default = "N/A" +} + +variable "instance_volume_size" { + description = "EC2 instance volume_size" + default = "256" +} + +variable "instance_volume_type" { + description = "EC2 instance volume_type" + default = "gp3" +} + + +variable "instance_volume_iops" { + description = "EC2 instance volume_iops" + default = "512" +} + +variable "client_instance_volume_size" { + description = "EC2 instance volume_size" + default = "128" +} + +variable "client_instance_volume_type" { + description = "EC2 instance volume_type" + default = "gp3" +} + + +variable "instance_volume_encrypted" { + description = "EC2 instance instance_volume_encrypted" + default = "false" +} + +variable "instance_root_block_device_encrypted" { + description = "EC2 instance instance_root_block_device_encrypted" + default = "false" +} + +variable "instance_cpu_threads_per_core" { + description = "CPU threads per core for aws EC2 instance" + default = 1 +} + +variable "instance_cpu_threads_per_core_hyperthreading" { + description = "CPU threads per core when hyperthreading is enabled for aws EC2 instance" + default = 2 +} + +variable "instance_network_interface_plus_count" { + description = "number of additional network interfaces to add to aws EC2 instance" + default = 0 +} + +variable "os" { + description = "os" + default = "ubuntu24.04" +} + +variable "ssh_user" { + description = "ssh_user" + default = "ubuntu" +} + +################################################################################ +# Specific DB machine variables +################################################################################ +variable "server_instance_type" { + description = "type for aws EC2 instance" + default = "m6i.8xlarge" +} + +variable "server_instance_count" { + description = "count of aws EC2 instances" + default = 1 +} + +variable "server_instance_cpu_core_count" { + description = "CPU core count for aws EC2 instance" + default = 16 +} From 31aaa91ce3647b99385815380442c7b9c98e8ef0 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 20 Mar 2025 17:34:16 +0000 Subject: [PATCH 2/4] Moved redistimeseries base image from ami-01207799cb12aebd3 (which used redis 7.4) to ami-0cda50c2e20879afb which uses 8.0 --- .../variables.tf | 11 +++++------ .../oss-standalone-redistimeseries-m5/variables.tf | 7 ++++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/terraform/oss-redistimeseries-m5-spot-instances/variables.tf b/terraform/oss-redistimeseries-m5-spot-instances/variables.tf index 5ce5272..72bc295 100644 --- a/terraform/oss-redistimeseries-m5-spot-instances/variables.tf +++ b/terraform/oss-redistimeseries-m5-spot-instances/variables.tf @@ -66,11 +66,10 @@ variable "region" { } # (Ubuntu 22.04) -# perf base image - +# https://us-east-2.console.aws.amazon.com/ec2/home?region=us-east-2#ImageDetails:imageId=ami-0cda50c2e20879afb variable "instance_ami" { - description = "AMI for aws EC2 instance - us-east-2 Ubuntu 22.04" - default = "ami-01207799cb12aebd3" + description = "AMI for aws EC2 instance - us-east-2 Ubuntu 22.04 - perf-base-image-ubuntu22.04-m6i.8xlarge-20250306-0220" + default = "ami-0cda50c2e20879afb" } variable "instance_device_name" { @@ -125,7 +124,7 @@ variable "instance_network_interface_plus_count" { variable "os" { description = "os" - default = "ubuntu18.04" + default = "ubuntu22.04" } variable "ssh_user" { @@ -164,4 +163,4 @@ variable "client_instance_type" { variable "client_instance_count" { default = "1" -} \ No newline at end of file +} diff --git a/terraform/oss-standalone-redistimeseries-m5/variables.tf b/terraform/oss-standalone-redistimeseries-m5/variables.tf index 0cff5c9..938c24b 100644 --- a/terraform/oss-standalone-redistimeseries-m5/variables.tf +++ b/terraform/oss-standalone-redistimeseries-m5/variables.tf @@ -66,9 +66,10 @@ variable "region" { } # (Ubuntu 22.04) +# https://us-east-2.console.aws.amazon.com/ec2/home?region=us-east-2#ImageDetails:imageId=ami-0cda50c2e20879afb variable "instance_ami" { - description = "AMI for aws EC2 instance - us-east-2 Ubuntu 20.04 - perf-base-image-ubuntu22.04-m6i.8xlarge-1" - default = "ami-01207799cb12aebd3" + description = "AMI for aws EC2 instance - us-east-2 Ubuntu 22.04 - perf-base-image-ubuntu22.04-m6i.8xlarge-20250306-0220" + default = "ami-0cda50c2e20879afb" } variable "instance_device_name" { @@ -123,7 +124,7 @@ variable "instance_network_interface_plus_count" { variable "os" { description = "os" - default = "ubuntu20.04" + default = "ubuntu22.04" } variable "ssh_user" { From 2b11edf17a8836c92e2099c8de245bda80e1cf7c Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 20 Mar 2025 17:54:35 +0000 Subject: [PATCH 3/4] Updated private key used on timeseries deployments --- terraform/oss-redistimeseries-m5-spot-instances/variables.tf | 2 +- terraform/oss-standalone-redistimeseries-m5/variables.tf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/terraform/oss-redistimeseries-m5-spot-instances/variables.tf b/terraform/oss-redistimeseries-m5-spot-instances/variables.tf index 72bc295..a8d753e 100644 --- a/terraform/oss-redistimeseries-m5-spot-instances/variables.tf +++ b/terraform/oss-redistimeseries-m5-spot-instances/variables.tf @@ -58,7 +58,7 @@ variable "public_key" { variable "key_name" { description = "key name" - default = "perf-ci" + default = "perf-cto-us-east-2" } variable "region" { diff --git a/terraform/oss-standalone-redistimeseries-m5/variables.tf b/terraform/oss-standalone-redistimeseries-m5/variables.tf index 938c24b..d6539a4 100644 --- a/terraform/oss-standalone-redistimeseries-m5/variables.tf +++ b/terraform/oss-standalone-redistimeseries-m5/variables.tf @@ -58,7 +58,7 @@ variable "public_key" { variable "key_name" { description = "key name" - default = "perf-ci" + default = "perf-cto-us-east-2" } variable "region" { From 91db54ab6dd21eb246c2a528615a56f54a730893 Mon Sep 17 00:00:00 2001 From: filipecosta90 Date: Thu, 20 Mar 2025 18:34:43 +0000 Subject: [PATCH 4/4] Added getterraform script --- terraform/getterraform | 43 +++++++++++++++++++ .../db-resources.tf | 2 +- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100755 terraform/getterraform diff --git a/terraform/getterraform b/terraform/getterraform new file mode 100755 index 0000000..1c315e3 --- /dev/null +++ b/terraform/getterraform @@ -0,0 +1,43 @@ +#!/bin/bash + +VERSION=${VERSION:-"1.10.5"} + + +PROGNAME="${BASH_SOURCE[0]}" +HERE="$(cd "$(dirname "$PROGNAME")" &>/dev/null && pwd)" +READIES=$(cd $HERE/.. && pwd) +. $READIES/shibumi/defs + +OS=`uname -s` +if [[ $OS == Linux ]]; then + OS=linux +elif [[ $OS == Darwin ]]; then + OS=darwin +elif [[ $OS == FreBSD ]]; then + OS=freebsd +else + echo "$OS: unsupported" +fi + +ARCH=`uname -m` +if [[ $ARCH == x86_64 ]]; then + ARCH=amd64 +elif [[ $ARCH == i686 ]]; then + ARCH=386 +elif [[ $ARCH == aarch64 ]]; then + ARCH=arm64 +elif [[ $ARCH == armv7l ]]; then + ARCH=arm +else + echo "$ARCH: unsupported" + exit 1 +fi + +dir=$(mktemp -d /tmp/tf.XXXXXX) +wget -q -O $dir/tf.zip https://releases.hashicorp.com/terraform/${VERSION}/terraform_${VERSION}_${OS}_${ARCH}.zip +cd $dir +unzip -q tf.zip +chmod +x terraform +mv terraform /usr/local/bin/ +cd $HERE +rm -rf $dir diff --git a/terraform/oss-redistimeseries-m5-spot-instances/db-resources.tf b/terraform/oss-redistimeseries-m5-spot-instances/db-resources.tf index ec7a7b9..c468ddb 100644 --- a/terraform/oss-redistimeseries-m5-spot-instances/db-resources.tf +++ b/terraform/oss-redistimeseries-m5-spot-instances/db-resources.tf @@ -31,7 +31,7 @@ resource "aws_spot_instance_request" "server" { user = var.ssh_user private_key = file(var.private_key) #need to increase timeout to larger then 5m for metal instances - timeout = "15m" + timeout = "8m" agent = "false" } }