Terraform modules inside outИнфраструктура как код
Anton Babenko is a long time developer, CTO, and tech-lead who is spending a large amount of his time as an open-source contributor to various Terraform & AWS projects, terraform-aws-modules, modules.tf and a few others. The most popular one is where he manages a collection of verified Terraform AWS modules (terraform-aws-modules on GitHub) which is being downloaded more than 1 million times. He also leads AWS, DevOps and HashiCorp User Groups in Norway, organizes DevOpsDays Oslo, and speaks often at various technical meetups and conferences. He is passionate about all-things-cloud and solution architecture combined with automation and scripting.
Terraform module is the smallest reusable component of an infrastructure. Getting started to use modules is easy, but keep them in a good shape and make them really powerful is harder.
Your infrastructure almost always starts simply: few resources managed by few developers. As time goes it grows in all possible directions. You found your ways around grouping resources into Terraform modules, so what can possibly go wrong? (famous last words)
During the talk, I will explain several unknown, hard to find and rather green-field solutions related to Terraform modules. More specifically:
- Types of modules (resource and infrastructure modules, compositions)
- How to specify dependencies between modules
- Workflow for various types of modules
More advanced topics like:
- Refactoring, upgrades, rollbacks (without recreation of the resources)
- Poor-man modules manager
- What are the limitations of the current implementation of Terraform modules and workarounds (eg, jsonnet, cookiecutter, terrapin)
I will demonstrate and run the code which handles advanced problems based terraform-aws-modules from the Terraform Registry and explain why hundreds of developers are using those modules already (btw, they were downloaded 1 million of times already).