Summary
In this chapter, we took an in-depth look at the language that powers Terraform: HCL. We looked at its core structures: resources, data sources, locals, and modules. We looked at inputs and outputs that will help us design better contracts between our modules and the outside world. We looked at language structures that allow us to build dynamic collections of resources—helping us scale our code without all the copypasta. And lastly, we looked at an arsenal of functions that can help us when coding in HCL to solve complex problems quickly and efficiently.
In the next chapter, we will explore the utility providers HashiCorp publishes that provide critical cross-platform functionality to our Terraform solutions.