The Cost of Tool Sprawl
Teams running 30-plus infrastructure tools pay for it in three ways: security gaps from inconsistent controls, skill gaps because every engineer learns a bespoke tool the next person must re-learn, and manual toil from click-ops that never gets standardized. The result is a perpetual ROI question with no clean answer. Shipping velocity stalls while operators argue over tooling rather than running infrastructure.
Mapping Terraform and Ansible to the Infrastructure Lifecycle
The lifecycle breaks into three phases. Day 0: provision the infrastructure with Terraform’s declarative state. Day 1: configure it with Ansible. Day 2 and beyond: patch, health-check, remediate drift, and eventually retire it. Omar and Tim show two integration paths. Ansible-driven workflows start in the Ansible Automation Platform (AAP) and call out to Terraform via certified Ansible collections, including one released at HashiConf specifically for Terraform Enterprise workspaces. Terraform-driven workflows go the other direction: the official AAP Terraform provider lets a Terraform plan call AAP to run a job template or update inventory on any provisioned resource.
Terraform Actions: Day-Two Operations Without Null Resources
Terraform has always handled create, read, update, and destroy. Everything else required null resources, provisioner hacks, or a destroy-plus-create cycle on a fake resource. Terraform Actions, announced in public beta at HashiConf 2025, adds a first-class action block and six lifecycle hooks: before and after each of create, update, and destroy. A hook can fire any non-CRUD API call against a provider resource, or trigger Ansible via EDA. Define it once, and every subsequent plan/apply runs it automatically. A direct invoke flag also supports ad-hoc calls without touching the lifecycle.
Live Demo: Scaling from 5 to 25 EC2 Instances with Automated Configuration
The demo starts with five AWS EC2 instances and a Black Friday spike that demands 25. Changing the count to 25 in Terraform and committing triggers a plan/apply. The scale-to-25 EC2 demo with automated Ansible configuration (16:04) shows each new VM firing a postcreate event to EDA, which routes it to the “new AWS provisioning workflow” job template in AAP. Ansible does not wait for all 25 to finish provisioning. Each VM gets configured as its event arrives. The EDA stream goes from 78 events to a continuous stream, and the final refresh shows 25 instances fully provisioned and configured.
Notable Quotes
better together story looks like. Omar Ismail · ▶ 0:14
Automation at its finest. Tim Appnel · ▶ 17:10
now fully automated. Omar Ismail · ▶ 11:10
Key Takeaways
- Terraform handles provisioning; Ansible handles configuration. Two certified collections bridge them in either direction.
- Terraform Actions replaces null-resource hacks with six lifecycle hooks that trigger any non-CRUD API call.
- Event-Driven Ansible configures each VM as its postcreate event arrives, not after the entire apply finishes.