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

Terraform - Infrastructure as a Code

Terraform - Infrastructure as a Code

73c28d6dc09bcfdad2869e18501631e7?s=128

Ondrej Sika

October 06, 2019
Tweet

Transcript

  1. Ondrej Sika ondrej@sika.io @ondrejsika LinuxDays 2019 Terraform Infrastructure as a

    code
  2. About me - Ondrej Sika I'm DevOps consultant and lecturer.

    I'm helping companies to setup DevOps. That means for them to focus on their product, faster & more reliable delivery new features to production and stop wasting time for example on deployments and infrastructure.
  3. We want Git versioned - Source Code - Environments (Dockerfiles)

    - Configuration (Nginx, …) - Deployments (Kubernetes) - Infrastructure?
  4. How we handle infrastructure? - Physical servers - manually -

    Virtual servers - manually - Cloud - manually - Cloud - as a code - Terraform
  5. Terraform

  6. What is Terraform? Terraform is a tool for managing infrastructure

    as code You can version your infrastructure in Git, create resources from pull requests or fork infrastructure you like.
  7. None
  8. Terraform - Designed for infrastructure management - Provide declarative way

    how to define your infrastructure - Support removing resources (has state) - Help you to evolve infrastructure save & predictable way - Work with all major clouds (AWS, Azure, …) - Open Source (18 000 stars on Github) - Can predict costs (Terraform Enterprise)
  9. Why Terraform? and not Ansible, Puppet, ... Terraform is better

    with Ansible, Puppet, ... - Terraform is not a configuration management tool, Ansible or Puppet do it and do it pretty good - Terraform work with configuration management tool - Terraform creates infrastructure and run CM tool for setting up the resources
  10. How Terraform works Terraform compare actual infrastructure (stored in local

    or remote state) and infrastructure you want (in .tf files). Then apply (create, update or remove) the differences.
  11. Configuration Language

  12. Providers A provider is responsible for understanding API interactions and

    exposing resources. Providers generally are an IaaS (e.g. AWS, GCP, Azure, OpenStack) or SaaS services (e.g. CloudFlare, Gitlab).
  13. None
  14. Resources Terraform is used to create, manage, and update infrastructure

    resources such as physical machines, VMs, network switches, containers, and more. Almost any infrastructure type can be represented as a resource in Terraform.
  15. None
  16. Data Sources Data sources allow data to be fetched or

    computed for use elsewhere in Terraform configuration. Use of data sources allows a Terraform configuration to make use of information defined outside of Terraform, or defined by another separate Terraform configuration.
  17. None
  18. Modules A module is a container for multiple resources that

    are used together.
  19. None
  20. None
  21. Backends A "backend" in Terraform determines how state is loaded

    and how an operation such as apply is executed. This abstraction enables non-local file state storage, remote execution, etc. Why remote state / backend? - Working in a team - Remote operations (CI/CD)
  22. Terraform CLI

  23. Terraform CLI - terraform init - download plugins & setup

    modules - terraform plan - show & prepare changes of infrastructure - terraform apply - apply new version of infrastructure - terraform destroy - destroy your infrastructure
  24. None
  25. None
  26. None
  27. None
  28. None
  29. Demo Time

  30. ondrej-sika.cz/repozitare/#terraform

  31. Thank you & Questions Ondrej Sika email: ondrej@sika.io www: https://ondrej-sika.cz

    twitter: @ondrejsika linkedin: /in/ondrejsika/ Slides: https://sika.link/linuxdays2019