Preface 1.WhyTerraform The Rise of DevOps What Is Infrastructure as Code Ad Hoc Scripts Configuration Management Tools Server Templating Tools Orchestrat:ion Tools Provisioning Tools The Benefits of lnfrastructure as Code HoW Terraform Works How Terraform Compares to Other IaC Tools Configuration Management Versus Provisioning Mutable Infrastructure Versus Immutable Infrastructure Procedural Language Versus Declarative Language Master Versus Masterless Agent Versus Agentless Large Community Versus Small Community Mature Versus Cutting Edge Using Multiple Tools Together Conclusion 2.GeRingStartedwithTerraform Setting Up Your AWS Account Install Terraform Deploy a Single Server Deploy a Single Web Server Deploy a Configurable Wleb Server Deploying a Cluster of Web Servers Deploying a Load Balancer Cleanup Conclusion 3.HowtoManageTerraform State what Is Terraform State Shared Storage for State Files Limitations with Terraform's Backends Isolating State Files Isolation via Workspaces Isolation via File Layout The terraform_remote__state Data Source Conclusion 4.How to Create Reusable Infrastructure with Terraform Modules Module Basics Module Inputs Module Locals Module Outputs Module Gotchas File Paths Inline Blocks Module Versioning Conclusion
5.Terraform Tips and Tri(ks:Loops,If-Statements,Deployment,and Gotchas Loops Loops with the count Parameter Loops with for_each Expressions Loops with for Expressions Loops with the for String Directive Conditionals Conditionals with the count Parameter Conditionals with for_each and for Expressions Conditionals with the if String Directive Zero-Downtime Deployment Terraform Gotchas count and for_each Have Limitations Zero-Downtime Deployment Has Limitations Valid Plans Can Fail Refactoring Can Be Tricky Eventual Consistency Is Consistent…Eventually Conclusion 6.Production-GradeTerraformCode Why It Takas So Long to Build Production-Grade Infrastructure The Production-Grade Infrastructure Checklist Production-Grade Infrastructure Modules Small Modules Composable Modules Testable Modulas Releasable modules Beyond Terraform Modules Conclusion 7.HowtoTestTerraformCode Manual Tests Manual Testing Basics CleaningUpAfterTests Automated Tests Unit Tests Integration Tests End-to-End Tests Other Testing Approaches Conclusion 8.HowtoUseTerraform asaTeam AdoptingIaCinYourTeam ConvinceYourBoss Work Incrementally Give Your Team the Time to Learn A Workflow for Deploying Application Code Use Version Control Run the Code Locally Make Code Changes Submit Changes for Review Run Automated Tests Merge and Release
Deploy A Workflow for Deploying Infrastructure Code Use Version Control Run the Code Locally Make Code Changes Submit Changes for Review Run Automated Tests Merge and Release Deploy Putting It All Together Conclusion A.Recommended Reading Index