Infrastructure as Code Services

Infrastructure as Code services that make your cloud something you can review, repeat and trust

Softfix is an Infrastructure as Code company in India. We take the servers, networks and databases your team clicked together over the years and turn them into Terraform code that lives in Git, goes through review and rebuilds the same way every time.

Terraform · OpenTofu Pulumi · AWS CDK CloudFormation AWS Azure Google Cloud
envs/prod/main.tf
No changes
terraform {
  backend "s3" {
    bucket       = "acme-tf-state"
    key          = "prod/network.tfstate"
    region       = "ap-south-1"
    encrypt      = true
    use_lockfile = true   # state locking
  }
}

module "network" {
  source  = "git::ssh://git@github.com/acme/tf-modules.git//vpc?ref=v2.3.0"
  env     = "prod"
  cidr    = "10.20.0.0/16"

  tags = {
    owner       = "platform-team"
    cost_centre = "CC-104"
  }
}
Before vs After

From snowflake servers to infrastructure you can rebuild in an afternoon

A snowflake server is one nobody dares to touch, because nobody remembers exactly how it was set up. Most cloud accounts have a few. Here's what changes once everything is code.

Clicking in the console

  • Resources set up by hand, with steps that live in someone's head
  • Staging and production slowly drift apart
  • Nobody can say who changed a security group, or when
  • Rebuilding after an outage means guesswork
  • Tags are missing, so the cloud bill is hard to explain

With Infrastructure as Code

  • Declarative infrastructure: the code describes what should exist, and the tool makes it so
  • Every change goes through a pull request review before it's applied
  • Pipeline-driven provisioning means people don't apply changes from laptops
  • Immutable infrastructure replaces servers instead of patching them in place
  • Tagging policies run on every plan, so costs map to teams
Terraform Development Services

Terraform development services and IaC implementation

Whether you're writing your first module or untangling five years of hand-built cloud, our Infrastructure as Code consulting covers it.

Terraform module development

We write reusable modules for the things you build again and again, such as networks, clusters and databases. Each one is versioned, documented and tested, so teams can use them without reading the source.

OpenTofu migration and import of existing infrastructure

We move Terraform code and state to OpenTofu safely, and bring resources that were created by hand under code management without recreating them.

AWS CDK and Pulumi development

If your team would rather write infrastructure in TypeScript, Python or Go, we build with AWS CDK or Pulumi and set up the same review and testing habits.

CloudFormation template development

For AWS-only shops that prefer native tooling, we write and tidy up CloudFormation templates and StackSets, and split large stacks into manageable pieces.

Sentinel policy as code implementation

On HCP Terraform or Terraform Enterprise, we write Sentinel policies that check every plan, for example blocking public buckets or oversized instances.

Infrastructure drift detection and remediation

Scheduled plans spot changes made outside of code and alert your team. We then either bring the code in line or roll the change back, depending on which one was right.

Terraform remote state and CI/CD pipeline setup

State gets stored remotely with locking and encryption. Plans run on every pull request, and applies only happen from the pipeline after approval.

Infrastructure compliance scanning

Tools like Checkov and Trivy scan your code for risky settings before anything is created. Findings show up as comments on the pull request.

Landing zone automation on AWS

A multi-account AWS setup with guardrails, central logging and account vending, built with Control Tower and Account Factory for Terraform.

Multi-cloud infrastructure automation

Shared module patterns across AWS, Azure and Google Cloud, so your team learns one way of working, whichever provider a project ends up on.

Tool Comparison

Terraform vs CloudFormation vs Pulumi: which should I choose?

All three can manage serious production setups. The choice mostly comes down to which clouds you use and what your team is comfortable writing.

Point of comparison Terraform / OpenTofu AWS CloudFormation Pulumi
Language HCL, a simple declarative language YAML or JSON (or AWS CDK on top) TypeScript, Python, Go, C# or Java
Clouds AWS, Azure, Google Cloud and thousands of other providers AWS only AWS, Azure, Google Cloud and many others
State A state file you store remotely Managed by AWS, no file to look after Pulumi Cloud or your own backend
Hiring and community Largest pool of people and modules Common in AWS-focused teams Smaller, but popular with developers
Best for Most teams, especially multi-cloud AWS-only teams that want native support Developer-led teams who want loops, tests and types

Verdict: Where we land for most clients: Terraform or OpenTofu, because it covers every cloud and it's easy to find people who know it. If you're fully on AWS and like staying native, CloudFormation with CDK is perfectly sound.

OpenTofu vs Terraform

OpenTofu vs Terraform: should I migrate?

In 2023 HashiCorp moved Terraform to the Business Source License. OpenTofu started as an open-source fork under the Linux Foundation. The two still look very alike, though they're slowly growing apart.

Stay on Terraform if

You use HCP Terraform or Terraform Enterprise, depend on Sentinel, or your legal team is fine with the licence. There's no urgent reason to move if things are working.

Watch out for: licence terms if you build a product that competes with HashiCorp's, now part of IBM.

Move to OpenTofu if

You want an open-source licence with community governance, or features like built-in state encryption. For most codebases the switch is small: swap the binary, test a plan, carry on.

Watch out for: newer Terraform-only features and provider versions, which we check before any move.

Drift Detection

How to detect and fix configuration drift

Configuration drift is the gap between what your code says and what's actually running. It usually starts with a quick fix in the console. Try it below.

Interactive Drift Demo

What the code says

  • instance: t3.medium
  • port 22: closed
  • tag owner: platform-team

What's running

  • instance: t3.medium
  • port 22: closed
  • tag owner: platform-team

$ terraform plan

No changes. Your infrastructure matches the configuration.

Detect it on a schedule

A pipeline job runs terraform plan -refresh-only every night against each environment. If anything has changed, your team gets a message in Slack or Teams.

Decide which side is right

Sometimes the console change was a real emergency fix, and the code should be updated to match. Other times it was a mistake that needs reverting.

Stop it at the source

Read-only console access for most people, plus pipeline-only applies, means drift becomes rare rather than routine.

Implementation

How to implement Infrastructure as Code in an existing cloud environment

You don't need to tear anything down. This is how we bring a live, hand-built environment under code, including how to import existing AWS and Azure resources into Terraform.

Step 1 — Take stock

We list every resource across your accounts or subscriptions and group them by application and environment.

Step 2 — Generate a starting point

For AWS we use Terraform import blocks with generated config. For Azure, Microsoft's aztfexport tool does much of the first pass.

Step 3 — Clean it up

Generated code is messy. We tidy it into modules, remove hard-coded values and add variables per environment.

Step 4 — Prove zero changes

We keep adjusting until terraform plan shows nothing to change. That's how we know code and cloud match.

Step 5 — Switch to code-only

From here, changes go through pull requests and the pipeline. Console access is narrowed to stop new drift.

Remote State

How to set up Terraform remote state and locking

The state file is how Terraform knows what it manages. Keep it on a laptop and you'll eventually lose it or overwrite a colleague's changes. Remote state with locking stops both.

On AWS

An encrypted, versioned S3 bucket. Recent Terraform and OpenTofu versions can lock state in S3 itself with use_lockfile, so a separate DynamoDB table is no longer required.

On Azure

A storage account blob container. Locking uses blob leases automatically, and access can be limited with Entra ID roles.

On Google Cloud

A Cloud Storage bucket with versioning switched on. Locking is built in, with no extra setup.

On HCP Terraform

State, locking, run history and policies in one hosted service, with workspaces for each environment.

Additional note: We split state by environment and by area, such as network, data and apps, so a mistake in one place can't affect everything. Bucket versioning means any state file can be rolled back.

Best Practices

Terraform module best practices for multi-environment setups

Good modules make dev, staging and production look the same apart from size. These are the rules we follow, and they apply equally to multi-cloud Terraform modules for AWS, Azure and Google Cloud.

One folder per environment, one set of modules

Each environment calls the same reusable modules with its own variables. No copy-pasted code.

Version every module

Environments pin a tag, so a module update reaches staging first and production only when you're ready.

Keep modules small

A module should do one job. Huge modules are hard to test and slow to plan.

Choose workspaces carefully

Workspaces suit identical copies, like per-developer sandboxes. For real environments, separate folders and state are clearer.

Test before release

We use terraform test or Terratest to check modules create what they promise.

Same inputs across clouds

Where it makes sense, AWS, Azure and GCP modules share variable names, so switching provider feels familiar.

Policy as Code

Policy as code with OPA for Terraform

Policy as code checks each plan against your rules before anything is created. It turns a security review from a meeting into an automatic step.

Open Policy Agent (OPA)

We write rules in Rego and run them with Conftest against the plan output in your pipeline. It works with Terraform, OpenTofu or anything else that produces JSON, and costs nothing to run.

Example rule: every resource must carry owner and cost centre tags.

Compliance as code

Scanners like Checkov map findings to frameworks such as CIS, SOC 2 and HIPAA. Combined with tagging policies and pull request checks, you get audit evidence as a side effect of normal work.

Example rule: storage must be encrypted, and no database can be public.

Who We Work With

Cloud infrastructure automation services for different teams

Infrastructure as Code for HIPAA

Healthcare teams get encryption, private networking, logging and access controls written into every module, with scans that check HIPAA safeguards on each change.

Startups

Starting with code from day one costs very little and saves a painful clean-up later. We'll set up a small, tidy foundation you can grow on.

Enterprises

A shared module library, landing zones and policy checks give central teams control while product teams move at their own pace.

Teams on more than one cloud

Common patterns and naming across AWS, Azure and Google Cloud, with one pipeline that plans and applies for all of them.

Pricing

How much does Terraform consulting cost?

Cost depends mainly on how much infrastructure you have, how many clouds and accounts are involved, and whether we're starting fresh or importing what already exists. You'll get a fixed quote before we begin.

IaC review

[PRICE] one-time

We go through your current code, state setup and cloud accounts, then send back a prioritised plan.

  • Code, module and state review
  • Drift and security scan
  • Written list of fixes
Featured IaC implementation services

[PRICE] per project

We write or import your infrastructure as code and set up the pipeline around it.

  • Modules, environments and remote state
  • Import of existing resources
  • Policy checks and team training
Cloud infrastructure management

[PRICE] per month

We look after your code and cloud each month, including drift checks and module updates.

  • Nightly drift detection
  • Provider and module upgrades
  • Changes on request through pull requests
FAQ

Questions about Infrastructure as Code

Can you bring our existing cloud under Terraform without downtime?
Yes. Importing only changes how resources are tracked. Nothing gets recreated, and we confirm that with a plan showing zero changes before anyone applies anything.
Which tool should we use?
For most teams, Terraform or OpenTofu. If you're only on AWS and your team likes native tools, CloudFormation with CDK is a good fit. Developer-heavy teams sometimes prefer Pulumi. We'll explain the trade-offs for your case.
What happens if someone changes something in the console?
Scheduled drift checks will catch it and alert your team. Then you decide whether to keep the change by updating the code, or undo it by applying the code again.
How long does an IaC project take?
A new, small environment can be coded in [a couple of weeks]. Importing a large existing setup across many accounts takes longer and usually happens one application at a time.
Will our team be able to maintain the code?
That's the point. Modules come with examples and docs, and we run sessions where your engineers make real changes through the pipeline before we hand over.
Do you work with Ansible as well?
Yes. Terraform creates the infrastructure, and Ansible is still handy for configuring what runs inside servers that can't be replaced. Where possible, we prefer baking images so servers stay immutable.
Free IaC review

Tell us about your infrastructure.

Tell us which cloud you're on and how much of it is already in code. One of our engineers will look it over and tell you where to start.

Email

sales@softfix.in

Phone

+91 81890 10044

Address

1st Floor, CP/140, Viraj Khand-4, Gomti Nagar, Lucknow, Uttar Pradesh 226010

NDA on request. Your data is never shared.

Call WhatsApp