Skip to content
Suiunbek Isaev
All case studies

Case study

Enterprise Infrastructure Self-Service with AAP + Terraform

Application teams provide controlled inputs, and automation provisions standardized AWS infrastructure through Terraform Enterprise.

Result
Routine AWS provisioning moved from tickets to governed self-service
Role
Built and maintain
Where
Discover Financial Services / Capital One · 2020 – Present
Key stack
Ansible Automation Platform · Terraform Enterprise · Terraform modules · S3 remote state

Sanitized case study based on professional experience. Internal names, accounts, hostnames and configurations are intentionally omitted.

01Problem

When application teams asked for infrastructure through tickets and manual provisioning, delivery was slow, results varied from one engineer to another, and it was hard to prove every resource met the same standards.

02Context

The platform team handles a steady flow of 30–40 infrastructure requests and incidents each week. Many requests are repeatable: EC2 instances, IAM roles and policies, ALB target groups and other approved AWS services.

03Architecture

Sanitized conceptual architecture based on professional experience.

How it works

  • Teams request infrastructure through an AAP survey attached to a job template. The survey accepts a limited, validated set of inputs instead of free-form requests.
  • The job passes those inputs to Terraform Enterprise, which runs reviewed, reusable modules.
  • Terraform state lives in an S3 remote backend, so every change is tracked and repeatable.
  • IAM and security controls act as guardrails, limiting which resources can be created and how.

04Engineering approach

  1. Identified the repeatable request types and turned each into a standardized input contract.
  2. Put provisioning logic in reusable Terraform modules, so every request produces the same shape of resource.
  3. Used AAP job templates and surveys as the front door, which gives teams a consistent interface and gives the platform team role-based control over who can run what.
  4. Integrated AAP with Terraform Enterprise, so runs are logged and auditable.

05Security

  • Inputs are constrained and validated, and teams cannot pass arbitrary resource definitions.
  • Credentials are stored and injected by the platform instead of being handled by requesters.
  • IAM guardrails and approved-service lists bound what can be provisioned.
  • Internal survey names, role names, accounts and policies are deliberately omitted here.

06Automation

  • Request-to-resource workflow with no manual console steps.
  • Reusable modules shared across request types.
  • Remote state enables safe updates and teardown.

07Results

  • Routine provisioning moved from manual work to a repeatable self-service path.
  • Resources are created consistently from the same reviewed modules.
  • Engineering time shifted from repetitive requests toward platform improvements.

08Lessons learned

  • A narrow, well-validated input contract matters more than a flexible one.
  • Self-service only scales when guardrails are enforced by the platform, not by reviewers.

09Skills & technologies

Self-service platform designTerraformAAPAWS IAMGuardrails
Ansible Automation PlatformTerraform EnterpriseTerraform modulesS3 remote stateAWS EC2IAMALB target groups