11:00 - 11:45


Anton Babenko


Anton 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) downloaded more than 2 million times. The newest one is where he describes Terraform best practices learned during several years of working with Terraform and established within the community (www.terraform-best-practices.com). He also leads AWS, DevOps and HashiCorp User Groups in Norway, organizes DevOpsDays Oslo, and often speaks at various technical meetups and conferences. He is passionate about all-things-cloud and solution architecture combined with automation and scripting.

Talk: How to build, scale, and maintain 20 public Terraform modules with over 7 million provisions

Copy and paste of Terraform reduce reusability, maintainability, and scalability of our configuration. In an effort not to repeat ourselves, we might start moving our configuration into modules and run into new scaling and collaboration challenges! In this talk, I will describe some of the challenges and lessons learned in building, scaling, and maintaining the public Terraform modules for AWS components and how to apply them to your modules.

I defined an initial goal for those modules to provide a powerful and flexible way to manage infrastructure on AWS but with more than a couple thousand issues and pull-requests opened since the beginning, the goal had to change. What started as an initial set of basic Terraform AWS modules for common architectural patterns on AWS soon became a base for many customers using Terraform and required radical changes and improvements.

I will describe some of the challenges along the way and lessons learned when building entirely open-source Terraform modules used by thousands of developers. Some problems are technical such as versioning, quality assurance, documentation, compatibility promises, and upgrading. Other problems are around collaboration and software design principles, such as how to reason about feature-requests or how small should a module be. I will also examine the testing strategy for terraform-aws-modules and discuss the reasoning for not having tests!

I will provide a list of dos and don’ts for Terraform modules that highlight the critical features (e.g., documentation, feature-rich, sane defaults, examples, etc.), which make terraform-aws-modules scalable in collaboration and use.

By the end of the talk, attendees will understand proven practices around building useful, maintainable, and scalable modules, learn about public modules available to them, and how they can participate in making those open-source projects better.