Adopt Terraform & Infrastructure as Code
Get the AWS and Azure infrastructure you already run into Terraform or Bicep without rebuilding it, so every change is versioned, reviewed, and repeatable.
Shane Schlabach · AWS Solutions Architect – Professional · 12+ years in AWS & Azure · Remote across the US





Overview
Most infrastructure doesn't start as code. It starts as a console click or a script run under pressure during an incident, and bringing it under management doesn't mean recreating it from scratch. I use Terraform's import blocks or Bicep's equivalent tooling to bring infrastructure that's already live under Infrastructure as Code (IaC) management, with no downtime or disruption.
Terraform and IaC services include
- Importing existing resources: Bring console-built VPCs, VNets, IAM, databases, and compute under Terraform or Bicep, verified with a clean plan so nothing is recreated or changed unexpectedly.
- Module and repository design: Structure code into reusable modules and clear per-environment configurations, so dev, staging, and production stay consistent without copy-and-paste.
- State management: Set up remote state with locking and encryption in S3 or Azure Storage, split state sensibly by environment and blast radius, and refactor existing state safely when it has grown unwieldy.
- Drift detection and cleanup: Find where live infrastructure no longer matches the code, reconcile the differences, and put checks in place so manual changes are caught early.
- Reviewed, safe changes: Run plans through pull request review before anything is applied, with policy and security checks that catch risky changes before they reach production.
- Upgrades and standards: Upgrade Terraform and provider versions, pin dependencies, and apply consistent naming, tagging, and documentation across the codebase.
I work in Terraform across AWS and Azure, and in Bicep for teams that prefer to stay native to Azure. If you already have a codebase that has become hard to change, I'll work with what's there rather than starting over.
What you're left with is infrastructure I can hand off with confidence: version-controlled, reviewable, repeatable, and independent of any one person remembering how something was originally set up.
Selected work
Examples from enterprise production environments I've led. Client names are kept private.
Import live AWS services into Terraform
- Problem
- Production AWS infrastructure had been built and modified by hand, making it hard to review, reproduce, or hand off.
- What I did
- Imported the live environment into Terraform, organized it into reusable modules, added Checkov security scanning, and rolled out AWS best-practice settings, including encryption, tighter access controls, and logging.
- Result
- Every infrastructure change and new service now goes through version-controlled code: reviewable, repeatable, and easy to hand off.
Set up Jenkins pipelines with gated production deploys
- Problem
- Releases were manual, and no one could easily tell which version was running in each environment.
- What I did
- Set up Jenkins on AWS with pipelines that build on every push, store artifacts in Amazon S3, and deploy with AWS Systems Manager: straight to QA, with an approval gate before production.
- Result
- Standardized deployments across environments, a clear view of what runs where, and rollback by redeploying any previous build.
Deploy a SaaS platform on Azure with Bicep
- Problem
- A SaaS product needed its Azure services (App Service web apps, Function Apps, Azure SQL, Storage, and Key Vault) deployed consistently and securely.
- What I did
- Defined everything in Bicep, with managed identities for app access, RBAC role assignments alongside the resources, and secrets centralized in Key Vault.
- Result
- The proof of concept moved to production with VNet integration and private endpoints through reviewed template changes, not a manual rebuild, and every environment deploys the same way.
How engagements work
Every engagement starts with a free, no-obligation conversation. Project work is $150/hour with scope agreed up front, or ongoing care as a monthly managed service.
- 1
Discovery
What you run today, where it hurts, and what “done” looks like.
- 2
Plan
A written roadmap: options, sequence, and what I would touch first.
- 3
Build
Infrastructure, automation, and security — as code, in your accounts.
- 4
Support
Monitor, patch, and keep changing it as the workload changes.
Common questions
Do we have to rebuild our infrastructure to use Terraform?
No. Existing resources are imported into Terraform or Bicep in place. The goal is a plan that shows no changes, which confirms the code matches what's already running before anything new is managed through it.
Terraform or Bicep?
Terraform if you run AWS, multiple clouds, or want one tool for everything. Bicep is a good fit for Azure-only teams that want to stay close to native Azure tooling. I'll recommend one based on your environment and team, not a preference.
Can you fix an existing Terraform codebase?
Yes. That includes refactoring into modules, splitting or moving state, resolving drift, and upgrading old Terraform and provider versions without disrupting what's deployed.
Who will I be working with?
Me, Shane Schlabach. The person on the first call is the person doing the work. There are no account managers and no handoffs to junior staff.
How much does it cost?
Project work is $150/hour, with scope and a plan agreed before work starts. Managed service starts at $2,000/month and is scoped after a review of your environment.
Do you work with companies outside Ohio?
Yes. I'm based in Cincinnati, Ohio and work remotely with teams across the United States.
Who owns the code and documentation?
You do. Everything is built in your own AWS or Azure accounts and source control, with handoff documentation so your team can run it without me.
How do we get started?
Use the form below to send a few sentences about where things stand. I reply within one business day, and the first conversation is free with no obligation.