Skip to main content
HashiTalks 2025 Learn about unique use cases, homelab setups, and best practices at scale at our 24-hour virtual knowledge sharing event. Register
Presentation

I Can't Do This With Terraform, Now What?

Learn how to modify providers when Terraform hasn't gotten support yet for a particular cutting-edge cloud feature.

Terraform is the best-in-breed infrastructure as code(IaC) tool, but sometimes you want to implement cutting-edge cloud features that the official providers just don't support. So what do you do? Do you have to resort to falling back on native IaC tooling, or can you find a way to work around the limitation without turning your project into a ball of hacks? And is modifying a provider yourself really that hard?

What You'll Learn

This talk sets out guidance for dealing with the situations automation engineers face all the time, with a focus on Azure as the cloud provider. The speaker's motivation is to deliver the right functionality for the client without compromising on maintainability.

Agenda Items

  • Terraform provider feature coverage (vs cloud provider's API)
  • Analysis of resources and properties exposed
  • Options for dealing with gaps in Terraform provider coverage
  • Patching a Terraform provider without being a Golang dev
  • Running Terraform in Docker, handling custom providers with ease
  • Making local-exec workarounds less... inelegant
  • Dependent null_resources
  • Shell provider modules in lieu of actual resources
  • Wrapping ARM templates in Terraform: why and how
  • Roadmap towards greater feature coverage

GitHub Repo

You can find the GitHub repository for this talk here.

Slides

The slides for this talk are available in this Google Presentation.

More resources like this one

3/15/2023Presentation

Advanced Terraform techniques

2/3/2023Case Study

Automating Multi-Cloud, Multi-Region Vault for Teams and Landing Zones

2/1/2023Case Study

Should My Team Really Need to Know Terraform?

1/20/2023Case Study

Packaging security in Terraform modules