{"id":18300465,"url":"https://github.com/comet-ml/terraform-aws-comet","last_synced_at":"2025-07-15T18:33:03.377Z","repository":{"id":190469171,"uuid":"650411428","full_name":"comet-ml/terraform-aws-comet","owner":"comet-ml","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-09T08:12:46.000Z","size":78059,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-07-11T00:25:54.815Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/comet-ml.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-06-07T02:42:49.000Z","updated_at":"2025-06-16T15:22:14.000Z","dependencies_parsed_at":"2023-08-24T20:38:11.719Z","dependency_job_id":"32151997-998b-4f7f-bebf-babc6d338490","html_url":"https://github.com/comet-ml/terraform-aws-comet","commit_stats":null,"previous_names":["comet-ml/terraform-aws-comet"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/comet-ml/terraform-aws-comet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fterraform-aws-comet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fterraform-aws-comet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fterraform-aws-comet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fterraform-aws-comet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/comet-ml","download_url":"https://codeload.github.com/comet-ml/terraform-aws-comet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comet-ml%2Fterraform-aws-comet/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265451443,"owners_count":23767768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T15:12:31.650Z","updated_at":"2025-07-15T18:33:03.103Z","avatar_url":"https://github.com/comet-ml.png","language":"HCL","funding_links":[],"categories":["HCL"],"sub_categories":[],"readme":"# Comet Infrastructure Deployment: Terraform on AWS\nTerraform module for deploying infrastructure components to run CometML.\n\n### Deployment\n**Prerequisites:**\n- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) installed\n- [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) installed\n  - Access to an AWS account and credentials that allow you to create resources\n  - Ensure `AWS_ACCESS_KEY_ID` and `AWS_SECRET_KEY_ID` environment variables are set in your session\n- [Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) installed\n\n**Infrastructure Deployment:**\n- Follow the steps below to deploy directly from the GitHub repository.\n  - Clone the repository to your local machine: `git clone https://github.com/comet-ml/terraform_aws_comet.git`\n  - Move into the deployment directory: `cd terraform-aws-comet`\n  - Initialize the directory: `terraform init`\n  - Within terraform.tfvars, set your module toggles to enable the desired infrastructure components and set any related inputs\n  - Provision the resources: `terraform apply`\n\n**A note on state management:**\n- This configuration stores the Terraform state locally by default. To store the state file remotely in S3, a `backend` block can be nested within the `terraform` block inside versions.tf if applying directly from this configuration, or within your `terraform` block if calling the module. Below is an example of such a configuration:\n```\nterraform {\n  backend \"s3\" {\n    bucket = \"mybucket\"\n    key    = \"path/to/my/key\"\n    region = \"us-east-1\"\n  }\n}\n```\n- More on state management in S3 can be found [here](https://developer.hashicorp.com/terraform/language/settings/backends/s3)\n\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.0 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | ~\u003e 5.1 |\n| \u003ca name=\"requirement_helm\"\u003e\u003c/a\u003e [helm](#requirement\\_helm) | ~\u003e 2.10 |\n| \u003ca name=\"requirement_kubernetes\"\u003e\u003c/a\u003e [kubernetes](#requirement\\_kubernetes) | ~\u003e 2.21 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | 5.8.0 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_comet_ec2\"\u003e\u003c/a\u003e [comet\\_ec2](#module\\_comet\\_ec2) | ./modules/comet_ec2 | n/a |\n| \u003ca name=\"module_comet_ec2_alb\"\u003e\u003c/a\u003e [comet\\_ec2\\_alb](#module\\_comet\\_ec2\\_alb) | ./modules/comet_ec2_alb | n/a |\n| \u003ca name=\"module_comet_eks\"\u003e\u003c/a\u003e [comet\\_eks](#module\\_comet\\_eks) | ./modules/comet_eks | n/a |\n| \u003ca name=\"module_comet_elasticache\"\u003e\u003c/a\u003e [comet\\_elasticache](#module\\_comet\\_elasticache) | ./modules/comet_elasticache | n/a |\n| \u003ca name=\"module_comet_rds\"\u003e\u003c/a\u003e [comet\\_rds](#module\\_comet\\_rds) | ./modules/comet_rds | n/a |\n| \u003ca name=\"module_comet_s3\"\u003e\u003c/a\u003e [comet\\_s3](#module\\_comet\\_s3) | ./modules/comet_s3 | n/a |\n| \u003ca name=\"module_comet_vpc\"\u003e\u003c/a\u003e [comet\\_vpc](#module\\_comet\\_vpc) | ./modules/comet_vpc | n/a |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_eks_cluster_auth.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_cluster_auth) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_availability_zones\"\u003e\u003c/a\u003e [availability\\_zones](#input\\_availability\\_zones) | List of availability zones from region | `list(string)` | `null` | no |\n| \u003ca name=\"input_comet_ec2_ami_type\"\u003e\u003c/a\u003e [comet\\_ec2\\_ami\\_type](#input\\_comet\\_ec2\\_ami\\_type) | Operating system type for the EC2 instance AMI | `string` | `\"ubuntu22\"` | no |\n| \u003ca name=\"input_comet_ec2_instance_count\"\u003e\u003c/a\u003e [comet\\_ec2\\_instance\\_count](#input\\_comet\\_ec2\\_instance\\_count) | Number of EC2 instances to provision | `number` | `1` | no |\n| \u003ca name=\"input_comet_ec2_instance_type\"\u003e\u003c/a\u003e [comet\\_ec2\\_instance\\_type](#input\\_comet\\_ec2\\_instance\\_type) | Instance type for the EC2 instance | `string` | `\"m5.4xlarge\"` | no |\n| \u003ca name=\"input_comet_ec2_key\"\u003e\u003c/a\u003e [comet\\_ec2\\_key](#input\\_comet\\_ec2\\_key) | Name of the SSH key to configure on the EC2 instance | `string` | `null` | no |\n| \u003ca name=\"input_comet_ec2_volume_size\"\u003e\u003c/a\u003e [comet\\_ec2\\_volume\\_size](#input\\_comet\\_ec2\\_volume\\_size) | Size, in gibibytes (GiB), for the EC2 instance root volume | `number` | `1024` | no |\n| \u003ca name=\"input_comet_ec2_volume_type\"\u003e\u003c/a\u003e [comet\\_ec2\\_volume\\_type](#input\\_comet\\_ec2\\_volume\\_type) | EBS volume type for the EC2 instance root volume | `string` | `\"gp2\"` | no |\n| \u003ca name=\"input_comet_private_subnets\"\u003e\u003c/a\u003e [comet\\_private\\_subnets](#input\\_comet\\_private\\_subnets) | List of private subnets IDs from existing VPC to provision resources in | `list(string)` | `null` | no |\n| \u003ca name=\"input_comet_public_subnets\"\u003e\u003c/a\u003e [comet\\_public\\_subnets](#input\\_comet\\_public\\_subnets) | List of public subnets IDs from existing VPC to provision resources in | `list(string)` | `null` | no |\n| \u003ca name=\"input_comet_vpc_id\"\u003e\u003c/a\u003e [comet\\_vpc\\_id](#input\\_comet\\_vpc\\_id) | ID of an existing VPC to provision resources in | `string` | `null` | no |\n| \u003ca name=\"input_eks_aws_cloudwatch_metrics\"\u003e\u003c/a\u003e [eks\\_aws\\_cloudwatch\\_metrics](#input\\_eks\\_aws\\_cloudwatch\\_metrics) | Enables AWS Cloudwatch Metrics in the EKS cluster | `bool` | `true` | no |\n| \u003ca name=\"input_eks_aws_load_balancer_controller\"\u003e\u003c/a\u003e [eks\\_aws\\_load\\_balancer\\_controller](#input\\_eks\\_aws\\_load\\_balancer\\_controller) | Enables the AWS Load Balancer Controller in the EKS cluster | `bool` | `true` | no |\n| \u003ca name=\"input_eks_cert_manager\"\u003e\u003c/a\u003e [eks\\_cert\\_manager](#input\\_eks\\_cert\\_manager) | Enables cert-manager in the EKS cluster | `bool` | `false` | no |\n| \u003ca name=\"input_eks_cluster_name\"\u003e\u003c/a\u003e [eks\\_cluster\\_name](#input\\_eks\\_cluster\\_name) | Name for EKS cluster | `string` | `\"comet-eks\"` | no |\n| \u003ca name=\"input_eks_cluster_version\"\u003e\u003c/a\u003e [eks\\_cluster\\_version](#input\\_eks\\_cluster\\_version) | Kubernetes version of the EKS cluster | `string` | `\"1.27\"` | no |\n| \u003ca name=\"input_eks_external_dns\"\u003e\u003c/a\u003e [eks\\_external\\_dns](#input\\_eks\\_external\\_dns) | Enables ExternalDNS in the EKS cluster | `bool` | `false` | no |\n| \u003ca name=\"input_eks_external_dns_r53_zones\"\u003e\u003c/a\u003e [eks\\_external\\_dns\\_r53\\_zones](#input\\_eks\\_external\\_dns\\_r53\\_zones) | Route 53 zones for external-dns to have access to | `list(string)` | \u003cpre\u003e[\u003cbr\u003e  \"arn:aws:route53:::hostedzone/XYZ\"\u003cbr\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_eks_mng_ami_type\"\u003e\u003c/a\u003e [eks\\_mng\\_ami\\_type](#input\\_eks\\_mng\\_ami\\_type) | AMI family to use for the EKS nodes | `string` | `\"AL2_x86_64\"` | no |\n| \u003ca name=\"input_eks_mng_desired_size\"\u003e\u003c/a\u003e [eks\\_mng\\_desired\\_size](#input\\_eks\\_mng\\_desired\\_size) | Desired number of nodes in EKS cluster | `number` | `3` | no |\n| \u003ca name=\"input_eks_mng_disk_size\"\u003e\u003c/a\u003e [eks\\_mng\\_disk\\_size](#input\\_eks\\_mng\\_disk\\_size) | Size of the storage disks for nodes in EKS cluster | `number` | `500` | no |\n| \u003ca name=\"input_eks_mng_max_size\"\u003e\u003c/a\u003e [eks\\_mng\\_max\\_size](#input\\_eks\\_mng\\_max\\_size) | Maximum number of nodes in EKS cluster | `number` | `6` | no |\n| \u003ca name=\"input_eks_mng_name\"\u003e\u003c/a\u003e [eks\\_mng\\_name](#input\\_eks\\_mng\\_name) | Name for the EKS managed nodegroup | `string` | `\"mng\"` | no |\n| \u003ca name=\"input_eks_node_types\"\u003e\u003c/a\u003e [eks\\_node\\_types](#input\\_eks\\_node\\_types) | Node instance types for EKS managed node group | `list(string)` | \u003cpre\u003e[\u003cbr\u003e  \"m5.4xlarge\"\u003cbr\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_elasticache_allow_from_sg\"\u003e\u003c/a\u003e [elasticache\\_allow\\_from\\_sg](#input\\_elasticache\\_allow\\_from\\_sg) | Security group from which to allow connections to ElastiCache, to use when provisioning with existing compute | `string` | `null` | no |\n| \u003ca name=\"input_elasticache_auth_token\"\u003e\u003c/a\u003e [elasticache\\_auth\\_token](#input\\_elasticache\\_auth\\_token) | Auth token for ElastiCache | `string` | `null` | no |\n| \u003ca name=\"input_elasticache_engine\"\u003e\u003c/a\u003e [elasticache\\_engine](#input\\_elasticache\\_engine) | Engine type for ElastiCache cluster | `string` | `\"redis\"` | no |\n| \u003ca name=\"input_elasticache_engine_version\"\u003e\u003c/a\u003e [elasticache\\_engine\\_version](#input\\_elasticache\\_engine\\_version) | Version number for ElastiCache engine | `string` | `\"7.1.0\"` | no |\n| \u003ca name=\"input_elasticache_instance_type\"\u003e\u003c/a\u003e [elasticache\\_instance\\_type](#input\\_elasticache\\_instance\\_type) | ElastiCache instance type | `string` | `\"cache.r4.xlarge\"` | no |\n| \u003ca name=\"input_elasticache_num_cache_nodes\"\u003e\u003c/a\u003e [elasticache\\_num\\_cache\\_nodes](#input\\_elasticache\\_num\\_cache\\_nodes) | Number of nodes in the ElastiCache cluster | `number` | `1` | no |\n| \u003ca name=\"input_elasticache_param_group_name\"\u003e\u003c/a\u003e [elasticache\\_param\\_group\\_name](#input\\_elasticache\\_param\\_group\\_name) | Name for the ElastiCache cluster parameter group | `string` | `\"default.redis5.0\"` | no |\n| \u003ca name=\"input_elasticache_transit_encryption\"\u003e\u003c/a\u003e [elasticache\\_transit\\_encryption](#input\\_elasticache\\_transit\\_encryption) | Enable transit encryption for ElastiCache | `bool` | `false` | no |\n| \u003ca name=\"input_enable_ec2\"\u003e\u003c/a\u003e [enable\\_ec2](#input\\_enable\\_ec2) | Toggles the comet\\_ec2 module, to provision EC2 resources for running Comet | `bool` | n/a | yes |\n| \u003ca name=\"input_enable_ec2_alb\"\u003e\u003c/a\u003e [enable\\_ec2\\_alb](#input\\_enable\\_ec2\\_alb) | Toggles the comet\\_ec2\\_alb module, to provision an ALB in front of the EC2 instance | `bool` | n/a | yes |\n| \u003ca name=\"input_enable_eks\"\u003e\u003c/a\u003e [enable\\_eks](#input\\_enable\\_eks) | Toggles the comet\\_eks module, to provision EKS resources for running Comet | `bool` | n/a | yes |\n| \u003ca name=\"input_enable_elasticache\"\u003e\u003c/a\u003e [enable\\_elasticache](#input\\_enable\\_elasticache) | Toggles the comet\\_elasticache module for provisioning Comet Redis on elasticache | `bool` | n/a | yes |\n| \u003ca name=\"input_enable_rds\"\u003e\u003c/a\u003e [enable\\_rds](#input\\_enable\\_rds) | Toggles the comet\\_rds module for provisioning Comet RDS database | `bool` | n/a | yes |\n| \u003ca name=\"input_enable_s3\"\u003e\u003c/a\u003e [enable\\_s3](#input\\_enable\\_s3) | Toggles the comet\\_s3 module for provisioning Comet S3 bucket | `bool` | n/a | yes |\n| \u003ca name=\"input_enable_vpc\"\u003e\u003c/a\u003e [enable\\_vpc](#input\\_enable\\_vpc) | Toggles the comet\\_vpc module, to provision a new VPC for hosting the Comet resources | `bool` | n/a | yes |\n| \u003ca name=\"input_environment\"\u003e\u003c/a\u003e [environment](#input\\_environment) | Deployment environment, i.e. dev/stage/prod, etc | `string` | `\"dev\"` | no |\n| \u003ca name=\"input_rds_allow_from_sg\"\u003e\u003c/a\u003e [rds\\_allow\\_from\\_sg](#input\\_rds\\_allow\\_from\\_sg) | Security group from which to allow connections to RDS, to use when provisioning with existing compute | `string` | `null` | no |\n| \u003ca name=\"input_rds_backup_retention_period\"\u003e\u003c/a\u003e [rds\\_backup\\_retention\\_period](#input\\_rds\\_backup\\_retention\\_period) | Days specified for RDS snapshotretention period | `number` | `7` | no |\n| \u003ca name=\"input_rds_database_name\"\u003e\u003c/a\u003e [rds\\_database\\_name](#input\\_rds\\_database\\_name) | Name for the application database in RDS | `string` | `\"logger\"` | no |\n| \u003ca name=\"input_rds_engine\"\u003e\u003c/a\u003e [rds\\_engine](#input\\_rds\\_engine) | Engine type for RDS database | `string` | `\"aurora-mysql\"` | no |\n| \u003ca name=\"input_rds_engine_version\"\u003e\u003c/a\u003e [rds\\_engine\\_version](#input\\_rds\\_engine\\_version) | Engine version number for RDS database | `string` | `\"5.7\"` | no |\n| \u003ca name=\"input_rds_iam_db_auth\"\u003e\u003c/a\u003e [rds\\_iam\\_db\\_auth](#input\\_rds\\_iam\\_db\\_auth) | Enables IAM auth for the database in RDS | `bool` | `true` | no |\n| \u003ca name=\"input_rds_instance_count\"\u003e\u003c/a\u003e [rds\\_instance\\_count](#input\\_rds\\_instance\\_count) | Number of RDS instances in the database cluster | `number` | `2` | no |\n| \u003ca name=\"input_rds_instance_type\"\u003e\u003c/a\u003e [rds\\_instance\\_type](#input\\_rds\\_instance\\_type) | Instance type for RDS database | `string` | `\"db.r5.xlarge\"` | no |\n| \u003ca name=\"input_rds_preferred_backup_window\"\u003e\u003c/a\u003e [rds\\_preferred\\_backup\\_window](#input\\_rds\\_preferred\\_backup\\_window) | Backup window for RDS | `string` | `\"07:00-09:00\"` | no |\n| \u003ca name=\"input_rds_root_password\"\u003e\u003c/a\u003e [rds\\_root\\_password](#input\\_rds\\_root\\_password) | Root password for RDS database | `string` | n/a | yes |\n| \u003ca name=\"input_rds_storage_encrypted\"\u003e\u003c/a\u003e [rds\\_storage\\_encrypted](#input\\_rds\\_storage\\_encrypted) | Enables encryption for RDS storage | `bool` | `true` | no |\n| \u003ca name=\"input_region\"\u003e\u003c/a\u003e [region](#input\\_region) | AWS region to provision resources in | `string` | n/a | yes |\n| \u003ca name=\"input_s3_bucket_name\"\u003e\u003c/a\u003e [s3\\_bucket\\_name](#input\\_s3\\_bucket\\_name) | Name for S3 bucket | `string` | n/a | yes |\n| \u003ca name=\"input_single_nat_gateway\"\u003e\u003c/a\u003e [single\\_nat\\_gateway](#input\\_single\\_nat\\_gateway) | Controls whether single NAT gateway used for all public subnets | `bool` | `true` | no |\n| \u003ca name=\"input_ssl_certificate_arn\"\u003e\u003c/a\u003e [ssl\\_certificate\\_arn](#input\\_ssl\\_certificate\\_arn) | ARN of the ACM certificate to use for the ALB | `string` | `null` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_comet_alb_dns_name\"\u003e\u003c/a\u003e [comet\\_alb\\_dns\\_name](#output\\_comet\\_alb\\_dns\\_name) | DNS name of the ALB fronting the Comet EC2 instance |\n| \u003ca name=\"output_comet_ec2_instance\"\u003e\u003c/a\u003e [comet\\_ec2\\_instance](#output\\_comet\\_ec2\\_instance) | ID of the Comet EC2 instance |\n| \u003ca name=\"output_comet_ec2_public_ip\"\u003e\u003c/a\u003e [comet\\_ec2\\_public\\_ip](#output\\_comet\\_ec2\\_public\\_ip) | EIP associated with the Comet EC2 instance |\n| \u003ca name=\"output_configure_kubectl\"\u003e\u003c/a\u003e [configure\\_kubectl](#output\\_configure\\_kubectl) | Configure kubectl: run the following command to update your kubeconfig with the newly provisioned cluster. |\n| \u003ca name=\"output_mysql_host\"\u003e\u003c/a\u003e [mysql\\_host](#output\\_mysql\\_host) | Endpoint for the RDS instance |\n| \u003ca name=\"output_region\"\u003e\u003c/a\u003e [region](#output\\_region) | Region resources are provisioned in |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomet-ml%2Fterraform-aws-comet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcomet-ml%2Fterraform-aws-comet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomet-ml%2Fterraform-aws-comet/lists"}