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

Collaborative Application and Infrastructure workflow using GitHub Actions and HashiCorp Terraform

Collaborative Application and Infrastructure workflow using GitHub Actions and HashiCorp Terraform

Speed is an important success metric for modern development teams. As enterprises start to scale in multi-cloud environments, the Continuous Integration/Continuous Deployment (CI/CD) process is no longer just a developer specific workflow, but a DevOps workflow where both development and operations coordinate their tasks to move forward rapidly. GitHub and HashiCorp are working closely to build an end-to-end DevOps workflow encompassing the entire application development lifecycle. Together we help provide a powerful CI/CD solution that prevents developers and operators from having to wait for their respective tasks to be completed, accelerating delivery. Join this session to learn and see how an updated GitHub Actions and HashiCorp Terraform workflow can simplify collaboration and increase your development team’s velocity through infrastructure automation and applications both delivered as code and on-demand.

GitHub Satellite 2020: https://githubsatellite.com/schedule/#collaborative-application-and-infrastructure-workflow-using-github-actions-and-hashicorp-terraform

Anubhav Mishra

May 06, 2020
Tweet

More Decks by Anubhav Mishra

Other Decks in Technology

Transcript

  1. Copyright © 2019 HashiCorp
    Collaborative Application and
    Infrastructure workflow using GitHub
    Actions and HashiCorp Terraform
    Anubhav Mishra
    Technical Advisor of the CTO, HashiCorp

    View Slide

  2. Anubhav Mishra
    Technical Advisor to the CTO, HashiCorp
    @build1point0 | anubhavmishra

    View Slide

  3. Anubhav Mishra
    Technical Advisor to the CTO, HashiCorp
    @build1point0 | anubhavmishra
    Atlan&s

    View Slide

  4. About HashiCorp
    Leading Cloud Infrastructure Automation
    Our software stack enables the provisioning, securing,
    connecting and running of apps and the infrastructure to
    support them.
    We unlock the cloud operating model for every business
    Founded
    2012
    Employees
    900+
    Funding
    349M

    View Slide


  5. The Transition 

    to DevOps

    View Slide

  6. The Technology Transition
    Traditional Datacenter
    “Static”
    Dedicated

    Infrastructure
    Modern Datacenter
    “Dynamic”
    AWS Azure GCP
    + + +
    Private Cloud +

    View Slide

  7. The Process Transition
    Traditional Datacenter
    “Static”
    Dedicated

    Infrastructure
    Modern Datacenter
    “Dynamic”
    AWS Azure GCP
    + + +
    Private Cloud +
    ITIL / ITSM
    TICKET DRIVEN SERVICE
    DEVOPS
    API DRIVEN SELF-SERVICE

    View Slide

  8. Why?

    View Slide

  9. Increasing Developer Velocity
    OPERATIONS 

    TEAM
    PLATFORM

    TEAM
    SECURITY
    TEAM
    DEVELOPER 

    TEAM
    TIME TO VALUE

    View Slide

  10. DevOps Process
    OPERATIONS

    TEAM
    PLATFORM
    TEAM
    SECURITY
    TEAM
    API API
    API
    DEVELOPER
    TEAM

    View Slide

  11. View Slide

  12. HashiCorp Terraform
    Goal
    Provide a Unified Workflow Using Infrastructure as Code
    to Iterate Over Infrastructure Safely
    that is Capable of Provisioning Anything Anywhere.

    View Slide

  13. Cloud Provisioning with Terraform
    Core + Provider Model
    ▪ Expose the unique services of each
    infrastructure platform, but provide a
    consistent workflow


    View Slide

  14. Cloud Provisioning with Terraform
    Core + Provider Model
    ▪ Expose the unique services of each
    infrastructure platform, but provide a
    consistent workflow
    ▪ 200+ Providers exist for any
    infrastructure or application element
    – Enabled by the open source model of
    1200+ contributors


    View Slide

  15. Managing Github with Terraform
    CODE EDITOR
    resource "github_membership" "membership_for_some_user" {
    username = "admin"
    role = "owner"
    }
    resource "github_repository" "example" {
    name = "example"
    description = "My awesome codebase"
    private = true
    template {
    owner = "github"
    repository = "terraform-module-template"
    }
    }

    View Slide

  16. Terraform Workflow
    DEVELOPER/
    OPERATOR

    View Slide

  17. Terraform Workflow
    DEVELOPER/
    OPERATOR

    View Slide

  18. Terraform Workflow
    DEVELOPER/
    OPERATOR
    TERRAFORM PLAN

    View Slide

  19. Terraform Workflow
    DEVELOPER/
    OPERATOR
    TERRAFORM PLAN
    $ terraform plan
    + resource "github_repository" “example”
    …..

    Plan: 1 to add, 0 to change, 0 to destroy.

    View Slide

  20. Terraform Workflow
    DEVELOPER/
    OPERATOR
    TERRAFORM PLAN
    $ terraform plan
    + resource "github_repository" “example”
    …..

    Plan: 1 to add, 0 to change, 0 to destroy.

    View Slide

  21. Terraform Workflow
    DEVELOPER/
    OPERATOR
    TERRAFORM PLAN TERRAFORM
    APPLY
    $ terraform plan
    + resource "github_repository" “example”
    …..

    Plan: 1 to add, 0 to change, 0 to destroy.

    View Slide

  22. Terraform Workflow
    DEVELOPER/
    OPERATOR
    TERRAFORM PLAN TERRAFORM
    APPLY
    $ terraform plan
    + resource "github_repository" “example”
    …..

    Plan: 1 to add, 0 to change, 0 to destroy.
    $ terraform apply
    …..

    Apply complete!

    View Slide

  23. Terraform Workflow
    DEVELOPER/
    OPERATOR
    TERRAFORM PLAN TERRAFORM
    APPLY
    $ terraform plan
    + resource "github_repository" “example”
    …..

    Plan: 1 to add, 0 to change, 0 to destroy.
    $ terraform apply
    …..

    Apply complete!

    View Slide

  24. Terraform Workflow
    DEVELOPER/
    OPERATOR
    TERRAFORM PLAN TERRAFORM
    APPLY
    $ terraform plan
    + resource "github_repository" “example”
    …..

    Plan: 1 to add, 0 to change, 0 to destroy.
    $ terraform apply
    …..

    Apply complete!

    View Slide

  25. Terraform Workflow
    DEVELOPER/
    OPERATOR
    TERRAFORM PLAN TERRAFORM
    APPLY
    $ terraform plan
    + resource "github_repository" “example”
    …..

    Plan: 1 to add, 0 to change, 0 to destroy.
    $ terraform apply
    …..

    Apply complete!

    View Slide

  26. Terraform Workflow
    DEVELOPER/
    OPERATOR
    TERRAFORM PLAN
    API/GUI
    TERRAFORM
    APPLY
    $ terraform plan
    + resource "github_repository" “example”
    …..

    Plan: 1 to add, 0 to change, 0 to destroy.
    $ terraform apply
    …..

    Apply complete!

    View Slide

  27. Collaborating with Terraform
    DEVELOPERS

    View Slide

  28. Collaborating with Terraform
    DEVELOPERS
    resource "github_membership" "membership_for_some_user" {
    username = "admin"
    role = "owner"
    }

    View Slide

  29. Collaborating with Terraform
    DEVELOPERS
    resource "github_membership" "membership_for_some_user" {
    username = "admin"
    role = "owner"
    }

    View Slide

  30. Collaborating with Terraform
    GITHUB ACCESS
    DEVELOPERS
    resource "github_membership" "membership_for_some_user" {
    username = "admin"
    role = "owner"
    }

    View Slide

  31. Collaborating with Terraform
    GITHUB ACCESS
    DEVELOPERS
    OPERATIONS TEAM
    resource "github_membership" "membership_for_some_user" {
    username = "admin"
    role = "owner"
    }

    View Slide

  32. Collaborating with Terraform
    GITHUB ACCESS
    DEVELOPERS
    OPERATIONS TEAM
    resource "github_membership" "membership_for_some_user" {
    username = "admin"
    role = "owner"
    }

    View Slide

  33. Collaborating with Terraform
    GITHUB ACCESS
    DEVELOPERS
    OPERATIONS TEAM
    resource "github_membership" "membership_for_some_user" {
    username = "admin"
    role = "owner"
    }

    View Slide

  34. Collaborating with Terraform
    GITHUB ACCESS
    DEVELOPERS
    OPERATIONS TEAM
    resource "github_membership" "membership_for_some_user" {
    username = "admin"
    role = "owner"
    }

    View Slide

  35. Collaborating with Terraform
    GITHUB ACCESS
    DEVELOPERS
    OPERATIONS TEAM
    resource "github_membership" "membership_for_some_user" {
    username = "admin"
    role = "owner"
    }

    View Slide

  36. Terraform Workflow
    DEVELOPER/
    OPERATOR
    TERRAFORM PLAN
    API/GUI
    TERRAFORM
    APPLY

    View Slide

  37. Terraform and GitHub
    Manage Infrastructure and Application Lifecycles
    DEVELOPER/
    OPERATOR

    View Slide

  38. Terraform and GitHub
    Manage Infrastructure and Application Lifecycles
    DEVELOPER/
    OPERATOR

    View Slide

  39. Terraform and GitHub
    Manage Infrastructure and Application Lifecycles
    DEVELOPER/
    OPERATOR
    TERRAFORM CLOUD
    INFRASTRUCTURE
    AS CODE

    View Slide

  40. Terraform and GitHub
    Manage Infrastructure and Application Lifecycles
    DEVELOPER/
    OPERATOR
    TERRAFORM CLOUD
    INFRASTRUCTURE
    AS CODE
    TERRAFORM PLAN REVIEW

    View Slide

  41. Terraform and GitHub
    Manage Infrastructure and Application Lifecycles
    DEVELOPER/
    OPERATOR
    TERRAFORM CLOUD
    INFRASTRUCTURE
    AS CODE
    TERRAFORM PLAN REVIEW

    View Slide

  42. Terraform and GitHub
    Manage Infrastructure and Application Lifecycles
    DEVELOPER/
    OPERATOR
    TERRAFORM CLOUD
    INFRASTRUCTURE
    AS CODE
    TERRAFORM PLAN REVIEW

    View Slide

  43. Terraform and GitHub
    Manage Infrastructure and Application Lifecycles
    DEVELOPER/
    OPERATOR
    TERRAFORM CLOUD
    INFRASTRUCTURE
    AS CODE
    TERRAFORM PLAN REVIEW
    TERRAFORM CLOUD

    View Slide

  44. Terraform and GitHub
    Manage Infrastructure and Application Lifecycles
    DEVELOPER/
    OPERATOR
    TERRAFORM CLOUD
    INFRASTRUCTURE
    AS CODE
    TERRAFORM PLAN REVIEW
    TERRAFORM CLOUD

    View Slide

  45. Terraform and GitHub
    Manage Infrastructure and Application Lifecycles
    DEVELOPER/
    OPERATOR
    TERRAFORM CLOUD
    INFRASTRUCTURE
    AS CODE
    TERRAFORM PLAN REVIEW
    TERRAFORM CLOUD

    View Slide

  46. Terraform and GitHub
    Manage Infrastructure and Application Lifecycles
    DEVELOPER/
    OPERATOR
    TERRAFORM CLOUD
    INFRASTRUCTURE
    AS CODE
    TERRAFORM PLAN REVIEW
    TERRAFORM CLOUD

    View Slide

  47. Terraform and GitHub
    Manage Infrastructure and Application Lifecycles
    DEVELOPER/
    OPERATOR
    TERRAFORM CLOUD
    INFRASTRUCTURE
    AS CODE
    TERRAFORM PLAN REVIEW
    CLOUD
    TERRAFORM CLOUD

    View Slide

  48. View Slide

  49. Announcing Terraform GitHub Actions 1.0

    View Slide

  50. Announcing Terraform GitHub Actions 1.0

    View Slide

  51. Demo

    View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. View Slide

  56. View Slide

  57. Highlights Terraform Github Actions
    Available in the Github Marketplace
    https://git.io/terraform-github-actions
    Demo code
    https://git.io/terraform-github-satellite-demo

    View Slide

  58. View Slide

  59. View Slide

  60. Thank You
    [email protected]
    www.hashicorp.com
    Ask me anything @build1point0

    View Slide