Tool Comparison: Overmind vs Amazon Q Developer

James Lane
October 24, 2024

Introduction

In this blog post, we will compare two AI-powered tools known for generating Terraform code: Overmind and Amazon Q Developer. Both these tools can be used to help assist DevOps engineers by producing, maintainable code for infrastructure management. We will explore the unique capabilities, pricing, code quality, and offer a recommendation based on different user needs.

Capabilities

Overmind:

  • Part of a broader interactive assistant toolset, with Terraform generation being just one of its features.
  • Capable of generating customised Terraform configurations and translating existing AWS resources into Terraform code, ensuring all dependencies are considered.
  • Offers additional functionalities like assessing risks associated with cloud changes and aiding in troubleshooting incidents, making it a versatile tool for managing cloud environments.

Amazon Q Developer:

  • Provides real-time code suggestions and can generate full Terraform configurations.
  • Supports integration with popular Integrated Development Environments (IDEs) such as Visual Studio Code, JetBrains, and Visual Studio, enhancing the development experience by offering features directly within these platforms.
  • Delivers modular designs and encompasses a complete setup with VPC, subnets, IAM roles, and CloudWatch logging.
  • Focuses on dynamic configurations with a deeper level of integration into AWS services.

Pricing

  • Overmind:
    • Free of charge for unlimited assistant use.
  • Amazon Q Developer:
    • Free tier limited to 50 interactions per month.
      • $19 per month for the pro tier, subject to usage limits.

Results

Overmind

Overmind excels in discovering and accurately translating existing AWS resources into Terraform configurations, making it ideal for complex scenarios where existing infrastructure needs to be managed effectively. For instance, Overmind successfully identified and included various AWS resources along with their interdependencies:

resource "aws_instance" "arm_instance" {
 ami                         = "ami-0047583bbf9a6fdb7"
 instance_type               = "t4g.medium"
 tags = {
   Name                      = "arm"
   aws:ec2launchtemplate:id  = "lt-09482971fcfcabd67"
 }
 iam_instance_profile        = "eks-bec76381-5b85-12e0-0ba0-951a2f314fda"
}

Amazon Q Developer

Amazon Q Developer produced a comprehensive EKS setup, effectively utilizing modular design principles and enabling detailed logging:

resource "aws_eks_cluster" "eks_cluster" {
 name     = "my-eks-cluster"
 vpc_config {
   subnet_ids = aws_subnet.eks_subnet[*].id
 }
 enabled_cluster_log_types = ["api", "audit"]
}

Cons of Amazon Q Developer's Configuration:

  • The setup omits Internet Gateways (IGWs) and NAT Gateways (NATs) which are essential for a fully functional VPC network. For example, lacking a configuration like:
  • resource "aws_internet_gateway" "igw" {
     vpc_id = aws_vpc.eks_vpc.id
    }

  • Uses hardcoded values instead of leveraging variables to increase flexibility. Could improve with:
  • variable "region" {
     default = "us-west-2"
    }

  • Limited tagging on resources:
  • tags = { Name = "eks-vpc" }

  • Additional tags for better resource identification and management would be beneficial.
  • Minimal IAM policy attachments limit operations that require broader permission sets. Example of missing policy:
  • resource "aws_iam_role_policy_attachment" "eks_custom_policy" {
     policy_arn = "arn:aws:iam::aws:policy/CustomPolicy"
     role       = aws_iam_role.eks_cluster_role.name
    }

For more detailed code snippets and methodologies used in these tests, please refer to the GitHub repository containing all test results.

Conclusion & Recommendation

For DevOps users seeking a tool to bring existing infrastructure under Terraform management, Overmind is the only tool that can discover and convert unmanaged AWS resources into Terraform code. Additionally, its ability to assess risks associated with cloud changes and offer troubleshooting support makes it ideal for complex cloud environment management.

Conversely, Amazon Q Developer suits users who prefer a more structured, ready-to-deploy setup with dynamic AWS integrations. It offers real-time suggestions and modular design strengths, making it ideal for quick deployments and projects where fine-tuning networking or scalability parameters aren’t a primary focus.