Chapter 4. How to Create Reusable Infrastructure with Terraform Modules
At the end of Chapter 3, you had deployed the architecture shown in Figure 4-1.
Figure 4-1. A load balancer, web server cluster, and database
This works great as a staging environment, but what about the production environment? You don’t want your users accessing the same environment your employees use for testing, and it’s too risky testing in production, so you typically need two environments, staging and production, as shown in Figure 4-2. Ideally, the two environments are nearly identical, though you may run slightly fewer/smaller servers in staging to save money.
Figure 4-2. Two environments, each with its own load balancer, web server cluster, and database
With just a staging environment, the file layout for your Terraform code looked something like Figure 4-3.
Figure 4-3. File layout with only a staging environment
If you were to add a production environment, you’d end up with the file layout in Figure 4-4.
How do you avoid duplication between the staging and production environments? How do you avoid having to copy and paste all the code in stage/services/webserver-cluster into prod/services/webserver-cluster ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access