Introducing

Golang on Terraform

Terraform is an open source infrastructure as code tool that allows teams to safely and efficiently build, change and version infrastructure.

Terraform improves ops productivity up to 75%. It is an open source tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions.

Why Open Source?

Terraform simplies the complexity managing infrastructure at scale. It is a tool that is used by many companies and is a critical part of the DevOps toolchain.

  • declarative syntax to define VMs, containers, networking, storage, DNS, etc.
  • supports all major cloud providers
  • versioning each infrastructure version
  • facilitates ops team collaboration

As the primary definition of an enterprise's infrastructure, it is critical for Terraform to take an open source approach to its development. This allows the community to contribute to the project and to ensure that the tool is robust and secure.

What will you learn?

This is a 4 session - once-a-week - training program that is intended for advanced beginners or intermediate level software engineers who are familiar with the golang programming language.

The curriculum is designed to help participants level up their golang skills on a real world, non-trivial open source code base - Terraform.

The training will be conducted by a trainer who is an expert in the golang programming language and who has preferably contributed to the Terraform code base.

By the end of the program, you would have gained a deeper understanding of the golang programming language and the Terraform code base and demonstrate real world skills by making pull request contributions to the project. You will also have a better understanding of the Terraform architecture and how it is used to define Ops infrastructure securely and efficiently.

What is the format for each Session?

Each session will be 1.5 hours long and will be conducted online through a pair/group programming format, using a dedicated pair programmming tool, Tuple.

Session 1: The Basics and Introduction to Terraform

In the first session, participants will learn the fundamentals of open source contribution workflow. This is well covered by existing materials by github, such as

However, not everyone has the time to understand the more detailed parts of the workflow, such as preparing to sign commits, squashing commits, rebasing, and figure out the diverse practices used by different open source projects.

However, we realise that most people learn best by doing, so we will use the first session to walk through the process of making a pull request to the Terraform code base.

More importantly, specific to Terraform, participants should have a basic understanding of Terraform's software architecture so that they can be effective in contributing to the code base.

The first session should end with participants understanding how to contribute to Terraform's github repository.

Session 2 and 3: Identifiying Issues, Technical Communication and making Pull Requests

In the second and third sessions, participants will be expected to have identified issues that they would like to work on and have made a pull request to the Terraform code base. Participants will be mentored on how to communicate effectively with the Terraform community and the project maintainers and how to make pull requests that are likely to be accepted.

The practical aspect of communicating well, discussing implementation possibilities and making pull requests will be done through pair programming sessions with the trainer.

Session 4: Review and Wrap Up

In the final session, participants will be expected to have made at least one pull request that has been accepted by the Terraform community. Participants will be expected to share their experience with the rest of the class and to discuss the challenges they faced and how they overcame them.

The trainer will take the opportunity to review the important skills - both software skills and hard technical skills - that each student has acquired through this practical training program.

As the program mentor, the trainer will also provide feedback on how each participant can continue to improve their skills, build a strong CV to stand out in the job market with a strong track record in open source, beyond this short, high quality and pragmatic training program.