Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Infrastructure as Code for Azure with Terraform

Infrastructure as Code for Azure with Terraform

Modern and distributed application architectures often require a large set of services and systems with a rather complex configuration to work as expected. You and your team can create and manage such infrastructures professionally by adopting Infrastructure as Code (IaC) and relying on Terraform. In this talk, Azure MVP Thorsten Hans demonstrates how to create reliable and predictable Azure infrastructures with Terraform. You will learn how to structure your project, create and mutate your services and manage multiple environments in no time.

6848c06ef647ab606c668cc5264c0fc9?s=128

Thorsten Hans

April 16, 2021
Tweet

Transcript

  1. Infrastructure as Code with HashiCorp Terraform Thorsten Hans @ThorstenHans Consultant

  2. Consultant @ Thinktecture #Azure #Kubernetes #CloudNative #Terraform thorsten.hans@thinktecture.com thinktecture.com thorsten-hans.com

    @ThorstenHans Thorsten Hans
  3. Talking Points Terraform and Infrastructure as Code Introduction Terraforming Microsoft

    Azure Continuous Integration with GitHub Actions Terraform Resources
  4. by HashiCorp • Toolset for Infrastructure as Code • Written

    in Go 🚀 • Platform agnostic • Open Source • Optional paid services • Terraform Cloud (adds collaboration features) • Terraform Enterprise (adds governance features) Terraform
  5. Terraform Write, Plan, and Create 1 Infrastructure as Code 2

    Preview Changes before applying 3 Build reproducible infrastructure
  6. Terraform Write, Plan, and Create 1 Infrastructure as Code 2

    Preview Changes before applying 3 Build reproducible infrastructure
  7. Infrastructure as Code • 1st step towards infrastructure automation •

    Version controlled infrastructure (git) • change history / change tracking • collaboration • Implicit documentation • Eliminates the Truck Factor Terraform - Write
  8. Terraform Write, Plan, and Create 1 Infrastructure as Code 2

    Preview Changes before applying 3 Build reproducible infrastructure
  9. Preview changes before applying • Execution plan tells you which

    parts of the environment will be • Created • Modified • Deleted • Displayed / verified before modifying actual infrastructure • Think of git status Terraform - Plan
  10. Terraform Write, Plan, and Create 1 Infrastructure as Code 2

    Preview Changes before applying 3 Build reproducible infrastructure
  11. Build reproducible infrastructure • One Terraform script can be applied

    million times • Configurable environments • Variables • Interpolation • Built-in functions • Concurrency prevention by using active state locking mechanism Terraform - Create
  12. Write Code Terraform plan Verify Terraform apply Consume The Terraform

    Lifecycle Terraform Destroy
  13. HashiCorp Configuration Language • A declarative language used to express

    your desired infrastructure • The only language used to interact with all cloud-vendors, and –platforms • Simple, yet powerful type system • Consists of a few top-level building blocks used to craft your infrastructure • Comes with expressions and functions to drive productivity Meet the HCL
  14. Talking Points Terraform and Infrastructure as Code Introduction Terraforming Microsoft

    Azure Continuous Integration with GitHub Actions Terraform Resources
  15. The AzureRM Provider • The AzureRM Provider supports all features

    exposed via Azure ARM API • Supports reading and writing Azure Resources • Offers different authentication (AuthN) patterns supported • Reuse Azure CLI AuthN • Azure Service Principal • Azure Managed Service Identity Terraforming Microsoft Azure
  16. Demo Terraforming Microsoft Azure

  17. Talking Points Terraform and Infrastructure as Code Introduction Terraforming Microsoft

    Azure Continuous Integration with GitHub Actions Terraform Resources
  18. Terraform in GitHub Actions • Use HashiCorp Setup action to

    install desired version of Terraform • Use GitHub’s Repository Secrets to establish context • Use –no-color option for terraform commands • Check code format (do NOT reformat automatically) • Validate the Terraform project Continuous Integration
  19. Demo Continuous Integration with GitHub Actions

  20. Talking Points Terraform and Infrastructure as Code Introduction Terraforming Microsoft

    Azure Continuous Integration with GitHub Actions Terraform Resources
  21. Essential Features • Modules • https://thns.io/2R73oIQ • Workspaces • https://thns.io/2OZMs4Y

    • Terraform State • https://thns.io/2AftGS2 • Backends • https://thns.io/2DFyNOy Terraform Resources
  22. Great free and paid resources • Terraform Guide for Azure

    enthusiasts • https://thns.io/terraform-guide • Terraform Best Practices • https://thns.io/2P0mb6z • Book: Terraform: Up and Running • https://thns.io/2QdJSNz Terraform Resources
  23. Q&A If you have further questions: shoot me a mail

    at thorsten.hans@thinktecture.com / thorsten.hans@gmail.com or tweet at @ThorstenHans