diff --git a/.github/workflows/deploy-terraform-cloud-gcp-v2.yml b/.github/workflows/deploy-hcp-terraform-aws-v2.yml similarity index 69% rename from .github/workflows/deploy-terraform-cloud-gcp-v2.yml rename to .github/workflows/deploy-hcp-terraform-aws-v2.yml index 30409979..b12e5bd4 100644 --- a/.github/workflows/deploy-terraform-cloud-gcp-v2.yml +++ b/.github/workflows/deploy-hcp-terraform-aws-v2.yml @@ -1,20 +1,20 @@ # Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: MPL-2.0 -name: hashicorp/field-workshops-terraform/deploy-terraform-cloud-gcp-v2 +name: hashicorp/field-workshops-terraform/deploy-hcp-terraform-aws-v2 on: workflow_dispatch: push: branches: - 'main' paths: - - 'instruqt-tracks/terraform-cloud-gcp-v2/**' + - 'instruqt-tracks/hcp-terraform-aws-v2/**' permissions: contents: read jobs: deploy-track: uses: ./.github/workflows/instruqt-track-deploy.yml with: - working_directory: "instruqt-tracks/terraform-cloud-gcp-v2" + working_directory: "instruqt-tracks/hcp-terraform-aws-v2" INSTRUQT_CLI_URI: ${{ vars.INSTRUQT_CLI_URI }} secrets: INSTRUQT_TOKEN: ${{ secrets.INSTRUQT_TOKEN }} diff --git a/.github/workflows/deploy-terraform-cloud-gcp.yml b/.github/workflows/deploy-hcp-terraform-aws.yml similarity index 70% rename from .github/workflows/deploy-terraform-cloud-gcp.yml rename to .github/workflows/deploy-hcp-terraform-aws.yml index 6e32f5b8..5b0c326e 100644 --- a/.github/workflows/deploy-terraform-cloud-gcp.yml +++ b/.github/workflows/deploy-hcp-terraform-aws.yml @@ -1,20 +1,20 @@ # Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: MPL-2.0 -name: hashicorp/field-workshops-terraform/deploy-terraform-cloud-gcp +name: hashicorp/field-workshops-terraform/deploy-hcp-terraform-aws on: workflow_dispatch: push: branches: - 'main' paths: - - 'instruqt-tracks/terraform-cloud-gcp/**' + - 'instruqt-tracks/hcp-terraform-aws/**' permissions: contents: read jobs: deploy-track: uses: ./.github/workflows/instruqt-track-deploy.yml with: - working_directory: "instruqt-tracks/terraform-cloud-gcp" + working_directory: "instruqt-tracks/hcp-terraform-aws" INSTRUQT_CLI_URI: ${{ vars.INSTRUQT_CLI_URI }} secrets: INSTRUQT_TOKEN: ${{ secrets.INSTRUQT_TOKEN }} diff --git a/.github/workflows/deploy-terraform-cloud-aws-v2.yml b/.github/workflows/deploy-hcp-terraform-azure-v2.yml similarity index 69% rename from .github/workflows/deploy-terraform-cloud-aws-v2.yml rename to .github/workflows/deploy-hcp-terraform-azure-v2.yml index b46abfbf..95b317f4 100644 --- a/.github/workflows/deploy-terraform-cloud-aws-v2.yml +++ b/.github/workflows/deploy-hcp-terraform-azure-v2.yml @@ -1,20 +1,20 @@ # Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: MPL-2.0 -name: hashicorp/field-workshops-terraform/deploy-terraform-cloud-aws-v2 +name: hashicorp/field-workshops-terraform/deploy-hcp-terraform-azure-v2 on: workflow_dispatch: push: branches: - 'main' paths: - - 'instruqt-tracks/terraform-cloud-aws-v2/**' + - 'instruqt-tracks/hcp-terraform-azure-v2/**' permissions: contents: read jobs: deploy-track: uses: ./.github/workflows/instruqt-track-deploy.yml with: - working_directory: "instruqt-tracks/terraform-cloud-aws-v2" + working_directory: "instruqt-tracks/hcp-terraform-azure-v2" INSTRUQT_CLI_URI: ${{ vars.INSTRUQT_CLI_URI }} secrets: INSTRUQT_TOKEN: ${{ secrets.INSTRUQT_TOKEN }} diff --git a/.github/workflows/deploy-terraform-cloud-aws.yml b/.github/workflows/deploy-hcp-terraform-azure.yml similarity index 70% rename from .github/workflows/deploy-terraform-cloud-aws.yml rename to .github/workflows/deploy-hcp-terraform-azure.yml index 907a6fcd..472394ef 100644 --- a/.github/workflows/deploy-terraform-cloud-aws.yml +++ b/.github/workflows/deploy-hcp-terraform-azure.yml @@ -1,20 +1,20 @@ # Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: MPL-2.0 -name: hashicorp/field-workshops-terraform/deploy-terraform-cloud-aws +name: hashicorp/field-workshops-terraform/deploy-hcp-terraform-azure on: workflow_dispatch: push: branches: - 'main' paths: - - 'instruqt-tracks/terraform-cloud-aws/**' + - 'instruqt-tracks/hcp-terraform-azure/**' permissions: contents: read jobs: deploy-track: uses: ./.github/workflows/instruqt-track-deploy.yml with: - working_directory: "instruqt-tracks/terraform-cloud-aws" + working_directory: "instruqt-tracks/hcp-terraform-azure" INSTRUQT_CLI_URI: ${{ vars.INSTRUQT_CLI_URI }} secrets: INSTRUQT_TOKEN: ${{ secrets.INSTRUQT_TOKEN }} diff --git a/.github/workflows/deploy-terraform-cloud-bonus-lab.yml b/.github/workflows/deploy-hcp-terraform-bonus-lab.yml similarity index 68% rename from .github/workflows/deploy-terraform-cloud-bonus-lab.yml rename to .github/workflows/deploy-hcp-terraform-bonus-lab.yml index 495d47a9..b4cdc88c 100644 --- a/.github/workflows/deploy-terraform-cloud-bonus-lab.yml +++ b/.github/workflows/deploy-hcp-terraform-bonus-lab.yml @@ -1,20 +1,20 @@ # Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: MPL-2.0 -name: hashicorp/field-workshops-terraform/deploy-terraform-cloud-bonus-lab +name: hashicorp/field-workshops-terraform/deploy-hcp-terraform-bonus-lab on: workflow_dispatch: push: branches: - 'main' paths: - - 'instruqt-tracks/terraform-cloud-bonus-lab/**' + - 'instruqt-tracks/hcp-terraform-bonus-lab/**' permissions: contents: read jobs: deploy-track: uses: ./.github/workflows/instruqt-track-deploy.yml with: - working_directory: "instruqt-tracks/terraform-cloud-bonus-lab" + working_directory: "instruqt-tracks/hcp-terraform-bonus-lab" INSTRUQT_CLI_URI: ${{ vars.INSTRUQT_CLI_URI }} secrets: INSTRUQT_TOKEN: ${{ secrets.INSTRUQT_TOKEN }} diff --git a/.github/workflows/deploy-terraform-cloud-azure-v2.yml b/.github/workflows/deploy-hcp-terraform-gcp-v2.yml similarity index 68% rename from .github/workflows/deploy-terraform-cloud-azure-v2.yml rename to .github/workflows/deploy-hcp-terraform-gcp-v2.yml index 938848cc..8c3a00f7 100644 --- a/.github/workflows/deploy-terraform-cloud-azure-v2.yml +++ b/.github/workflows/deploy-hcp-terraform-gcp-v2.yml @@ -1,20 +1,20 @@ # Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: MPL-2.0 -name: hashicorp/field-workshops-terraform/deploy-terraform-cloud-azure-v2 +name: hashicorp/field-workshops-terraform/deploy-hcp-terraform-gcp-v2 on: workflow_dispatch: push: branches: - 'main' paths: - - 'instruqt-tracks/terraform-cloud-azure-v2/**' + - 'instruqt-tracks/hcp-terraform-gcp-v2/**' permissions: contents: read jobs: deploy-track: uses: ./.github/workflows/instruqt-track-deploy.yml with: - working_directory: "instruqt-tracks/terraform-cloud-azure-v2" + working_directory: "instruqt-tracks/hcp-terraform-gcp-v2" INSTRUQT_CLI_URI: ${{ vars.INSTRUQT_CLI_URI }} secrets: INSTRUQT_TOKEN: ${{ secrets.INSTRUQT_TOKEN }} diff --git a/.github/workflows/deploy-terraform-cloud-azure.yml b/.github/workflows/deploy-hcp-terraform-gcp.yml similarity index 69% rename from .github/workflows/deploy-terraform-cloud-azure.yml rename to .github/workflows/deploy-hcp-terraform-gcp.yml index 9f178f51..18af02cc 100644 --- a/.github/workflows/deploy-terraform-cloud-azure.yml +++ b/.github/workflows/deploy-hcp-terraform-gcp.yml @@ -1,20 +1,20 @@ # Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: MPL-2.0 -name: hashicorp/field-workshops-terraform/deploy-terraform-cloud-azure +name: hashicorp/field-workshops-terraform/deploy-hcp-terraform-gcp on: workflow_dispatch: push: branches: - 'main' paths: - - 'instruqt-tracks/terraform-cloud-azure/**' + - 'instruqt-tracks/hcp-terraform-gcp/**' permissions: contents: read jobs: deploy-track: uses: ./.github/workflows/instruqt-track-deploy.yml with: - working_directory: "instruqt-tracks/terraform-cloud-azure" + working_directory: "instruqt-tracks/hcp-terraform-gcp" INSTRUQT_CLI_URI: ${{ vars.INSTRUQT_CLI_URI }} secrets: INSTRUQT_TOKEN: ${{ secrets.INSTRUQT_TOKEN }} diff --git a/.github/workflows/nightly-test.yml b/.github/workflows/nightly-test.yml index 1974fbe3..723174d8 100644 --- a/.github/workflows/nightly-test.yml +++ b/.github/workflows/nightly-test.yml @@ -30,22 +30,22 @@ jobs: working_directory: instruqt-tracks/sentinel-for-terraform-v4 secrets: INSTRUQT_TOKEN: ${{ secrets.INSTRUQT_TOKEN }} - terraform-cloud-aws: + hcp-terraform-aws: uses: ./.github/workflows/instruqt-track-test.yml with: - working_directory: instruqt-tracks/terraform-cloud-aws + working_directory: instruqt-tracks/hcp-terraform-aws secrets: INSTRUQT_TOKEN: ${{ secrets.INSTRUQT_TOKEN }} - terraform-cloud-azure: + hcp-terraform-azure: uses: ./.github/workflows/instruqt-track-test.yml with: - working_directory: instruqt-tracks/terraform-cloud-azure + working_directory: instruqt-tracks/hcp-terraform-azure secrets: INSTRUQT_TOKEN: ${{ secrets.INSTRUQT_TOKEN }} - terraform-cloud-gcp: + hcp-terraform-gcp: uses: ./.github/workflows/instruqt-track-test.yml with: - working_directory: instruqt-tracks/terraform-cloud-gcp + working_directory: instruqt-tracks/hcp-terraform-gcp secrets: INSTRUQT_TOKEN: ${{ secrets.INSTRUQT_TOKEN }} terraform-foundations-aws: @@ -76,9 +76,9 @@ jobs: needs: - sentinel-cli-basics - sentinel-for-terraform-v4 - - terraform-cloud-aws - - terraform-cloud-azure - - terraform-cloud-gcp + - hcp-terraform-aws + - hcp-terraform-azure + - hcp-terraform-gcp - terraform-foundations-aws - terraform-intro-aws - terraform-intro-azure diff --git a/README.md b/README.md index 60552a2a..a175ab3b 100644 --- a/README.md +++ b/README.md @@ -33,11 +33,11 @@ When creating slides for a new workshop, you will need to do the following: ] ``` -Whether you create a single-part or multi-part slide show, users will be able to access all of your slides with a URL like https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/index.html, but they can leave off `index.html`. +Whether you create a single-part or multi-part slide show, users will be able to access all of your slides with a URL like https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/index.html, but they can leave off `index.html`. If you create a multi-part slide show, users will also be able to access each part of your slide show separately at URLs like these: -* https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/terraform-1.html -* https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/terraform-2.html +* https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/terraform-1.html +* https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/terraform-2.html Each workshop should give the full link (or links) to that workshop's slides in one of its first few slides. diff --git a/docs/index.md b/docs/index.md index 62844a21..0919fe47 100644 --- a/docs/index.md +++ b/docs/index.md @@ -29,7 +29,7 @@ name: terraform-workshops ### This repository contains Terraform workshops. * They are organized by cloud. * Workshops for each cloud are organized by type: - 1. Terraform OSS + 1. Terraform Community Edition 1. Terraform Enterprise ??? @@ -49,9 +49,9 @@ You can also indent one kind of list under another as done in this slide. To ma name:workshop-slides # Viewing Workshop Slides #### You can view workshop slides with URLs like these: -* https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/index.html -* https://hashicorp.github.io/field-workshops-terraform/slides/azure/terraform-oss/index.html -* https://hashicorp.github.io/field-workshops-terraform/slides/gcp/terraform-oss/index.html +* https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/index.html +* https://hashicorp.github.io/field-workshops-terraform/slides/azure/terraform-community/index.html +* https://hashicorp.github.io/field-workshops-terraform/slides/gcp/terraform-community/index.html ??? The workshop slides are written in Remark.js. diff --git a/docs/slides/aws/terraform-cloud-v2/fav-icon/android-chrome-192x192.png b/docs/slides/aws/hcp-terraform-v2/fav-icon/android-chrome-192x192.png similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/fav-icon/android-chrome-192x192.png rename to docs/slides/aws/hcp-terraform-v2/fav-icon/android-chrome-192x192.png diff --git a/docs/slides/aws/terraform-cloud-v2/fav-icon/android-chrome-512x512.png b/docs/slides/aws/hcp-terraform-v2/fav-icon/android-chrome-512x512.png similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/fav-icon/android-chrome-512x512.png rename to docs/slides/aws/hcp-terraform-v2/fav-icon/android-chrome-512x512.png diff --git a/docs/slides/aws/terraform-cloud-v2/fav-icon/apple-touch-icon.png b/docs/slides/aws/hcp-terraform-v2/fav-icon/apple-touch-icon.png similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/fav-icon/apple-touch-icon.png rename to docs/slides/aws/hcp-terraform-v2/fav-icon/apple-touch-icon.png diff --git a/docs/slides/aws/terraform-cloud-v2/fav-icon/browserconfig.xml b/docs/slides/aws/hcp-terraform-v2/fav-icon/browserconfig.xml similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/fav-icon/browserconfig.xml rename to docs/slides/aws/hcp-terraform-v2/fav-icon/browserconfig.xml diff --git a/docs/slides/aws/terraform-cloud-v2/fav-icon/favicon-16x16.png b/docs/slides/aws/hcp-terraform-v2/fav-icon/favicon-16x16.png similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/fav-icon/favicon-16x16.png rename to docs/slides/aws/hcp-terraform-v2/fav-icon/favicon-16x16.png diff --git a/docs/slides/aws/terraform-cloud-v2/fav-icon/favicon-32x32.png b/docs/slides/aws/hcp-terraform-v2/fav-icon/favicon-32x32.png similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/fav-icon/favicon-32x32.png rename to docs/slides/aws/hcp-terraform-v2/fav-icon/favicon-32x32.png diff --git a/docs/slides/aws/terraform-cloud-v2/fav-icon/favicon.ico b/docs/slides/aws/hcp-terraform-v2/fav-icon/favicon.ico similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/fav-icon/favicon.ico rename to docs/slides/aws/hcp-terraform-v2/fav-icon/favicon.ico diff --git a/docs/slides/aws/terraform-cloud-v2/fav-icon/icon.svg b/docs/slides/aws/hcp-terraform-v2/fav-icon/icon.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/fav-icon/icon.svg rename to docs/slides/aws/hcp-terraform-v2/fav-icon/icon.svg diff --git a/docs/slides/aws/terraform-cloud-v2/fav-icon/mstile-150x150.png b/docs/slides/aws/hcp-terraform-v2/fav-icon/mstile-150x150.png similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/fav-icon/mstile-150x150.png rename to docs/slides/aws/hcp-terraform-v2/fav-icon/mstile-150x150.png diff --git a/docs/slides/aws/terraform-cloud-v2/fav-icon/safari-pinned-tab.svg b/docs/slides/aws/hcp-terraform-v2/fav-icon/safari-pinned-tab.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/fav-icon/safari-pinned-tab.svg rename to docs/slides/aws/hcp-terraform-v2/fav-icon/safari-pinned-tab.svg diff --git a/docs/slides/aws/terraform-cloud-v2/fav-icon/site.webmanifest b/docs/slides/aws/hcp-terraform-v2/fav-icon/site.webmanifest similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/fav-icon/site.webmanifest rename to docs/slides/aws/hcp-terraform-v2/fav-icon/site.webmanifest diff --git a/docs/slides/aws/terraform-cloud-v2/images/2022_hashiconf_tuesday_089_0499.jpg b/docs/slides/aws/hcp-terraform-v2/images/2022_hashiconf_tuesday_089_0499.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/2022_hashiconf_tuesday_089_0499.jpg rename to docs/slides/aws/hcp-terraform-v2/images/2022_hashiconf_tuesday_089_0499.jpg diff --git a/docs/slides/aws/terraform-cloud-v2/images/HCP_Diagram_OnBlack_Terraform.svg b/docs/slides/aws/hcp-terraform-v2/images/HCP_Diagram_OnBlack_Terraform.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/HCP_Diagram_OnBlack_Terraform.svg rename to docs/slides/aws/hcp-terraform-v2/images/HCP_Diagram_OnBlack_Terraform.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/adoption_journey_groups.svg b/docs/slides/aws/hcp-terraform-v2/images/adoption_journey_groups.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/adoption_journey_groups.svg rename to docs/slides/aws/hcp-terraform-v2/images/adoption_journey_groups.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/adoption_journey_individual.svg b/docs/slides/aws/hcp-terraform-v2/images/adoption_journey_individual.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/adoption_journey_individual.svg rename to docs/slides/aws/hcp-terraform-v2/images/adoption_journey_individual.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/adoption_journey_multiple_groups.svg b/docs/slides/aws/hcp-terraform-v2/images/adoption_journey_multiple_groups.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/adoption_journey_multiple_groups.svg rename to docs/slides/aws/hcp-terraform-v2/images/adoption_journey_multiple_groups.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/adoption_journey_organization.svg b/docs/slides/aws/hcp-terraform-v2/images/adoption_journey_organization.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/adoption_journey_organization.svg rename to docs/slides/aws/hcp-terraform-v2/images/adoption_journey_organization.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/automated-testing.svg b/docs/slides/aws/hcp-terraform-v2/images/automated-testing.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/automated-testing.svg rename to docs/slides/aws/hcp-terraform-v2/images/automated-testing.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/code_example.svg b/docs/slides/aws/hcp-terraform-v2/images/code_example.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/code_example.svg rename to docs/slides/aws/hcp-terraform-v2/images/code_example.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/collaboration_experience.svg b/docs/slides/aws/hcp-terraform-v2/images/collaboration_experience.svg similarity index 97% rename from docs/slides/aws/terraform-cloud-v2/images/collaboration_experience.svg rename to docs/slides/aws/hcp-terraform-v2/images/collaboration_experience.svg index 39a24566..420a6a2a 100644 --- a/docs/slides/aws/terraform-cloud-v2/images/collaboration_experience.svg +++ b/docs/slides/aws/hcp-terraform-v2/images/collaboration_experience.svg @@ -36,8 +36,8 @@ as-code modules, policies and integration run tasks. - - Use Terraform Cloud to + + Use HCP Terraform to safely store sensitive materials, including Terraform plans and diff --git a/docs/slides/aws/terraform-cloud-v2/images/contract-testing.svg b/docs/slides/aws/hcp-terraform-v2/images/contract-testing.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/contract-testing.svg rename to docs/slides/aws/hcp-terraform-v2/images/contract-testing.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/deployment_variables.svg b/docs/slides/aws/hcp-terraform-v2/images/deployment_variables.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/deployment_variables.svg rename to docs/slides/aws/hcp-terraform-v2/images/deployment_variables.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/integration-testing.svg b/docs/slides/aws/hcp-terraform-v2/images/integration-testing.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/integration-testing.svg rename to docs/slides/aws/hcp-terraform-v2/images/integration-testing.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/organization_workflow.svg b/docs/slides/aws/hcp-terraform-v2/images/organization_workflow.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/organization_workflow.svg rename to docs/slides/aws/hcp-terraform-v2/images/organization_workflow.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/pac_technical_workflow.svg b/docs/slides/aws/hcp-terraform-v2/images/pac_technical_workflow.svg similarity index 99% rename from docs/slides/aws/terraform-cloud-v2/images/pac_technical_workflow.svg rename to docs/slides/aws/hcp-terraform-v2/images/pac_technical_workflow.svg index 91122d29..7cac4b11 100644 --- a/docs/slides/aws/terraform-cloud-v2/images/pac_technical_workflow.svg +++ b/docs/slides/aws/hcp-terraform-v2/images/pac_technical_workflow.svg @@ -87,7 +87,7 @@ - + diff --git a/docs/slides/aws/terraform-cloud-v2/images/part_01.png b/docs/slides/aws/hcp-terraform-v2/images/part_01.png similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/part_01.png rename to docs/slides/aws/hcp-terraform-v2/images/part_01.png diff --git a/docs/slides/aws/terraform-cloud-v2/images/part_02.png b/docs/slides/aws/hcp-terraform-v2/images/part_02.png similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/part_02.png rename to docs/slides/aws/hcp-terraform-v2/images/part_02.png diff --git a/docs/slides/aws/terraform-cloud-v2/images/part_03.png b/docs/slides/aws/hcp-terraform-v2/images/part_03.png similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/part_03.png rename to docs/slides/aws/hcp-terraform-v2/images/part_03.png diff --git a/docs/slides/aws/terraform-cloud-v2/images/part_04.png b/docs/slides/aws/hcp-terraform-v2/images/part_04.png similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/part_04.png rename to docs/slides/aws/hcp-terraform-v2/images/part_04.png diff --git a/docs/slides/aws/terraform-cloud-v2/images/permissions_model.svg b/docs/slides/aws/hcp-terraform-v2/images/permissions_model.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/permissions_model.svg rename to docs/slides/aws/hcp-terraform-v2/images/permissions_model.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/pmr_technical_workflow.svg b/docs/slides/aws/hcp-terraform-v2/images/pmr_technical_workflow.svg similarity index 99% rename from docs/slides/aws/terraform-cloud-v2/images/pmr_technical_workflow.svg rename to docs/slides/aws/hcp-terraform-v2/images/pmr_technical_workflow.svg index d940f87a..e1ee191a 100644 --- a/docs/slides/aws/terraform-cloud-v2/images/pmr_technical_workflow.svg +++ b/docs/slides/aws/hcp-terraform-v2/images/pmr_technical_workflow.svg @@ -87,7 +87,7 @@ - + diff --git a/docs/slides/aws/terraform-cloud-v2/images/policy-as-code.svg b/docs/slides/aws/hcp-terraform-v2/images/policy-as-code.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/policy-as-code.svg rename to docs/slides/aws/hcp-terraform-v2/images/policy-as-code.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/policy_as_code_workflow.svg b/docs/slides/aws/hcp-terraform-v2/images/policy_as_code_workflow.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/policy_as_code_workflow.svg rename to docs/slides/aws/hcp-terraform-v2/images/policy_as_code_workflow.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/projects-and-workspaces.svg b/docs/slides/aws/hcp-terraform-v2/images/projects-and-workspaces.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/projects-and-workspaces.svg rename to docs/slides/aws/hcp-terraform-v2/images/projects-and-workspaces.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/sole_practitioner.svg b/docs/slides/aws/hcp-terraform-v2/images/sole_practitioner.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/sole_practitioner.svg rename to docs/slides/aws/hcp-terraform-v2/images/sole_practitioner.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/team_collaboration.svg b/docs/slides/aws/hcp-terraform-v2/images/team_collaboration.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/team_collaboration.svg rename to docs/slides/aws/hcp-terraform-v2/images/team_collaboration.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/terraform-modules.svg b/docs/slides/aws/hcp-terraform-v2/images/terraform-modules.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/terraform-modules.svg rename to docs/slides/aws/hcp-terraform-v2/images/terraform-modules.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/terraform_adoption_journey_yt.png b/docs/slides/aws/hcp-terraform-v2/images/terraform_adoption_journey_yt.png similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/terraform_adoption_journey_yt.png rename to docs/slides/aws/hcp-terraform-v2/images/terraform_adoption_journey_yt.png diff --git a/docs/slides/aws/terraform-cloud-v2/images/terraform_api.svg b/docs/slides/aws/hcp-terraform-v2/images/terraform_api.svg similarity index 99% rename from docs/slides/aws/terraform-cloud-v2/images/terraform_api.svg rename to docs/slides/aws/hcp-terraform-v2/images/terraform_api.svg index 6310b0d0..dceb0e6c 100644 --- a/docs/slides/aws/terraform-cloud-v2/images/terraform_api.svg +++ b/docs/slides/aws/hcp-terraform-v2/images/terraform_api.svg @@ -314,8 +314,8 @@ - - Terraform Cloud + + HCP Terraform diff --git a/docs/slides/aws/terraform-cloud-v2/images/terraform_callout_pattern_dark.svg b/docs/slides/aws/hcp-terraform-v2/images/terraform_callout_pattern_dark.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/terraform_callout_pattern_dark.svg rename to docs/slides/aws/hcp-terraform-v2/images/terraform_callout_pattern_dark.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/terraform_callout_pattern_light.svg b/docs/slides/aws/hcp-terraform-v2/images/terraform_callout_pattern_light.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/terraform_callout_pattern_light.svg rename to docs/slides/aws/hcp-terraform-v2/images/terraform_callout_pattern_light.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/terraform_cloud.svg b/docs/slides/aws/hcp-terraform-v2/images/terraform_cloud.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/terraform_cloud.svg rename to docs/slides/aws/hcp-terraform-v2/images/terraform_cloud.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/terraform_cloud_cicd.svg b/docs/slides/aws/hcp-terraform-v2/images/terraform_cloud_cicd.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/terraform_cloud_cicd.svg rename to docs/slides/aws/hcp-terraform-v2/images/terraform_cloud_cicd.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_modules.svg b/docs/slides/aws/hcp-terraform-v2/images/terraform_modules.svg similarity index 99% rename from docs/slides/korean/aws/terraform-cloud-v2/images/terraform_modules.svg rename to docs/slides/aws/hcp-terraform-v2/images/terraform_modules.svg index 36245c04..74c89d4b 100644 --- a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_modules.svg +++ b/docs/slides/aws/hcp-terraform-v2/images/terraform_modules.svg @@ -128,7 +128,7 @@ - + diff --git a/docs/slides/aws/terraform-cloud-v2/images/terraform_registry.svg b/docs/slides/aws/hcp-terraform-v2/images/terraform_registry.svg similarity index 99% rename from docs/slides/aws/terraform-cloud-v2/images/terraform_registry.svg rename to docs/slides/aws/hcp-terraform-v2/images/terraform_registry.svg index fb472500..21f64290 100644 --- a/docs/slides/aws/terraform-cloud-v2/images/terraform_registry.svg +++ b/docs/slides/aws/hcp-terraform-v2/images/terraform_registry.svg @@ -268,8 +268,8 @@ - - Terraform Cloud + + HCP Terraform diff --git a/docs/slides/gcp/terraform-cloud-v2/images/terraform_workflow.svg b/docs/slides/aws/hcp-terraform-v2/images/terraform_workflow.svg similarity index 99% rename from docs/slides/gcp/terraform-cloud-v2/images/terraform_workflow.svg rename to docs/slides/aws/hcp-terraform-v2/images/terraform_workflow.svg index 47bf7c14..5e693a7f 100644 --- a/docs/slides/gcp/terraform-cloud-v2/images/terraform_workflow.svg +++ b/docs/slides/aws/hcp-terraform-v2/images/terraform_workflow.svg @@ -441,7 +441,7 @@ - Terraform Cloud integrates into + HCP Terraform integrates into workflow by faciliating resources, execution steps and maintenace diff --git a/docs/slides/aws/terraform-cloud-v2/images/unit-testing.svg b/docs/slides/aws/hcp-terraform-v2/images/unit-testing.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/unit-testing.svg rename to docs/slides/aws/hcp-terraform-v2/images/unit-testing.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/vcs_connection_overview.svg b/docs/slides/aws/hcp-terraform-v2/images/vcs_connection_overview.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/vcs_connection_overview.svg rename to docs/slides/aws/hcp-terraform-v2/images/vcs_connection_overview.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/vcs_workflow_overview.svg b/docs/slides/aws/hcp-terraform-v2/images/vcs_workflow_overview.svg similarity index 99% rename from docs/slides/korean/aws/terraform-cloud-v2/images/vcs_workflow_overview.svg rename to docs/slides/aws/hcp-terraform-v2/images/vcs_workflow_overview.svg index aa52adb0..3a7fe98e 100644 --- a/docs/slides/korean/aws/terraform-cloud-v2/images/vcs_workflow_overview.svg +++ b/docs/slides/aws/hcp-terraform-v2/images/vcs_workflow_overview.svg @@ -121,7 +121,7 @@ - + diff --git a/docs/slides/aws/terraform-cloud-v2/images/workspace-state.svg b/docs/slides/aws/hcp-terraform-v2/images/workspace-state.svg similarity index 100% rename from docs/slides/aws/terraform-cloud-v2/images/workspace-state.svg rename to docs/slides/aws/hcp-terraform-v2/images/workspace-state.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/index.html b/docs/slides/aws/hcp-terraform-v2/index.html similarity index 99% rename from docs/slides/gcp/terraform-cloud-v2/index.html rename to docs/slides/aws/hcp-terraform-v2/index.html index 30733d53..cb778b33 100644 --- a/docs/slides/gcp/terraform-cloud-v2/index.html +++ b/docs/slides/aws/hcp-terraform-v2/index.html @@ -7,7 +7,7 @@ - Terraform Cloud on GCP + HCP Terraform on AWS @@ -358,7 +358,7 @@ // want to ignore. The following slides do not active the // lightbox - this is an all-or-nothing approach and can be improved. const ignore_ids = [ - "slide-Intro-to-Terraform-Cloud", + "slide-Intro-to-hcp-terraform", "slide-terraform-adoption-journey", "slide-lab-guidance-01", "slide-lab-guidance-02", diff --git a/docs/slides/aws/terraform-cloud-v2/index.md b/docs/slides/aws/hcp-terraform-v2/index.md similarity index 78% rename from docs/slides/aws/terraform-cloud-v2/index.md rename to docs/slides/aws/hcp-terraform-v2/index.md index b79d3a6f..a1c3af89 100644 --- a/docs/slides/aws/terraform-cloud-v2/index.md +++ b/docs/slides/aws/hcp-terraform-v2/index.md @@ -1,15 +1,15 @@ -name: Intro-to-Terraform-Cloud +name: Intro-to-hcp-terraform class: center, middle, title-slide, no-footer count: true ![:scale 40%](images/HCP_Diagram_OnBlack_Terraform.svg) -# Terraform Cloud on AWS +# HCP Terraform on AWS ??? -# Terraform Cloud on AWS workshop +# HCP Terraform on AWS workshop ## Getting started -This is a half-day workshop that introduces Terraform Cloud using an AWS-based application for the Instruqt labs. If you're brand new to Terraform you should try the Introduction to Terraform Community Edition on AWS Instruqt track before this one. +This is a half-day workshop that introduces HCP Terraform using an AWS-based application for the Instruqt labs. If you're brand new to Terraform you should try the Introduction to Terraform Community Edition on AWS Instruqt track before this one. -The instructions on how to conduct a workshop are in the standard [instructor's guide](https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_terraform_cloud_INSTRUCTOR_GUIDE.md). +The instructions on how to conduct a workshop are in the standard [instructor's guide](https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_hcp_terraform_INSTRUCTOR_GUIDE.md). ## Navigation @@ -65,9 +65,9 @@ Standardize infrastructure across your provisioning processes using your private 2. If your audience is less than 20 people you have the option to quickly go through the room and ask everyone to introduce themselves if they wish to participate. ## Goals for the workshop -1. Launch a deployment to AWS using Terraform Cloud using VCS workflows +1. Launch a deployment to AWS using HCP Terraform using VCS workflows 2. Explore management and configuration options with team permissions and deployment policies -3. Test the Private Module Registry and some API functions +3. Test the Terraform Private Registry and some API functions --- name: Table-of-Contents @@ -77,7 +77,7 @@ class: col-2, top, minimal-list, minimal-toc **1- Infrastructure Automation** * Terraform Adoption Journey * Terraform Editions -* Terraform Cloud +* HCP Terraform
@@ -96,7 +96,7 @@ class: col-2, top, minimal-list, minimal-toc
**4- Terraform Modules & API** -* Private Module Registry +* Terraform Private Registry * API Driven Workflows * CI/CD Integration @@ -129,7 +129,7 @@ class: table-exercises

Part 1

  • Getting Started - Explore the Lab
  • -
  • Terraform Cloud Setup
  • +
  • HCP Terraform Setup
  • Safekeeping your Terraform State
  • Quiz 1: Terraform Remote State
@@ -138,7 +138,7 @@ class: table-exercises

Part 2

  • Workspace variables
  • -
  • Working with Teams in Terraform Cloud
  • +
  • Working with Teams in HCP Terraform
  • Quiz 2: Secure Variables
@@ -156,9 +156,9 @@ class: table-exercises

Part 4

    -
  • Private Module Registry
  • +
  • Terraform Private Registry
  • API Driven Workflows
  • -
  • Quiz 4: Private Module Registry
  • +
  • Quiz 4: Terraform Private Registry
@@ -184,12 +184,12 @@ class: table-exercises name: participant-requirements class: col-3, header-adjust, minimal-list # Participant Requirements -### Terraform Cloud -- Terraform Cloud account (free) +### HCP Terraform +- HCP Terraform account (free) - Terraform "___Plus Tier___" Trial -- Terraform Cloud personal access token +- HCP Terraform personal access token ### GitHub - Personal account @@ -232,11 +232,11 @@ This chapter is organized in three sections: 2. Terraform Editions - - Understand Terraform Community Edition and the differences between Community Edition and Cloud and Enterprise + - Understand Terraform Community Edition and the differences between Community Edition and HCP and Enterprise -3. Benefits of using Terraform Cloud +3. Benefits of using HCP Terraform - - Hightlight the key benefits of using Terraform Cloud to + - Hightlight the key benefits of using HCP Terraform to - Build infrastructure, - Standardize best practices, and @@ -401,14 +401,14 @@ class: col-3, header-adjust, header-adjust-minimal-list * Manually pull and commit the most up-to-date version to perform Terraform operations * Use and publish public modules as infrastructure templates -### Terraform Cloud -* Integrate Terraform Cloud into your existing workflows +### HCP Terraform +* Integrate HCP Terraform into your existing workflows * Ensure that only approved teams can access, edit, and provision infrastructure * Publish configuration modules in a private registry to define approved infrastructure patterns * Enforce best practices and security rules with policy as code framework ### Terraform Enterprise -* Set up a private instance of Terraform Cloud with dedicated support from HashiCorp +* Set up a private instance of HCP Terraform with dedicated support from HashiCorp * Accommodate advanced security and compliance requirements ??? @@ -420,19 +420,19 @@ class: col-3, header-adjust, header-adjust-minimal-list - Terraform contains everything you need to configure, plan and deploy -## Terraform Cloud -- Terraform Cloud is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments with Terraform +## HCP Terraform +- HCP Terraform is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments with Terraform -- Terraform Cloud provides features to manage user access, assign team permissions, automate integrations, host private resources, enforce policies, conduct audit, etc. +- HCP Terraform provides features to manage user access, assign team permissions, automate integrations, host private resources, enforce policies, conduct audit, etc. ## Terraform Enteprise -- Terraform Enterprise is private instance of Terraform Cloud deployed in a private environment with dedicated support from HashiCorp. +- Terraform Enterprise is private instance of HCP Terraform deployed in a private environment with dedicated support from HashiCorp. - Terraform Enterprise appeals to security conscious organizations that must accommodate advanced security and compliance requirements. --- -name: terraform-cloud +name: hcp-terraform class: col-2, header-adjust, minimal-list -# Terraform Cloud +# HCP Terraform ### Single control plane for provisioning * Fully-managed, infrastructure-as-code cloud service @@ -443,21 +443,21 @@ class: col-2, header-adjust, minimal-list * Enterprise features to provide advanced security, compliance and governance -![Terraform Cloud](images/terraform_cloud.svg) +![HCP Terraform](images/terraform_cloud.svg) ??? -# Terraform Cloud +# HCP Terraform -## Why Terraform Cloud? +## Why HCP Terraform? -- Terraform Cloud enables infrastructure automation for provisioning, compliance, and management of any cloud, datacenter, and service. +- HCP Terraform enables infrastructure automation for provisioning, compliance, and management of any cloud, datacenter, and service. -- Terraform Cloud provides infrastructure automation as a service, is free to get started, and has an in-place upgrade to paid option. +- HCP Terraform provides infrastructure automation as a service, is free to get started, and has an in-place upgrade to paid option. -- Terraform Cloud is not the same as Terraform Community Edition. Terraform Cloud is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. +- HCP Terraform is not the same as Terraform Community Edition. HCP Terraform is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. --- -name: terraform-cloud-build +name: hcp-terraform-build class: col-2, header-adjust, minimal-paragraph # Build infrastructure remotely with your team @@ -477,11 +477,11 @@ Review and comment on plans before executing any change to infrastructure # Build infrastructure remotely with your team - This slide is about **`team collaboration`** across an organization. -- Terraform Cloud provides a number of features for teams to collaborate with a common purpose. +- HCP Terraform provides a number of features for teams to collaborate with a common purpose. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a story that fits your narrative. For example: -1. **Remote state storage**: Remove a vulnerable part of the process by storing the deployment state in Terraform Cloud, where it is stored in an encrypted format at rest. +1. **Remote state storage**: Remove a vulnerable part of the process by storing the deployment state in HCP Terraform, where it is stored in an encrypted format at rest. 2. **Flexible workflows**: Allow practitioners to use the apprach that works best for their situation. @@ -490,7 +490,7 @@ Review and comment on plans before executing any change to infrastructure 4. **Collaborate on infrastructure changes**: Each team is responsible for their domain of expertise. --- -name: terraform-cloud-standard +name: hcp-terraform-standard class: col-3, header-adjust, minimal-list # Standardize best practices ###Private registry @@ -506,7 +506,7 @@ class: col-3, header-adjust, minimal-list # Standardize best practices - This slide is about **`business calibration`** when adopting a service for deployment automation. -- Terraform Cloud introduces workflow features for teams to support typical enterprise requirements. +- HCP Terraform introduces workflow features for teams to support typical enterprise requirements. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a point that fits your narrative. For example: @@ -517,14 +517,14 @@ class: col-3, header-adjust, minimal-list 3. **Policy as code**: Remove risk with standard deployments, avoiding common misconfigurations, maintaining security standards and confirming compliance requirements. --- -name: terraform-cloud-cicd +name: hcp-terraform-cicd class: col-2, header-adjust, minimal-paragraph # Integrating into your CI/CD pipelines ###CI/CD integration Integrate Terraform runs into your existing toolchain for improved automation ###API-driven Operations -Build Terraform Cloud into your existing automation workflows +Build HCP Terraform into your existing automation workflows ###Concurrent runs Increase your team’s velocity by adding concurrent runs to your plan @@ -535,17 +535,17 @@ Execute Terraform runs from behind your firewall or connect to other private res # Standardize best practices - This slide is about **`process optimization`** in service delivery. -- Terraform Cloud integrates in various forms to enhance existing service delivery models. +- HCP Terraform integrates in various forms to enhance existing service delivery models. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a point that fits your narrative. For example: -1. **CI/CD integration**: Inject automation into your service delivery practice, where Terraform Cloud works alongside your service management requests and fullfilment channels. +1. **CI/CD integration**: Inject automation into your service delivery practice, where HCP Terraform works alongside your service management requests and fullfilment channels. 2. **Concurrent runs**: Accelerate delivery and control the rate of deployments; support seasonal, high-intensity service delivery workloads. -3. **API-driven Operations**: Support an API-first methodology and align with your existing service management practices. Terraform Cloud offers multiple API-driven methods to complement the chain of operations in existing automation workflows. +3. **API-driven Operations**: Support an API-first methodology and align with your existing service management practices. HCP Terraform offers multiple API-driven methods to complement the chain of operations in existing automation workflows. -4. **Private datacenter connectivity**: Extend Terraform Cloud features and workflow steps to private networks that include Cloud and traditional datacenter environments. +4. **Private datacenter connectivity**: Extend HCP Terraform features and workflow steps to private networks that include Cloud and traditional datacenter environments. --- name: lab-guidance-01 @@ -559,14 +559,14 @@ class: col-2, adjust-minimal-sub-list * Set up Code Editor * Try out Terraform commands -1. Terraform Cloud Setup - * Sign-up or log in to Terraform Cloud +1. HCP Terraform Setup + * Sign-up or log in to HCP Terraform * Create a Plus Tier trial organization - * Generate a personal Terraform Cloud token + * Generate a personal HCP Terraform token 1. Safekeeping Your Terraform State * Deploy a working app environment in AWS - * Use Terraform Cloud to manage Terraform state + * Use HCP Terraform to manage Terraform state - Quiz 1 - Terraform Remote State ??? @@ -607,14 +607,14 @@ class: review, no-footer 1. The adoption journey of infrastructure-as-code with Terraform includes phases of maturity for individuals, groups, and organizations -2. Terraform Cloud is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments +2. HCP Terraform is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments ??? # Chapter 1 review 1. The adoption patterns we see, both among our large-scale users as well as individual contributors, involve multiple adaptive stages. The central idea remains uniform in that automation should be standardized as shared practice, and that governance guidelines are needed to support emerging requirements. -2. Terraform Cloud is not the same as Terraform Community Edition. Terraform Cloud is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. We use Terraform Cloud to manage the lifecyle of infrastructure deployemnts using Terraform [Community]. +2. HCP Terraform is not the same as Terraform Community Edition. HCP Terraform is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. We use HCP Terraform to manage the lifecyle of infrastructure deployemnts using Terraform [Community]. --- name: Access-Control class: title, no-footer @@ -628,9 +628,9 @@ class: title, no-footer This chapter is organized in three sections: 1. The Core Terraform Workflow - - Review the benefits of the Core Terraform Workflow with Terraform Cloud + - Review the benefits of the Core Terraform Workflow with HCP Terraform -2. Shared Resources in Terraform Cloud +2. Shared Resources in HCP Terraform - Projects and Workspaces - Deployment State @@ -638,7 +638,7 @@ This chapter is organized in three sections: 3. Team Collaboration - - Hightlight how teams access shared resources in Terraform Cloud + - Hightlight how teams access shared resources in HCP Terraform - How to apply the resources in a typical project lifecycle **INSTRUCTOR NOTE**: Remind the audience the topics above are showcased in the lab portion. @@ -697,28 +697,28 @@ class: col-3, header-adjust, header-adjust-minimal-list ![:scale 40%](images/adoption_journey_individual.svg) --- -name: core-terraform-workflow-with-tfc +name: core-terraform-workflow-with-hcp-terraform class: col-3, header-adjust, header-adjust-minimal-list -# The Core Terraform Workflow and Terraform Cloud +# The Core Terraform Workflow and HCP Terraform ### Write * Author infrastructure as code and maintain in VCS * Team members work on authoring config until it is ready to propose changes via a pull request -* Terraform Cloud secures state, input variables, and authorized access +* HCP Terraform secures state, input variables, and authorized access
### Plan * Automated, speculative plans review changes before applying so team members can quickly analyze the full plan details -* Terraform Cloud estimates monthly costs of deployment -* Terraform Cloud evaluates policies against the plan to determine compliance with policy-as-code logic +* HCP Terraform estimates monthly costs of deployment +* HCP Terraform evaluates policies against the plan to determine compliance with policy-as-code logic ### Apply * Team members trigger __apply__ directives via CLI, API or VCS change control -* Authorized Terraform Cloud users can approve or reject deployments -* Terraform Cloud can integrate third-party tools and services to manage cost, security, and compliance; Or, to enhance your workflow with custom logic +* Authorized HCP Terraform users can approve or reject deployments +* HCP Terraform can integrate third-party tools and services to manage cost, security, and compliance; Or, to enhance your workflow with custom logic ??? -# The Core Terraform Workflow and Terraform Cloud +# The Core Terraform Workflow and HCP Terraform - There are still only three stages on the Core Terraform Workflow, but there are significant improvements in the approach to manage deployments. For instance: @@ -732,13 +732,13 @@ class: col-3, header-adjust, header-adjust-minimal-list ![:scale 40%](images/adoption_journey_multiple_groups.svg) --- -name: tfc-workspaces +name: hcp-terraform-workspaces class: col-2, minimal-list # Projects and Workspaces -- Terraform Cloud organizes infrastructure collections with projects and workspaces that align to teams +- HCP Terraform organizes infrastructure collections with projects and workspaces that align to teams -- A project is a logical grouping of Terraform Cloud workspaces +- A project is a logical grouping of HCP Terraform workspaces - Workspaces contain everything Terraform needs to manage a given collection of infrastructure, and separate workspaces function like completely separate working entities @@ -755,19 +755,19 @@ class: col-2, minimal-list - Grouping deployment types by department - Grouping deployment types by team -- Workspaces fit into Projects to execute on the actual deployments. Each workspace follows logic for execution and access rules, policies, resources, integrations, etc. are inherent from the project or Terraform Cloud organization. +- Workspaces fit into Projects to execute on the actual deployments. Each workspace follows logic for execution and access rules, policies, resources, integrations, etc. are inherent from the project or HCP Terraform organization. --- -name: tfc-state +name: hcp-terraform-state class: col-2, minimal-list # Deployment State -- Terraform Cloud retains historical state versions, available for analysis of infrastructure changes over time +- HCP Terraform retains historical state versions, available for analysis of infrastructure changes over time - Authorized users can download and manipulate state to manually import, taint, move, or rename existing resources to match a drift in configuration - Authorized users can roll back to a previous state version with the UI -- Terraform Cloud uses state to measure drift with automated Health Assessments +- HCP Terraform uses state to measure drift with automated Health Assessments ![Browser](images/workspace-state.svg) ??? @@ -780,13 +780,13 @@ class: col-2, minimal-list - All state information is fully encrypted at rest, where each object is encrypted with a unique encryption key. --- -name: tfc-variables +name: hcp-terraform-variables class: col-2, minimal-list # Deployment Variables -- Terraform Cloud supports a global scope with **variable sets**. These can be exposed globaly or to select workspaces +- HCP Terraform supports a global scope with **variable sets**. These can be exposed globaly or to select workspaces -- Terraform Cloud workspaces use local variables - may override variable sets +- HCP Terraform workspaces use local variables - may override variable sets - Variable subsets include @@ -798,7 +798,7 @@ class: col-2, minimal-list
-![Terraform Cloud Variables](images/deployment_variables.svg) +![HCP Terraform Variables](images/deployment_variables.svg) ??? # Deployment Variables @@ -812,29 +812,29 @@ class: col-2, minimal-list - Things that are configured during the deployment. Consider, the internal ID or a Cloud VPC, the ARN of a security group, the URL or a storage bucket. These can be more applicable to workspace variables. --- -name: tfc-user-permissions +name: hcp-terraform-user-permissions class: col-2, minimal-list # Permissions Model -- Users must belong to a team with appropriate grant permissions to perform actions in Terraform Cloud +- Users must belong to a team with appropriate grant permissions to perform actions in HCP Terraform - The permissions model splits into organization-level and workspace-level permissions - Organization owners can grant teams permissions to manage policies, projects and workspaces, VCS settings, private registry providers and modules, and policy overrides across an organization -![Terraform Cloud Permissions Model](images/permissions_model.svg) +![HCP Terraform Permissions Model](images/permissions_model.svg) ??? # Permissions Model -- The permissions model splits into into organization-level and workspace-level permissions. This is the best combination to align administrators, producers and consumers to manage, create and consume resources via Terraform Cloud. +- The permissions model splits into into organization-level and workspace-level permissions. This is the best combination to align administrators, producers and consumers to manage, create and consume resources via HCP Terraform. -- The organization-level permissions use an `Implicit-Deny` - which means Terraform Cloud administration is subject to assignment. In this model, teams fucntion based on their permissions and membership. +- The organization-level permissions use an `Implicit-Deny` - which means HCP Terraform administration is subject to assignment. In this model, teams fucntion based on their permissions and membership. -- The workspace-level permissions have `Implied Permissions` - where Terraform Cloud provides most common functions. Under this model permissions imply other permissions; for example, permission to queue plans also grants permission to read runs. +- The workspace-level permissions have `Implied Permissions` - where HCP Terraform provides most common functions. Under this model permissions imply other permissions; for example, permission to queue plans also grants permission to read runs. -- Q: What complements the permissions model? A: The alignment of Terraform Cloud teams with external teams via single-sign-on (SSO). +- Q: What complements the permissions model? A: The alignment of HCP Terraform teams with external teams via single-sign-on (SSO). --- -name: tfc-team-collaboration +name: hcp-terraform-team-collaboration class: col-2, header-adjust-minimal-list # Team collaboration There are three main elements to the Terraform collaboration experience: @@ -842,11 +842,11 @@ There are three main elements to the Terraform collaboration experience: - **Centralized plans and applies**: Safely run Terraform plans and applies in one location where collaborators can review and make decisions together - **State management**: Store, secure, lock, and version Terraform state files -![Terraform Cloud Permissions Model](images/collaboration_experience.svg) +![HCP Terraform Permissions Model](images/collaboration_experience.svg) ??? # Team collaboration -- The structure of the Möbius strip visual reflects a familiar way to describe a lifecycle process. There are many examples of that idea, and our intent is to explain where Terraform Cloud provides value. +- The structure of the Möbius strip visual reflects a familiar way to describe a lifecycle process. There are many examples of that idea, and our intent is to explain where HCP Terraform provides value. - These concepts likely overlap with existing frameworks and that is why integration resonates with sophisticated environments. @@ -866,10 +866,10 @@ class: col-2, adjust-minimal-sub-list * Explore Variable Sets * Compare workspace variables -1. Working with Teams in Terraform Cloud +1. Working with Teams in HCP Terraform * Create Organization Teams * Assign Workspace Permissions to Teams - * Invite Terraform Cloud users to join Teams + * Invite HCP Terraform users to join Teams - Quiz 2 - Secure Variables @@ -893,16 +893,16 @@ name: chapter-2-review class: review, no-footer # Chapter 2 review -1. Terraform Cloud permissions model splits into organization and workspace levels +1. HCP Terraform permissions model splits into organization and workspace levels -2. Resource administration in Terraform Cloud defaults to an implicit deny-all model, and teams require global, project or workspace assignments +2. Resource administration in HCP Terraform defaults to an implicit deny-all model, and teams require global, project or workspace assignments ??? # Chapter 2 review -1. When teams are intent in formalizing their approach to automated infrastructure deployment with Terraform, there need to be fundamental principals to support a responsible use of Terraform Cloud. The permissions model is a core principle to support governance and responsible use of IaC automation. Without a permissions model, teams operated based on different opinions without self-supervision. +1. When teams are intent in formalizing their approach to automated infrastructure deployment with Terraform, there need to be fundamental principals to support a responsible use of HCP Terraform. The permissions model is a core principle to support governance and responsible use of IaC automation. Without a permissions model, teams operated based on different opinions without self-supervision. -2. When teams have different responsibilities, the platform instrumentation should allow for effective changes at a group level to support roles, not individual identities. Having an implicit `deny-all` for the Terraform Cloud organization, and `implied permissions` for teams and workspaces accelerates the effective purpose of IaC automation. +2. When teams have different responsibilities, the platform instrumentation should allow for effective changes at a group level to support roles, not individual identities. Having an implicit `deny-all` for the HCP Terraform organization, and `implied permissions` for teams and workspaces accelerates the effective purpose of IaC automation. --- name: VCS-and-Governance @@ -937,46 +937,46 @@ This chapter is organized in three sections: **INSTRUCTOR NOTE**: Remind the audience that the hands-on portions of the lab demonstrate the topics above. --- -name: tfc-vcs-workflow +name: hcp-terraform-vcs-workflow class: col-2, minimal-list # VCS Connections -- Access a list of repositories and link to your private module registry, policy sets and workspaces in Terraform Cloud +- Access a list of repositories and link to your Terraform Private Registry, policy sets and workspaces in HCP Terraform -- Terraform Cloud downloads the contents of a repository based on workflow triggers +- HCP Terraform downloads the contents of a repository based on workflow triggers -- Terraform Cloud supports Azure DevOps, BitBucket, GitHub, and GitLab +- HCP Terraform supports Azure DevOps, BitBucket, GitHub, and GitLab ![VCS Workflow Overview](images/vcs_workflow_overview.svg) ??? # VCS Connections -- Terraform Cloud uses VCS connection to link directly to assets in repos +- HCP Terraform uses VCS connection to link directly to assets in repos - VCS connections are configured once and used for three specific types of assets: - 1. Terraform Modules to list in the private Terraform Cloud Registry + 1. Terraform Modules to list in the Terraform Private Registry 2. Policy collections to align with Policy Sets 3. Terraform deployments in a 1:1 relationship with Workspaces -- It is important to remember that Terraform Cloud Worspaces can use up to three types of workflows to trigger a run: 1- `CLI`, 2- `VCS` and 3- `API`. Using VCS satisfies one of these workflow patterns. +- It is important to remember that HCP Terraform Worspaces can use up to three types of workflows to trigger a run: 1- `CLI`, 2- `VCS` and 3- `API`. Using VCS satisfies one of these workflow patterns. --- -name: tfc-vcs-connection +name: hcp-terraform-vcs-connection class: col-2, minimal-list # VCS Workflow -- Workspaces register webhooks with your VCS provider, and Terraform Cloud gets notified of new commits to a branch +- Workspaces register webhooks with your VCS provider, and HCP Terraform gets notified of new commits to a branch -- With VCS integration, Terraform Cloud can automatically initiate a run on a dedicated Terraform Cloud worker +- With VCS integration, HCP Terraform can automatically initiate a run on a dedicated HCP Terraform worker -- Terraform Cloud makes code review easier by automatically predicting how pull requests affect infrastructure with speculative plans +- HCP Terraform makes code review easier by automatically predicting how pull requests affect infrastructure with speculative plans ![VCS Connection Overview](images/vcs_connection_overview.svg) ??? # VCS Workflow -- A VCS connection is established at the administrative level for the VCS provider and Terraform Cloud. +- A VCS connection is established at the administrative level for the VCS provider and HCP Terraform. - From the illustration: @@ -984,24 +984,24 @@ class: col-2, minimal-list 2. Notifications are triggered by pull requests and merges. - 3. The Webhook notifies the associated Terraform Cloud workspace. + 3. The Webhook notifies the associated HCP Terraform workspace. - 4. Terraform Cloud securely retrieves the IaC collection to a secure location in Terraform Cloud. The location is not exposed outside of Terraform Cloud. + 4. HCP Terraform securely retrieves the IaC collection to a secure location in HCP Terraform. The location is not exposed outside of HCP Terraform. - 5. With a pull request, Terraform Cloud runs a speculative plan. + 5. With a pull request, HCP Terraform runs a speculative plan. 6. The results are processed back to the VCS pull request for further processing. 7. With a successful plan, an other validing tests, the pull request is merged. - 8. With an authorized VCS merge, Terraform Cloud initiates a new run and completes the entire set of steps to deploy the environment. + 8. With an authorized VCS merge, HCP Terraform initiates a new run and completes the entire set of steps to deploy the environment. --- -name: tfc-policy-as-code +name: hcp-terraform-policy-as-code class: col-2, minimal-list, constrain-image # Policy As Code -- Terraform Cloud enforces rules with policies written with HashiCorp Sentinel or Open Policy Agent (OPA) +- HCP Terraform enforces rules with policies written with HashiCorp Sentinel or Open Policy Agent (OPA) - Policies are expressed as code and grouped into policy sets @@ -1040,7 +1040,7 @@ The categories above are not exhaustive and there are many other optional catego >> A development group should not deploy a fleet of VMs, any with 8-32 cores and/or 16-64GB memory, on a Friday afternoon past 3PM. --- -name: tfc-policy-as-code-validation +name: hcp-terraform-policy-as-code-validation class: col-2, minimal-list # Automated Policy Validation @@ -1079,7 +1079,7 @@ class: col-2, minimal-list 4. When a policy check fails, the assigned enforcement level determines whether a user with authority can override. --- -name: tfc-vcs-automation +name: hcp-terraform-vcs-automation class: col-3, header-adjust, header-adjust-minimal-paragraph # Automated Testing @@ -1109,7 +1109,7 @@ class: col-3, header-adjust, header-adjust-minimal-paragraph - **Unit testing** looks at expected values in the Terraform plan. -- **Contract testing** compares infrastructure state. Highlight that Terraform Cloud allows state sharing between workspaces to explore key informational data points. +- **Contract testing** compares infrastructure state. Highlight that HCP Terraform allows state sharing between workspaces to explore key informational data points. - **Integration testing** compares ___real___ resources and their interaction. These often include functional, policy and security domains. You can introduce `Run Tasks` as the vehicle to perform this type of testing. @@ -1155,7 +1155,7 @@ class: col-2, adjust-minimal-sub-list **INSTRUCTOR NOTES**: - This is the longest lab portion of the workshop. -- It is possibly the most challenging part for some participants as they have to use GitHub in combination with Terraform Cloud. +- It is possibly the most challenging part for some participants as they have to use GitHub in combination with HCP Terraform. - It is important to remind your audience that the lab is available for 5 hours. - If you have extended the Instruqt Invite beyond the workshop time, you can emphasize. @@ -1164,15 +1164,15 @@ name: chapter-3-review class: review, no-footer # Chapter 3 review -1. Terraform Cloud supports CLI, VCS and API workflows, adapting to different code-management practices +1. HCP Terraform supports CLI, VCS and API workflows, adapting to different code-management practices -2. Terraform Cloud enables testing and validation with policy-as-code, and sustains maintenance with deployment health-checks and alerting +2. HCP Terraform enables testing and validation with policy-as-code, and sustains maintenance with deployment health-checks and alerting ??? # Chapter 3 review -1. Terraform execution is driven by different priorities and the workflows in Terraform Cloud are adaptive. VCS-driven workflows are important for groups that are focused specifically in Infrastructure-as-Code delivery. VCS-driven workflows shorten the knowledge gap between newhires and veterans because they use a common set of defined practices; and VCS-driven workflows flattens the adoption curve for consumers because not everyone needs to learn Terraform. +1. Terraform execution is driven by different priorities and the workflows in HCP Terraform are adaptive. VCS-driven workflows are important for groups that are focused specifically in Infrastructure-as-Code delivery. VCS-driven workflows shorten the knowledge gap between newhires and veterans because they use a common set of defined practices; and VCS-driven workflows flattens the adoption curve for consumers because not everyone needs to learn Terraform. -2. Policy validation is increasingly necessary for all aspect of \[Work\]-as-Code practices. In our case, we truly believe that there should not be ___#YOLO-driven development!___ when dealing with infrastructure deployments. Terraform Cloud provides deployment health-checks and alerting mechanisms to provide continual coverage of emerging changes in infrastructure deployments. +2. Policy validation is increasingly necessary for all aspect of \[Work\]-as-Code practices. In our case, we truly believe that there should not be ___#YOLO-driven development!___ when dealing with infrastructure deployments. HCP Terraform provides deployment health-checks and alerting mechanisms to provide continual coverage of emerging changes in infrastructure deployments. --- name: Modules-and-API class: title, no-footer @@ -1188,13 +1188,13 @@ This chapter is organized in three sections: - Why is the Public Regitry important? - What is the value of Terraform modules? - - The advantage of the Terraform Cloud Private Module Registry (PMR) + - The advantage of the HCP Terraform Private Registry 2. Business Process Models - Trusted Orchestrator - VCS coordination - - Terraform Cloud + - HCP Terraform 3. API-driven workflows @@ -1222,7 +1222,7 @@ class: col-2, minimal-list - The progression of the Terraform journey into teams naturally leads to Terraform modules. These are like templates that teams often customize and use in deployments. -- HashiCorp is comoditazing this centralized registry and extending it to Policy-as-Code and Run Tasks. **Policy-As-Code** are libraries of policies that can be used within Terraform Cloud. **Run Tasks** are third-party integrations to tools and services to manage cost, security, compliance and more. +- HashiCorp is comoditazing this centralized registry and extending it to Policy-as-Code and Run Tasks. **Policy-As-Code** are libraries of policies that can be used within HCP Terraform. **Run Tasks** are third-party integrations to tools and services to manage cost, security, compliance and more. --- name: terraform-modules @@ -1233,7 +1233,7 @@ class: col-2, minimal-list - Producer groups create curated modules as standard, templated offerings with configurable properties -- Modules are maintained in VCS repositories and published to a private registry in Terraform Cloud +- Modules are maintained in VCS repositories and published to a private registry in HCP Terraform ![Terraform Modules](images/terraform_modules.svg) ??? @@ -1244,39 +1244,39 @@ class: col-2, minimal-list - Modules in the Terraform Registry are free to use, and Terraform can download them automatically with an appropriate source and version in a module call block. --- -name: tfc-private-registry +name: hcp-terraform-private-registry class: col-2, minimal-list -# Private Module Registry +# Terraform Private Registry -- Terraform Cloud includes a private registry where teams can set up modules and providers from private VCS repositories +- HCP Terraform includes a private registry where teams can set up modules and providers from private VCS repositories - Many organizations use modules, providers, or policies that cannot or do not need to be publicly available -- Practitioners can copy modules from the public Terraform Registry, customize a private version, and publish to their Private Module Registry in Terraform Cloud +- Practitioners can copy modules from the public Terraform Registry, customize a private version, and publish to their Terraform Private Registry in HCP Terraform ![PMR Workflow](images/pmr_technical_workflow.svg) ??? -# Private Module Registry -- In Terraform Cloud, modules can be privatized to support the idea of a safe sandbox. +# Terraform Private Registry +- In HCP Terraform, modules can be privatized to support the idea of a safe sandbox. - The further a module is configured, the least number of choices consumers need to make to automate their deployments. -- Private modules can referenced arbitrarily, but access to the resource follows the Terraform Cloud permissions model - meaning only teams with access privileges are able to access the module in the private registry, and execution of the code is only possible within a workspace in the same Terraform Cloud organization. +- Private modules can referenced arbitrarily, but access to the resource follows the HCP Terraform permissions model - meaning only teams with access privileges are able to access the module in the private registry, and execution of the code is only possible within a workspace in the same HCP Terraform organization. **INSTRUCTOR NOTE**: -> You can bring up the idea of the Configuration Designer in Terraform Cloud - which leads to no-code provisioning. +> You can bring up the idea of the Configuration Designer in HCP Terraform - which leads to no-code provisioning. > No-code provisioning lets users deploy infrastructure in modules without writing any Terraform configuration, which makes your standards even easier to comply with, and removes the dependency on infrastructure teams or ticketing systems to give developers their required resources. --- -name: tfc-api +name: hcp-terraform-api class: col-2, minimal-list # Terraform API -- Terraform Cloud supports a rich HTTP API to perform most operations, replacing UI directives and CLI commands +- HCP Terraform supports a rich HTTP API to perform most operations, replacing UI directives and CLI commands -- The TFC Terraform Provider is a practical API implementation for automating Terraform Cloud managment with Terraform (HCL) configuration code +- The TFC Terraform Provider is a practical API implementation for automating HCP Terraform managment with Terraform (HCL) configuration code - The Terraform CDK supports the following: @@ -1294,20 +1294,20 @@ class: col-2, minimal-list # Terraform API - Mature IaC practices evolve to delegate tasks through automation. Terraform can be fully operated via API allowing organizations to easily integrate it into their existing deployment processes. -- Terraform Cloud supports multiple instrumentation technologies to implemented automated provisioning. The idea is to support adequate technology frameworks that support a service management practice. +- HCP Terraform supports multiple instrumentation technologies to implemented automated provisioning. The idea is to support adequate technology frameworks that support a service management practice. -- As a whole, the Terraform community provides testing frameworks, pipeline utilities, programming libraries, scripted templates, and repeatable examples to implement Terraform. What is relevant to emphasize is that all of these are 100% compatible with Terraform Cloud, and the time and effort to accomdate those resources is minimal. +- As a whole, the Terraform community provides testing frameworks, pipeline utilities, programming libraries, scripted templates, and repeatable examples to implement Terraform. What is relevant to emphasize is that all of these are 100% compatible with HCP Terraform, and the time and effort to accomdate those resources is minimal. - ->> The real value is the utility of the Terraform echo system and the benefits of Terraform Cloud combined. In blunt words, technology is not a barrier... teams need to commit to the adoption journey. +>> The real value is the utility of the Terraform echo system and the benefits of HCP Terraform combined. In blunt words, technology is not a barrier... teams need to commit to the adoption journey. --- -name: tfc-api-workflows +name: hcp-terraform-api-workflows class: col-2, minimal-list # Service Management -- Terraform Cloud operations can be entirely managed via API, allowing organizations to integrate automated deployments in their existing business processes easily +- HCP Terraform operations can be entirely managed via API, allowing organizations to integrate automated deployments in their existing business processes easily - Trusted orchestrators use the Terraform API to procure resources and coordinate runtime operations @@ -1316,22 +1316,22 @@ class: col-2, minimal-list ![Terraform API](images/terraform_workflow.svg) ??? # Service Management -- In context of service management, the most visible value of Terraform Cloud is the ability to integrate resources, workflow and support capabilites seamlessly. +- In context of service management, the most visible value of HCP Terraform is the ability to integrate resources, workflow and support capabilites seamlessly. -- Terraform Cloud is a cloud service and every functional area is designed with the intention to hand-off to a different one. +- HCP Terraform is a cloud service and every functional area is designed with the intention to hand-off to a different one. -- In the diagram, the main highlight is the HashiCorp accent in pink, which symbolizes the functional areas where Terraform Cloud operates within the service workflow. +- In the diagram, the main highlight is the HashiCorp accent in pink, which symbolizes the functional areas where HCP Terraform operates within the service workflow. -- The illustration is simplified and incomplete as there are many other steps in a formal service management process. As in the illustration of the [Möbius strip](#tfc-team-collaboration), there are many examples of a process idea, and our intent is to explain where Terraform Cloud provides value on day-one. +- The illustration is simplified and incomplete as there are many other steps in a formal service management process. As in the illustration of the [Möbius strip](#hcp-terraform-team-collaboration), there are many examples of a process idea, and our intent is to explain where HCP Terraform provides value on day-one. --- -name: tfc-api-cicd +name: hcp-terraform-api-cicd class: center_p # CICD Integration -Terraform Cloud integrates into your existing CI/CD pipelines, IT service management interfaces, and version control system processes. +HCP Terraform integrates into your existing CI/CD pipelines, IT service management interfaces, and version control system processes. -![Terraform Cloud CIDC](images/terraform_cloud_cicd.svg) +![HCP Terraform CIDC](images/terraform_cloud_cicd.svg) ??? # CICD Integration - The illustration showcases the type of service layers involved in a CI/CD process. Here is a quick breakdown of each from left to right: @@ -1342,7 +1342,7 @@ Terraform Cloud integrates into your existing CI/CD pipelines, IT service manage | ServiceNow | | IT Service management agent that handles requests and triggers work | | Jenkins | | Trusted orchestrator to provide step-by-step functions to deliver the infrastructure | | GitHub | | VCS to manage the lifecycle of IaC, Modules and PaC | -| Terraform Cloud | | Cloud service to manage the lifecyle of an IaC deployment using Terraform | +| HCP Terraform | | Cloud service to manage the lifecyle of an IaC deployment using Terraform | | AWS | | Target environment | > **NOTABLY MISSING** is a secrets management service to safeguard secrets and to manage the lifecyle of those secrets. @@ -1355,7 +1355,7 @@ Terraform Cloud integrates into your existing CI/CD pipelines, IT service manage > | :--------------------: | --- | :------: | --- | :----------: | --- | :----: | > | Korn
C
Bourne | | BladeLogic
Opsware
VMware | | Ansible
Chef
Puppet
Terraform | | Terraform
ARM templates
CloudFormation
GC Deployment Manager | --> -- The overall infrastructure automation space is not new and there have been multiple generations of promising implementation solutions. The true realization of IaC had not happened until Terraform settled as the de facto solution. Terraform Cloud is a next-generation service to support that realization moving forward. +- The overall infrastructure automation space is not new and there have been multiple generations of promising implementation solutions. The true realization of IaC had not happened until Terraform settled as the de facto solution. HCP Terraform is a next-generation service to support that realization moving forward. - It important to highlight the innovative approach from HashiCorp in the IaC space since 2012. @@ -1364,10 +1364,10 @@ name: lab-guidance-04 class: col-2, adjust-minimal-sub-list # Workshop - Part Four -1. Private Module Registry +1. Terraform Private Registry * Implement a Terraform module from the [Terraform Registry](https://registry.terraform.io) * Clone a Terraform Registry module to your private VCS - * Implement a module from your Private Module Registry + * Implement a module from your Terraform Private Registry 1. API Driven Workflows * Test core HTTP API methods @@ -1375,7 +1375,7 @@ class: col-2, adjust-minimal-sub-list * Explore API wrappers concepts * Use continuous integration with GitHub Actions -- Quiz 4 - Private Module Registry +- Quiz 4 - Terraform Private Registry - Clean up @@ -1403,7 +1403,7 @@ class: col-2, adjust-minimal-sub-list - The __Clean up__ challenge removes the following: - AWS deployment of the Hashicat app - - Terraform Cloud configurations + - HCP Terraform configurations - GitHub repo of `hashicat-app` - The __Clean up__ challenge does not remove the cloned module from the Terraform Registry. @@ -1414,13 +1414,13 @@ class: review, no-footer 1. The Private Registry establishes a service catalogue of infrastructure deployments and options for no-code -2. Terraform Cloud supports rich API options that adapt to your existing service model workflows and integrate agnostically into your delivery pipelines +2. HCP Terraform supports rich API options that adapt to your existing service model workflows and integrate agnostically into your delivery pipelines ??? # Chapter 4 review -1. The Public Terraform Registry and the Private Module Registry (PMR) serve a similar function purpose. The main difference is that the PMR is designed to support privacy and security controls. +1. The Public Terraform Registry and the Terraform Private Registry serve a similar function purpose. The main difference is that the PMR is designed to support privacy and security controls. -2. When using Terraform Cloud, stake-holders should expect to maximize the use of automation to support service management processes via service delivery pipelines. The Terraform Cloud API promotes an API-first approach and it contains a vast array of instrumentation options to satisfy most use cases. +2. When using HCP Terraform, stake-holders should expect to maximize the use of automation to support service management processes via service delivery pipelines. The HCP Terraform API promotes an API-first approach and it contains a vast array of instrumentation options to satisfy most use cases. --- name: additional-resources class: header-adjust, minimal @@ -1430,7 +1430,7 @@ Learn at your own pace in one place with reference docs, step by step tutorials, ### HashiCorp Community Join our forum or a user group to engage and learn from the broader community. `https://www.hashicorp.com/community` ### HashiCorp Forum -Terraform, Terraform Cloud, Terraform Enterprise, and CDK for Terraform use cases, questions, and best practices discussions. `https://discuss.hashicorp.com` +Terraform, HCP Terraform, Terraform Enterprise, and CDK for Terraform use cases, questions, and best practices discussions. `https://discuss.hashicorp.com` ??? # Additional Resources diff --git a/docs/slides/aws/terraform-cloud/images/Terraform_VerticalLogo_FullColor.png b/docs/slides/aws/hcp-terraform/images/Terraform_VerticalLogo_FullColor.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/Terraform_VerticalLogo_FullColor.png rename to docs/slides/aws/hcp-terraform/images/Terraform_VerticalLogo_FullColor.png diff --git a/docs/slides/aws/terraform-cloud/images/add_a_module.png b/docs/slides/aws/hcp-terraform/images/add_a_module.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/add_a_module.png rename to docs/slides/aws/hcp-terraform/images/add_a_module.png diff --git a/docs/slides/aws/terraform-cloud/images/aws_add_a_module.png b/docs/slides/aws/hcp-terraform/images/aws_add_a_module.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/aws_add_a_module.png rename to docs/slides/aws/hcp-terraform/images/aws_add_a_module.png diff --git a/docs/slides/aws/terraform-cloud/images/aws_add_policy_to_policy_set.png b/docs/slides/aws/hcp-terraform/images/aws_add_policy_to_policy_set.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/aws_add_policy_to_policy_set.png rename to docs/slides/aws/hcp-terraform/images/aws_add_policy_to_policy_set.png diff --git a/docs/slides/aws/terraform-cloud/images/aws_confirm_destroy.png b/docs/slides/aws/hcp-terraform/images/aws_confirm_destroy.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/aws_confirm_destroy.png rename to docs/slides/aws/hcp-terraform/images/aws_confirm_destroy.png diff --git a/docs/slides/aws/terraform-cloud/images/aws_encrypted_vars.png b/docs/slides/aws/hcp-terraform/images/aws_encrypted_vars.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/aws_encrypted_vars.png rename to docs/slides/aws/hcp-terraform/images/aws_encrypted_vars.png diff --git a/docs/slides/aws/terraform-cloud/images/aws_pmr.png b/docs/slides/aws/hcp-terraform/images/aws_pmr.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/aws_pmr.png rename to docs/slides/aws/hcp-terraform/images/aws_pmr.png diff --git a/docs/slides/aws/terraform-cloud/images/aws_policy_name_and_mode.png b/docs/slides/aws/hcp-terraform/images/aws_policy_name_and_mode.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/aws_policy_name_and_mode.png rename to docs/slides/aws/hcp-terraform/images/aws_policy_name_and_mode.png diff --git a/docs/slides/aws/terraform-cloud/images/aws_policy_set_settings.png b/docs/slides/aws/hcp-terraform/images/aws_policy_set_settings.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/aws_policy_set_settings.png rename to docs/slides/aws/hcp-terraform/images/aws_policy_set_settings.png diff --git a/docs/slides/aws/terraform-cloud/images/aws_vpc_module.png b/docs/slides/aws/hcp-terraform/images/aws_vpc_module.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/aws_vpc_module.png rename to docs/slides/aws/hcp-terraform/images/aws_vpc_module.png diff --git a/docs/slides/aws/terraform-cloud/images/change_to_local.png b/docs/slides/aws/hcp-terraform/images/change_to_local.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/change_to_local.png rename to docs/slides/aws/hcp-terraform/images/change_to_local.png diff --git a/docs/slides/aws/terraform-cloud/images/checklist.jpg b/docs/slides/aws/hcp-terraform/images/checklist.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/checklist.jpg rename to docs/slides/aws/hcp-terraform/images/checklist.jpg diff --git a/docs/slides/aws/terraform-cloud/images/choose_an_org.png b/docs/slides/aws/hcp-terraform/images/choose_an_org.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/choose_an_org.png rename to docs/slides/aws/hcp-terraform/images/choose_an_org.png diff --git a/docs/slides/aws/terraform-cloud/images/choose_org.png b/docs/slides/aws/hcp-terraform/images/choose_org.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/choose_org.png rename to docs/slides/aws/hcp-terraform/images/choose_org.png diff --git a/docs/slides/aws/terraform-cloud/images/choose_training_org.png b/docs/slides/aws/hcp-terraform/images/choose_training_org.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/choose_training_org.png rename to docs/slides/aws/hcp-terraform/images/choose_training_org.png diff --git a/docs/slides/aws/terraform-cloud/images/cloud_overview_aws.png b/docs/slides/aws/hcp-terraform/images/cloud_overview_aws.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/cloud_overview_aws.png rename to docs/slides/aws/hcp-terraform/images/cloud_overview_aws.png diff --git a/docs/slides/aws/terraform-cloud/images/cloud_overview_generic.png b/docs/slides/aws/hcp-terraform/images/cloud_overview_generic.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/cloud_overview_generic.png rename to docs/slides/aws/hcp-terraform/images/cloud_overview_generic.png diff --git a/docs/slides/aws/terraform-cloud/images/code_example.png b/docs/slides/aws/hcp-terraform/images/code_example.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/code_example.png rename to docs/slides/aws/hcp-terraform/images/code_example.png diff --git a/docs/slides/aws/terraform-cloud/images/commitstrip_devops.jpg b/docs/slides/aws/hcp-terraform/images/commitstrip_devops.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/commitstrip_devops.jpg rename to docs/slides/aws/hcp-terraform/images/commitstrip_devops.jpg diff --git a/docs/slides/aws/terraform-cloud/images/create_a_new_policy.png b/docs/slides/aws/hcp-terraform/images/create_a_new_policy.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/create_a_new_policy.png rename to docs/slides/aws/hcp-terraform/images/create_a_new_policy.png diff --git a/docs/slides/aws/terraform-cloud/images/create_a_new_policy_set_gui.png b/docs/slides/aws/hcp-terraform/images/create_a_new_policy_set_gui.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/create_a_new_policy_set_gui.png rename to docs/slides/aws/hcp-terraform/images/create_a_new_policy_set_gui.png diff --git a/docs/slides/aws/terraform-cloud/images/create_policy_button.png b/docs/slides/aws/hcp-terraform/images/create_policy_button.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/create_policy_button.png rename to docs/slides/aws/hcp-terraform/images/create_policy_button.png diff --git a/docs/slides/aws/terraform-cloud/images/create_repo_workspace.png b/docs/slides/aws/hcp-terraform/images/create_repo_workspace.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/create_repo_workspace.png rename to docs/slides/aws/hcp-terraform/images/create_repo_workspace.png diff --git a/docs/slides/aws/terraform-cloud/images/create_workspace_gui.png b/docs/slides/aws/hcp-terraform/images/create_workspace_gui.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/create_workspace_gui.png rename to docs/slides/aws/hcp-terraform/images/create_workspace_gui.png diff --git a/docs/slides/aws/terraform-cloud/images/create_workspace_gui2.png b/docs/slides/aws/hcp-terraform/images/create_workspace_gui2.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/create_workspace_gui2.png rename to docs/slides/aws/hcp-terraform/images/create_workspace_gui2.png diff --git a/docs/slides/aws/terraform-cloud/images/destroy_gui.png b/docs/slides/aws/hcp-terraform/images/destroy_gui.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/destroy_gui.png rename to docs/slides/aws/hcp-terraform/images/destroy_gui.png diff --git a/docs/slides/aws/terraform-cloud/images/distributed_vcs.png b/docs/slides/aws/hcp-terraform/images/distributed_vcs.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/distributed_vcs.png rename to docs/slides/aws/hcp-terraform/images/distributed_vcs.png diff --git a/docs/slides/aws/terraform-cloud/images/dog_homework.jpg b/docs/slides/aws/hcp-terraform/images/dog_homework.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/dog_homework.jpg rename to docs/slides/aws/hcp-terraform/images/dog_homework.jpg diff --git a/docs/slides/aws/terraform-cloud/images/enable_auto_apply.png b/docs/slides/aws/hcp-terraform/images/enable_auto_apply.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/enable_auto_apply.png rename to docs/slides/aws/hcp-terraform/images/enable_auto_apply.png diff --git a/docs/slides/aws/terraform-cloud/images/encryption.jpg b/docs/slides/aws/hcp-terraform/images/encryption.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/encryption.jpg rename to docs/slides/aws/hcp-terraform/images/encryption.jpg diff --git a/docs/slides/aws/terraform-cloud/images/enter_the_matrix.jpg b/docs/slides/aws/hcp-terraform/images/enter_the_matrix.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/enter_the_matrix.jpg rename to docs/slides/aws/hcp-terraform/images/enter_the_matrix.jpg diff --git a/docs/slides/aws/terraform-cloud/images/fork.png b/docs/slides/aws/hcp-terraform/images/fork.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/fork.png rename to docs/slides/aws/hcp-terraform/images/fork.png diff --git a/docs/slides/aws/terraform-cloud/images/get-started-tfe.png b/docs/slides/aws/hcp-terraform/images/get-started-tfe.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/get-started-tfe.png rename to docs/slides/aws/hcp-terraform/images/get-started-tfe.png diff --git a/docs/slides/aws/terraform-cloud/images/git_commit_log.png b/docs/slides/aws/hcp-terraform/images/git_commit_log.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/git_commit_log.png rename to docs/slides/aws/hcp-terraform/images/git_commit_log.png diff --git a/docs/slides/aws/terraform-cloud/images/git_log.png b/docs/slides/aws/hcp-terraform/images/git_log.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/git_log.png rename to docs/slides/aws/hcp-terraform/images/git_log.png diff --git a/docs/slides/aws/terraform-cloud/images/git_noobs.png b/docs/slides/aws/hcp-terraform/images/git_noobs.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/git_noobs.png rename to docs/slides/aws/hcp-terraform/images/git_noobs.png diff --git a/docs/slides/aws/terraform-cloud/images/git_triggered_run.png b/docs/slides/aws/hcp-terraform/images/git_triggered_run.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/git_triggered_run.png rename to docs/slides/aws/hcp-terraform/images/git_triggered_run.png diff --git a/docs/slides/aws/terraform-cloud/images/git_workflow_tests.png b/docs/slides/aws/hcp-terraform/images/git_workflow_tests.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/git_workflow_tests.png rename to docs/slides/aws/hcp-terraform/images/git_workflow_tests.png diff --git a/docs/slides/aws/terraform-cloud/images/hashimoo.png b/docs/slides/aws/hcp-terraform/images/hashimoo.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/hashimoo.png rename to docs/slides/aws/hcp-terraform/images/hashimoo.png diff --git a/docs/slides/aws/terraform-cloud/images/integrate_github.png b/docs/slides/aws/hcp-terraform/images/integrate_github.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/integrate_github.png rename to docs/slides/aws/hcp-terraform/images/integrate_github.png diff --git a/docs/slides/aws/terraform-cloud/images/kitt_scanner.gif b/docs/slides/aws/hcp-terraform/images/kitt_scanner.gif similarity index 100% rename from docs/slides/aws/terraform-cloud/images/kitt_scanner.gif rename to docs/slides/aws/hcp-terraform/images/kitt_scanner.gif diff --git a/docs/slides/aws/terraform-cloud/images/lego_wallpaper.jpg b/docs/slides/aws/hcp-terraform/images/lego_wallpaper.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/lego_wallpaper.jpg rename to docs/slides/aws/hcp-terraform/images/lego_wallpaper.jpg diff --git a/docs/slides/aws/terraform-cloud/images/live_demo.jpg b/docs/slides/aws/hcp-terraform/images/live_demo.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/live_demo.jpg rename to docs/slides/aws/hcp-terraform/images/live_demo.jpg diff --git a/docs/slides/aws/terraform-cloud/images/mars_terraform.jpg b/docs/slides/aws/hcp-terraform/images/mars_terraform.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/mars_terraform.jpg rename to docs/slides/aws/hcp-terraform/images/mars_terraform.jpg diff --git a/docs/slides/aws/terraform-cloud/images/marscolony.jpg b/docs/slides/aws/hcp-terraform/images/marscolony.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/marscolony.jpg rename to docs/slides/aws/hcp-terraform/images/marscolony.jpg diff --git a/docs/slides/aws/terraform-cloud/images/meow_world.png b/docs/slides/aws/hcp-terraform/images/meow_world.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/meow_world.png rename to docs/slides/aws/hcp-terraform/images/meow_world.png diff --git a/docs/slides/aws/terraform-cloud/images/merge_pull_request.png b/docs/slides/aws/hcp-terraform/images/merge_pull_request.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/merge_pull_request.png rename to docs/slides/aws/hcp-terraform/images/merge_pull_request.png diff --git a/docs/slides/aws/terraform-cloud/images/policy_workspaces.png b/docs/slides/aws/hcp-terraform/images/policy_workspaces.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/policy_workspaces.png rename to docs/slides/aws/hcp-terraform/images/policy_workspaces.png diff --git a/docs/slides/aws/terraform-cloud/images/protect_master.png b/docs/slides/aws/hcp-terraform/images/protect_master.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/protect_master.png rename to docs/slides/aws/hcp-terraform/images/protect_master.png diff --git a/docs/slides/aws/terraform-cloud/images/queue_a_plan.png b/docs/slides/aws/hcp-terraform/images/queue_a_plan.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/queue_a_plan.png rename to docs/slides/aws/hcp-terraform/images/queue_a_plan.png diff --git a/docs/slides/aws/terraform-cloud/images/queue_destroy_plan.png b/docs/slides/aws/hcp-terraform/images/queue_destroy_plan.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/queue_destroy_plan.png rename to docs/slides/aws/hcp-terraform/images/queue_destroy_plan.png diff --git a/docs/slides/aws/terraform-cloud/images/rebuild_lab_environment.png b/docs/slides/aws/hcp-terraform/images/rebuild_lab_environment.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/rebuild_lab_environment.png rename to docs/slides/aws/hcp-terraform/images/rebuild_lab_environment.png diff --git a/docs/slides/aws/terraform-cloud/images/remote_execution.png b/docs/slides/aws/hcp-terraform/images/remote_execution.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/remote_execution.png rename to docs/slides/aws/hcp-terraform/images/remote_execution.png diff --git a/docs/slides/aws/terraform-cloud/images/remote_state_free.png b/docs/slides/aws/hcp-terraform/images/remote_state_free.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/remote_state_free.png rename to docs/slides/aws/hcp-terraform/images/remote_state_free.png diff --git a/docs/slides/aws/terraform-cloud/images/sandbox.png b/docs/slides/aws/hcp-terraform/images/sandbox.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/sandbox.png rename to docs/slides/aws/hcp-terraform/images/sandbox.png diff --git a/docs/slides/aws/terraform-cloud/images/secure_lock.jpg b/docs/slides/aws/hcp-terraform/images/secure_lock.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/secure_lock.jpg rename to docs/slides/aws/hcp-terraform/images/secure_lock.jpg diff --git a/docs/slides/aws/terraform-cloud/images/security_lasers.jpg b/docs/slides/aws/hcp-terraform/images/security_lasers.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/security_lasers.jpg rename to docs/slides/aws/hcp-terraform/images/security_lasers.jpg diff --git a/docs/slides/aws/terraform-cloud/images/select_default_shell.png b/docs/slides/aws/hcp-terraform/images/select_default_shell.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/select_default_shell.png rename to docs/slides/aws/hcp-terraform/images/select_default_shell.png diff --git a/docs/slides/aws/terraform-cloud/images/select_git_bash.png b/docs/slides/aws/hcp-terraform/images/select_git_bash.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/select_git_bash.png rename to docs/slides/aws/hcp-terraform/images/select_git_bash.png diff --git a/docs/slides/aws/terraform-cloud/images/select_git_bash_2.png b/docs/slides/aws/hcp-terraform/images/select_git_bash_2.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/select_git_bash_2.png rename to docs/slides/aws/hcp-terraform/images/select_git_bash_2.png diff --git a/docs/slides/aws/terraform-cloud/images/self_service.png b/docs/slides/aws/hcp-terraform/images/self_service.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/self_service.png rename to docs/slides/aws/hcp-terraform/images/self_service.png diff --git a/docs/slides/aws/terraform-cloud/images/set_prefix_gui.png b/docs/slides/aws/hcp-terraform/images/set_prefix_gui.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/set_prefix_gui.png rename to docs/slides/aws/hcp-terraform/images/set_prefix_gui.png diff --git a/docs/slides/aws/terraform-cloud/images/t2micro_instance_type.png b/docs/slides/aws/hcp-terraform/images/t2micro_instance_type.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/t2micro_instance_type.png rename to docs/slides/aws/hcp-terraform/images/t2micro_instance_type.png diff --git a/docs/slides/aws/terraform-cloud/images/team_workspace_acls.png b/docs/slides/aws/hcp-terraform/images/team_workspace_acls.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/team_workspace_acls.png rename to docs/slides/aws/hcp-terraform/images/team_workspace_acls.png diff --git a/docs/slides/aws/terraform-cloud/images/teams_emoji.png b/docs/slides/aws/hcp-terraform/images/teams_emoji.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/teams_emoji.png rename to docs/slides/aws/hcp-terraform/images/teams_emoji.png diff --git a/docs/slides/aws/terraform-cloud/images/teams_gui.png b/docs/slides/aws/hcp-terraform/images/teams_gui.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/teams_gui.png rename to docs/slides/aws/hcp-terraform/images/teams_gui.png diff --git a/docs/slides/aws/terraform-cloud/images/teams_list.png b/docs/slides/aws/hcp-terraform/images/teams_list.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/teams_list.png rename to docs/slides/aws/hcp-terraform/images/teams_list.png diff --git a/docs/slides/aws/terraform-cloud/images/teamwork.png b/docs/slides/aws/hcp-terraform/images/teamwork.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/teamwork.png rename to docs/slides/aws/hcp-terraform/images/teamwork.png diff --git a/docs/slides/aws/terraform-cloud/images/terraform_on_prem.png b/docs/slides/aws/hcp-terraform/images/terraform_on_prem.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/terraform_on_prem.png rename to docs/slides/aws/hcp-terraform/images/terraform_on_prem.png diff --git a/docs/slides/aws/terraform-cloud/images/terraform_scifi.jpg b/docs/slides/aws/hcp-terraform/images/terraform_scifi.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/terraform_scifi.jpg rename to docs/slides/aws/hcp-terraform/images/terraform_scifi.jpg diff --git a/docs/slides/aws/terraform-cloud/images/tf_aws.png b/docs/slides/aws/hcp-terraform/images/tf_aws.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/tf_aws.png rename to docs/slides/aws/hcp-terraform/images/tf_aws.png diff --git a/docs/slides/aws/terraform-cloud/images/tf_cloud_signup.png b/docs/slides/aws/hcp-terraform/images/tf_cloud_signup.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/tf_cloud_signup.png rename to docs/slides/aws/hcp-terraform/images/tf_cloud_signup.png diff --git a/docs/slides/aws/terraform-cloud/images/tf_cloud_welcome.png b/docs/slides/aws/hcp-terraform/images/tf_cloud_welcome.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/tf_cloud_welcome.png rename to docs/slides/aws/hcp-terraform/images/tf_cloud_welcome.png diff --git a/docs/slides/aws/terraform-cloud/images/tfc-gui.png b/docs/slides/aws/hcp-terraform/images/tfc-gui.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/tfc-gui.png rename to docs/slides/aws/hcp-terraform/images/tfc-gui.png diff --git a/docs/slides/aws/terraform-cloud/images/tfelogo.png b/docs/slides/aws/hcp-terraform/images/tfelogo.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/tfelogo.png rename to docs/slides/aws/hcp-terraform/images/tfelogo.png diff --git a/docs/slides/aws/terraform-cloud/images/the_huddle.jpg b/docs/slides/aws/hcp-terraform/images/the_huddle.jpg similarity index 100% rename from docs/slides/aws/terraform-cloud/images/the_huddle.jpg rename to docs/slides/aws/hcp-terraform/images/the_huddle.jpg diff --git a/docs/slides/aws/terraform-cloud/images/uat_branch.png b/docs/slides/aws/hcp-terraform/images/uat_branch.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/uat_branch.png rename to docs/slides/aws/hcp-terraform/images/uat_branch.png diff --git a/docs/slides/aws/terraform-cloud/images/variables_answer.png b/docs/slides/aws/hcp-terraform/images/variables_answer.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/variables_answer.png rename to docs/slides/aws/hcp-terraform/images/variables_answer.png diff --git a/docs/slides/aws/terraform-cloud/images/vcs_success.png b/docs/slides/aws/hcp-terraform/images/vcs_success.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/vcs_success.png rename to docs/slides/aws/hcp-terraform/images/vcs_success.png diff --git a/docs/slides/aws/terraform-cloud/images/welcome_arcade.png b/docs/slides/aws/hcp-terraform/images/welcome_arcade.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/welcome_arcade.png rename to docs/slides/aws/hcp-terraform/images/welcome_arcade.png diff --git a/docs/slides/aws/terraform-cloud/images/workspaces_gui.png b/docs/slides/aws/hcp-terraform/images/workspaces_gui.png similarity index 100% rename from docs/slides/aws/terraform-cloud/images/workspaces_gui.png rename to docs/slides/aws/hcp-terraform/images/workspaces_gui.png diff --git a/docs/slides/aws/terraform-cloud/index.html b/docs/slides/aws/hcp-terraform/index.html similarity index 98% rename from docs/slides/aws/terraform-cloud/index.html rename to docs/slides/aws/hcp-terraform/index.html index b4eb854c..51060f02 100644 --- a/docs/slides/aws/terraform-cloud/index.html +++ b/docs/slides/aws/hcp-terraform/index.html @@ -7,7 +7,7 @@ - Terraform Cloud on AWS + HCP Terraform on AWS diff --git a/docs/slides/aws/terraform-cloud/index.md b/docs/slides/aws/hcp-terraform/index.md similarity index 76% rename from docs/slides/aws/terraform-cloud/index.md rename to docs/slides/aws/hcp-terraform/index.md index d37ed099..5cfa50e5 100644 --- a/docs/slides/aws/terraform-cloud/index.md +++ b/docs/slides/aws/hcp-terraform/index.md @@ -1,19 +1,19 @@ -name: Intro-to-Terraform-Cloud +name: Intro-to-hcp-terraform class: center,middle,title-slide count: false

![:scale 60%](images/tf_aws.png)

-# Terraform Cloud on AWS +# HCP Terraform on AWS ??? -**Welcome to the Terraform Cloud on AWS workshop. This is a one day workshop that introduces free and paid features of Terraform Cloud, including Terraform Cloud for Business, using an AWS-based application for the tech labs. If you're brand new to Terraform you should try the Introduction to Terraform OSS on AWS Instruqt track before this one.** +**Welcome to the HCP Terraform on AWS workshop. This is a one day workshop that introduces free and paid features of HCP Terraform, including HCP Terraform Plus, using an AWS-based application for the tech labs. If you're brand new to Terraform you should try the Introduction to Terraform Community on AWS Instruqt track before this one.** -**Terraform Cloud and Terraform Enterprise have almost identical feature sets so we'll be using Terraform Cloud as our training environment today.** +**HCP Terraform and Terraform Enterprise have almost identical feature sets so we'll be using HCP Terraform as our training environment today.** -INSTRUCTOR GUIDE LINK: https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_terraform_cloud_INSTRUCTOR_GUIDE.md +INSTRUCTOR GUIDE LINK: https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_hcp_terraform_INSTRUCTOR_GUIDE.md -INSTRUCTOR NOTE: Welcome to Terraform Cloud on AWS. This slide deck is written entirely in Markdown language, which means you can make edits or additions then submit a pull request to add your changes to the main branch. To make edits to the slide deck simply fork this repository, edit the Markdown file(s), and submit a pull request with your changes. You can easily test a local copy of the slide deck with this python one-liner: +INSTRUCTOR NOTE: Welcome to HCP Terraform on AWS. This slide deck is written entirely in Markdown language, which means you can make edits or additions then submit a pull request to add your changes to the main branch. To make edits to the slide deck simply fork this repository, edit the Markdown file(s), and submit a pull request with your changes. You can easily test a local copy of the slide deck with this python one-liner: ``` python -m SimpleHTTPServer @@ -58,7 +58,7 @@ If your audience is less than 25 people you can quickly go through the room and Now introduce yourself, tell a story, give the audience something to think about. If you don't have a story borrow someone else's: https://www.youtube.com/watch?v=h970ZBgKINg --- -name: tfc-link-to-slide-deck +name: hcp-terraform-link-to-slide-deck # The Slide Deck


.center[ @@ -76,8 +76,8 @@ class: col-2 # Table of Contents
-1. OSS to Cloud/Enterprise
-🌥️ Terraform Cloud Overview
+1. Community to HCP/Enterprise
+🌥️ HCP Terraform Overview
👨🏽‍🏫 Review the Basics
🔗 Configure Remote State

@@ -91,7 +91,7 @@ class: col-2 👮 Sentinel Policy Enforcement

4. Terraform Modules & API
-⚙️ Private Module Registry
+⚙️ Terraform Private Registry
🏗️ API Driven Workflows

5. Extra Resources
@@ -109,10 +109,10 @@ name: TFE-Chapter-1 class: title # Chapter 1 -## Terraform OSS, Cloud and Enterprise +## Terraform Community, HCP Terraform and Enterprise ??? -**In the first chapter we'll cover Terraform open source and some of the differences between OSS and Cloud and Enterprise.** +**In the first chapter we'll cover Terraform Community Edition and some of the differences between Community and HCP Terraform and Enterprise.** --- name: terraform-user-journey @@ -169,11 +169,11 @@ name: self-service-infra Enable users to build what they need without running up a huge bill or putting your organization at risk. ??? -**Terraform Cloud encourages safe provisioning via reusable modules and policy enforcement. Now users can build exactly what they need to do their jobs without breaking things or putting your organization at risk. A slow and cumbersome approval process is no longer required because the automation enforces best practices without manual code reviews.** +**HCP Terraform encourages safe provisioning via reusable modules and policy enforcement. Now users can build exactly what they need to do their jobs without breaking things or putting your organization at risk. A slow and cumbersome approval process is no longer required because the automation enforces best practices without manual code reviews.** --- -name: terraform-cloud-what-is-it -# Terraform Cloud - The Big Picture +name: hcp-terraform-what-is-it +# HCP Terraform - The Big Picture .center[ ![:scale 90%](images/cloud_overview_aws.png) @@ -182,34 +182,34 @@ name: terraform-cloud-what-is-it ??? **This slide shows the end state of our workshop. Over on the left our infrastructure folks have created some reusable modules that the rest of our users can implement in their own terraform code. These modules ensure that infrastructure components like networks and VMs get built correctly every time, and they also make it easy for the user to build the "right stuff" on their own.** -**In the next stage our user is writing terraform code and checking it into a Version Control System. This ensures that each and every change meant for production is recorded and reviewed. This is so important. It requires discipline and cooperation from all of your devops and infrastructure admins. When new code is committed to the master branch it triggers a plan in Terraform Cloud/Enterprise.** +**In the next stage our user is writing terraform code and checking it into a Version Control System. This ensures that each and every change meant for production is recorded and reviewed. This is so important. It requires discipline and cooperation from all of your devops and infrastructure admins. When new code is committed to the master branch it triggers a plan in HCP Terraform/Terraform Enterprise.** -**With a centralized Terraform service, either Terraform Cloud, or Terraform Enterprise, we have remote execution and state management. Now you're not running terraform on your laptop like it's the wild west of cloud provisioning; instead all terraform runs happen in secure docker containers that run on our SaaS platform, or in your own data center. This allows you to encrypt and secure all your API keys, variables, and terraform state files. Access is granted only to authorized users.** +**With a centralized Terraform service, either HCP Terraform, or Terraform Enterprise, we have remote execution and state management. Now you're not running terraform on your laptop like it's the wild west of cloud provisioning; instead all terraform runs happen in secure docker containers that run on our SaaS platform, or in your own data center. This allows you to encrypt and secure all your API keys, variables, and terraform state files. Access is granted only to authorized users.** **All your terraform state files are safely stored and encrypted on the server side. Any time you need to make a change to any of your infrastructure, Terraform knows the last state it was in and can build incrementally based on what has changed. Need to add more instances to a cluster? No problem, terraform can do that for you without a complete tear-down and rebuild.** **Before every terraform apply, you can run Sentinel policy checks against the proposed infrastructure plan to catch any policy violations. For example you might not want the devs creating super XL instances that cost a lot of money to run. You can write a simple rule that restricts developer workspaces to only using m3.medium sized instances, unless they get special permission for more.** -**Role-based access controls allow different types of users to interact with Terraform cloud according to their level of access. You might have super admins who can control everything in the organization, then regular users who can run terraform but only in dev environments. Another group might be able to push changes to production, while some users may have read-only access. Terraform Cloud/Enterprise is a true multi-tenant application.** +**Role-based access controls allow different types of users to interact with HCP Terraform according to their level of access. You might have super admins who can control everything in the organization, then regular users who can run terraform but only in dev environments. Another group might be able to push changes to production, while some users may have read-only access. HCP Terraform/Terraform Enterprise is a true multi-tenant application.** --- -name: why-tfc-1 +name: why-hcp-terraform-1 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: ??? -**Let's go through a quick bullet list of Terraform Cloud features and why they matter.** +**Let's go through a quick bullet list of HCP Terraform features and why they matter.** --- -name: why-tfc-2 +name: why-hcp-terraform-2 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS @@ -217,12 +217,12 @@ Terraform Cloud/Enterprise is an application that provides the following feature **As your organization begins to standardize on Terraform, you'll have different types of users. Most of you will become terraform experts, but there may be others who just want to build things. They can use the terraform code that folks like you have written. To make this process easy, we have a web application. You log on, click a button, and out pops your infrastructure.** --- -name: why-tfc-3 +name: why-hcp-terraform-3 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows @@ -233,120 +233,120 @@ Terraform Cloud/Enterprise is an application that provides the following feature **APIs are the building blocks of any modern cloud automation system. By using standard, well defined APIs you ensure that your infrastructure pipelines will be ready to adapt to any future changes.** --- -name: why-tfc-4 +name: why-hcp-terraform-4 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management ??? -**Terraform Cloud/Enterprise also provides safe and secure storage for your state files. Instead of having that important state file stored on someone's laptop, now it is safely stored in the Terraform application. Only those who need access to the state file can see it, and it is protected from being overwritten or corrupted.** +**HCP Terraform/Terraform Enterprise also provides safe and secure storage for your state files. Instead of having that important state file stored on someone's laptop, now it is safely stored in the Terraform application. Only those who need access to the state file can see it, and it is protected from being overwritten or corrupted.** --- -name: why-tfc-5 +name: why-hcp-terraform-5 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry ??? -**Eventually you'll have a library of Terraform code that you might like to share and publish for other users and teams in your company. The private module registry makes this easy. You build reusable modules that build infrastructure according to standards, and then publish them for your users. This can help with enforcing security policies and build standards.** +**Eventually you'll have a library of Terraform code that you might like to share and publish for other users and teams in your company. The Terraform Private Registry makes this easy. You build reusable modules that build infrastructure according to standards, and then publish them for your users. This can help with enforcing security policies and build standards.** --- -name: why-tfc-6 +name: why-hcp-terraform-6 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement ??? -**Terraform Cloud/Enterprise also comes with a policy enforcement engine that can ensure that your users don't build things they shouldn't build, or configure them in the wrong way. For example, you might wish to prevent users from opening network ports to the internet, or from building too many virtual machines. All of these types of rules can be expressed using our Sentinel policy enforcement engine. Sentinel policies prevent users from doing bad things, *before* they provision to the cloud.** +**HCP Terraform/Terraform Enterprise also comes with a policy enforcement engine that can ensure that your users don't build things they shouldn't build, or configure them in the wrong way. For example, you might wish to prevent users from opening network ports to the internet, or from building too many virtual machines. All of these types of rules can be expressed using our Sentinel policy enforcement engine. Sentinel policies prevent users from doing bad things, *before* they provision to the cloud.** --- -name: why-tfc-7 +name: why-hcp-terraform-7 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement * Single Sign-On ??? -**Terraform Cloud for Business, as well as Terraform Enterprise, also supports single sign-on using your own SAML provider. This allows you to quickly map users into your organization's teams and workspaces so they can become productive right away. We won't be covering SAML or single sign-on in today's workshop.** +**HCP Terraform Plus , as well as Terraform Enterprise, also supports single sign-on using your own SAML provider. This allows you to quickly map users into your organization's teams and workspaces so they can become productive right away. We won't be covering SAML or single sign-on in today's workshop.** It would be good to add SAML or SSO to the workshop somehow in the future. --- -name: why-tfc-8 +name: why-hcp-terraform-8 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement * Single Sign-On * Secure API credentials ??? -**Terraform Cloud/Enterprise can store and encrypt your cloud credentials, passwords or any other sensitive data. These credentials are stored safely inside of a Vault instance that runs inside of Terraform.** +**HCP Terraform/Terraform Enterprise can store and encrypt your cloud credentials, passwords or any other sensitive data. These credentials are stored safely inside of a Vault instance that runs inside of Terraform.** --- -name: terraform-cloud-enterprise +name: hcp-terraform-enterprise class: compact -# Terraform Cloud or Terraform Enterprise? -**[Terraform Cloud](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. +# HCP Terraform or Terraform Enterprise? +**[HCP Terraform](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. -**[Terraform Cloud for Business](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as Terraform Cloud, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, and the ability to Terraform on-prem resources from the cloud. +**[HCP Terraform Plus](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as HCP Terraform, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, and the ability to Terraform on-prem resources from the cloud. -**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the Terraform Cloud application, or wish to run it in restricted networks behind corporate firewalls. +**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the HCP Terraform application, or wish to run it in restricted networks behind corporate firewalls. -The feature list for these offerings is nearly identical. We will be using Terraform Cloud accounts for our lab exercises today. +The feature list for these offerings is nearly identical. We will be using HCP Terraform accounts for our lab exercises today. ??? -**Just like the adoption story from OSS to Enterprise, Terraform offers the ability to build upon the ingelligence that grows within the team. Terraform Cloud itself is really good for individuals, or small business that need to put some level of automation behind their infrastructure. They usually move to the Business Tier when the number of users gets unwieldy, or when they need to deploy on-prem. Enterprise is really the move if you want full control over your destiny, or if you have some severe security requirements (governments, government contractors, etc.). The way I usually look at this, if you are using an on-prem VCS, chances are you'll need Enterprise. If your pipeline or VCS is hosted, you're probably good with Terraform Cloud for Business.** +**Just like the adoption story from Community to Enterprise, Terraform offers the ability to build upon the ingelligence that grows within the team. HCP Terraform itself is really good for individuals, or small business that need to put some level of automation behind their infrastructure. They usually move to the Plus Tier when the number of users gets unwieldy, or when they need to deploy on-prem. Enterprise is really the move if you want full control over your destiny, or if you have some severe security requirements (governments, government contractors, etc.). The way I usually look at this, if you are using an on-prem VCS, chances are you'll need Enterprise. If your pipeline or VCS is hosted, you're probably good with HCP Terraform Plus.** -Be well versed on the feature list and differences between Terraform Cloud levels (including the Business Tier) and Terraform Enterprise. In particular, remember that if you are running more concurrent builds, or if you need SSO, or on-prem, you are in the Cloud for Business or Enterprise tier automatically. +Be well versed on the feature list and differences between HCP Terraform levels (including the Plus Tier) and Terraform Enterprise. In particular, remember that if you are running more concurrent builds, or if you need SSO, or on-prem, you are in the Cloud for the Plus tier or Enterprise tier automatically. --- name: live-demo class: title, smokescreen, shelf background-image: url(images/live_demo.jpg) # Live Demo -## Terraform Cloud in Action +## HCP Terraform in Action ??? INSTRUCTOR NOTE: You can use the same instruqt track that the students will be using to do this demo. Make sure you've gone through the entire track yourself and have your own organization, fork of the hashicat-aws repo, and sentinel policy in place. Once you have done these steps it's easy to create a new demo: -1. Start your own copy of the Terraform Cloud on AWS track +1. Start your own copy of the HCP Terraform on AWS track 2. Echo out your AWS credentials and set them as environment variables in TFC: ``` echo $AWS_ACCESS_KEY_ID @@ -356,15 +356,15 @@ echo $AWS_SECRET_ACCESS_KEY 4. Make sure you remove the VPC file (vpc.tf) from your hashicat-aws repo. This will make the demo take longer and may break if the regions aren't set up right. 5. Begin your demo dialog: -**This is a brief demo showing off some of the features of Terraform cloud. You'll get to work with all these features during the hands-on labs today.** +**This is a brief demo showing off some of the features of HCP Terraform. You'll get to work with all these features during the hands-on labs today.** **Pretend I'm a brand new developer and I want to spin up a copy of my company's web application that I can use for testing. I have my own fork of the code here on github. This is the hashicat-aws application. Like the name implies, it provides kittens as a service. You give it a placeholder URL, a height, and a width, and you get a cat. Neat huh?** -**Let's hop over to Terraform Cloud and take a look at my workspace. Here you can see the most recent terraform runs and their status, along with the exact git commit hash that led to each run being triggered. All changes are recorded, and only code that passes our sentinel policies is allowed to run.** +**Let's hop over to HCP Terraform and take a look at my workspace. Here you can see the most recent terraform runs and their status, along with the exact git commit hash that led to each run being triggered. All changes are recorded, and only code that passes our sentinel policies is allowed to run.** **Before I build anything I might want to configure some variables to adjust my infrastructure settings. Here you can see some terraform variables, prefix and region. These will determine the names of my resources and the region they will be deployed in.** -**Down bottom you see the Environment Variables. These are system shell variables that are injected into the terraform cloud container at runtime. You can optionally encrypt sensitive environment variables such as these AWS keys. Note that these are write-only. Once you encrypt a variable by marking it sensitive, you won't see it here in plaintext again. These are dynamic AWS credentials that are good for only a few hours. You can paste them in manually or use the API to auto-populate them from HashiCorp Vault.** +**Down bottom you see the Environment Variables. These are system shell variables that are injected into the HCP Terraform container at runtime. You can optionally encrypt sensitive environment variables such as these AWS keys. Note that these are write-only. Once you encrypt a variable by marking it sensitive, you won't see it here in plaintext again. These are dynamic AWS credentials that are good for only a few hours. You can paste them in manually or use the API to auto-populate them from HashiCorp Vault.** **New and advanced users can utilize the GUI to trigger infrastructure builds. Let's do that now by clicking on this Queue Plan button. I'm going to put "new dev environment" down as the reason for the build. Now notice that a new terraform plan has kicked off. This is the dry run. terraform is figuring out if any of the infrastructure already exists from a previous run, and then it will build or change everything to match what's in the code. That is, unless we fail a sentinel policy...** @@ -382,7 +382,7 @@ INSTRUCTOR NOTE: Have your code commented and ready to go like this. That way yo } ``` -**Now if I pop back over to Terraform Cloud you can see that a new run has triggered based on the change I just made. Terraform Cloud watches that master branch for any changes and automatically picks them up. I still have a chance to review the run in the UI here. You can see that my policy check is now passing, which will make the finance people happy, and I can continue building my dev environment.** +**Now if I pop back over to HCP Terraform you can see that a new run has triggered based on the change I just made. HCP Terraform watches that master branch for any changes and automatically picks them up. I still have a chance to review the run in the UI here. You can see that my policy check is now passing, which will make the finance people happy, and I can continue building my dev environment.** **I'll click Confirm & Apply and we'll start building.** @@ -407,10 +407,10 @@ name: review-the-basics class: title, smokescreen, shelf background-image: url(images/terraform_scifi.jpg) # Review the Basics -## A Terraform OSS Refresher +## A Terraform Community Refresher ??? -**This section is a quick review of terraform open source usage.** +**This section is a quick review of terraform Community Edition usage.** --- name: review-basic-terraform-commands @@ -431,7 +431,7 @@ terraform graph # Create a DOT-formatted graph Need a refresher? Try the [Intro to Terraform on AWS](https://instruqt.com/hashicorp/tracks/terraform-intro-aws) lab exercises. ??? -Depending on the maturity of your audience you might take a detour back to the Intro to Terraform track. Ideally everyone in the workshop has already completed this or has equivalent experience with Terraform OSS. +Depending on the maturity of your audience you might take a detour back to the Intro to Terraform track. Ideally everyone in the workshop has already completed this or has equivalent experience with Terraform Community. --- name: what-is-a-workspace @@ -445,7 +445,7 @@ name: what-is-a-workspace ??? -**A Terraform workspace is a managed unit of infrastructure. On your laptop or local workstation, the terraform workspace is simply a directory full of terraform code and variables. This code is also ideally stored in a git repository. In the cloud the workspace takes on some extra roles. In Terraform Cloud and Enterprise your workspace is still where you execute terraform runs but there are extra features like access controls, secure variables and policy management. Terraform is only run from secure docker containers that you control. (There is one exception to this and that is when you run terraform locally, but only store the state in Terraform Cloud). Your local workspace, or copy of a git repo, generally maps 1:1 with your terraform workspace.** +**A Terraform workspace is a managed unit of infrastructure. On your laptop or local workstation, the terraform workspace is simply a directory full of terraform code and variables. This code is also ideally stored in a git repository. In the cloud the workspace takes on some extra roles. In HCP Terraform and Enterprise your workspace is still where you execute terraform runs but there are extra features like access controls, secure variables and policy management. Terraform is only run from secure docker containers that you control. (There is one exception to this and that is when you run terraform locally, but only store the state in HCP Terraform). Your local workspace, or copy of a git repo, generally maps 1:1 with your terraform workspace.** **What should I put in a workspace? We recommend infrastructure that should be managed together as a unit be placed into the same workspace. Who has to manage it, how often does it change, does it have external dependencies that we can't control. Ask these questions. Think about what happens when you run `terraform apply`. You should be able to describe what you just built, and what outputs it provides, who this infrastructure is for, and how to utilize it.** @@ -527,19 +527,19 @@ The local state file has some disadvantages: * No centralized record keeping ??? -**Let's not be the dog at my homework kid. There's no excuse for losing your state file because you can easily store it for free in your Terraform Cloud account.** +**Let's not be the dog at my homework kid. There's no excuse for losing your state file because you can easily store it for free in your HCP Terraform account.** --- -name: tfcloud-remote-state -# Terraform Cloud Remote State -Terraform Cloud Remote State is free and available to all users. The requirements to get it set up and working are below. +name: hcp-terraform-remote-state +# HCP Terraform Remote State +HCP Terraform Remote State is free and available to all users. The requirements to get it set up and working are below. -* Free or paid Terraform Cloud account +* Free or paid HCP Terraform account * A **`.terraformrc`** (Unix/Linux) or **`terraform.rc`** (Windows) config file * User access token stored in your config file * Remote backend config file. We name it **`remote_backend.tf`** for consistency. -**WARNING** - do not copy your Terraform Cloud API token to github! +**WARNING** - do not copy your HCP Terraform API token to github! https://www.terraform.io/docs/backends/types/remote.html @@ -565,7 +565,7 @@ name: lab-exercise-0 name: lab-exercise-1 # 👩‍💻 Lab Exercise: Configure Remote State

-In this lab you'll set up a free Terraform Cloud account and configure your account for remote execution of Terraform commands. +In this lab you'll set up a free HCP Terraform account and configure your account for remote execution of Terraform commands. Your instructor will provide the URL for the first lab environment. @@ -622,7 +622,7 @@ class: img-right-full * Any sensitive text or data ??? -**Terraform Cloud has built in support for encryption and storage of any short string of text. This allows you to safely use these credentials during the provisioning process without exposing them in plaintext or storing them on someone's laptop.** +**HCP Terraform has built in support for encryption and storage of any short string of text. This allows you to safely use these credentials during the provisioning process without exposing them in plaintext or storing them on someone's laptop.** --- name: where-are-your-creds @@ -640,7 +640,7 @@ Config files and environment variables are a better option, but the credentials name: a-better-way-creds # A Better Way to Store Sensitive Data -Terraform Cloud can safely store your credentials and encrypt them for you. You can use this encrypted storage for passwords, TLS Certificates, SSH keys or anything else that should not be lying around in plain text. +HCP Terraform can safely store your credentials and encrypt them for you. You can use this encrypted storage for passwords, TLS Certificates, SSH keys or anything else that should not be lying around in plain text. .center[![:scale 70%](images/aws_encrypted_vars.png)] @@ -651,7 +651,7 @@ Terraform Cloud can safely store your credentials and encrypt them for you. You name: terraform-teams class: title, smokescreen, shelf background-image: url(images/teamwork.png) -# Terraform Cloud Teams +# HCP Terraform Teams ## Role-Based Access Controls (RBAC) ??? @@ -716,19 +716,19 @@ class: img-right Version control systems are applications that allow users to store, track, test, and collaborate on changes to their infrastructure and applications. -Terraform Cloud integrates with most common Version Control Systems. +HCP Terraform integrates with most common Version Control Systems. ??? -**Make sure you don't confuse git (the version control system) with GitHub (a web-based application containing the world's largest collection of git repositories). What are some other flavors of git? Bitbucket, GitLab are both also supported in Terraform Cloud. Today you'll be working with GitHub but you can integrate with any of the major git vendor software.** +**Make sure you don't confuse git (the version control system) with GitHub (a web-based application containing the world's largest collection of git repositories). What are some other flavors of git? Bitbucket, GitLab are both also supported in HCP Terraform. Today you'll be working with GitHub but you can integrate with any of the major git vendor software.** --- -name: tfc-infra-as-code-workflow +name: hcp-terraform-infra-as-code-workflow class: img-left -# VCS Integration with Terraform Cloud +# VCS Integration with HCP Terraform ![:scale 70%](images/git_noobs.png) -Terraform Cloud can directly integrate with source code repos in GitHub Enterprise, Gitlab, and Bitbucket. This allows you to build simple DevOps workflows with code reviews, testing and approvals. +HCP Terraform can directly integrate with source code repos in GitHub Enterprise, Gitlab, and Bitbucket. This allows you to build simple DevOps workflows with code reviews, testing and approvals. https://xkcd.com/1597/ @@ -751,7 +751,7 @@ Each team can contribute or consume Terraform code according to their needs. .small[http://www.commitstrip.com/en/2015/02/02/is-your-company-ready-for-devops/] ??? -**When you store all your terraform code in git repos, you unlock some extra features like user collaboration. This is a funny comic called CommitStrip where dev and ops try to learn to work together. Terraform Cloud helps bring these teams closer in a more productive way.** +**When you store all your terraform code in git repos, you unlock some extra features like user collaboration. This is a funny comic called CommitStrip where dev and ops try to learn to work together. HCP Terraform helps bring these teams closer in a more productive way.** --- name: vcs-driven-workflow @@ -781,7 +781,7 @@ background-image: url(images/security_lasers.jpg) ## Policy Enforcement for Terraform ??? -**Sentinel is the HashiCorp policy enforcement language and it is only available in terraform cloud or enterprise.** +**Sentinel is the HashiCorp policy enforcement language and it is only available in HCP Terraform or Terraform Enterprise.** --- name: what-is-sentinel @@ -855,7 +855,7 @@ class: title ## Modules and API Automation ??? -**This is the final content chapter where we'll cover the private module registry and API automation.** +**This is the final content chapter where we'll cover the Terraform Private Registry and API automation.** --- name: private-module-registry @@ -898,12 +898,12 @@ What if you had to manage dozens or hundreds of modules, with different versions --- name: private-module-registry class: img-right -# Private Module Registry +# Terraform Private Registry ![](images/aws_pmr.png) Terraform modules are reusable packages of Terraform code that you can use to build your infrastructure. -Terraform Cloud includes a Private Module Registry where you can store, version, and distribute modules to your organizations and teams. +HCP Terraform includes a Terraform Private Registry where you can store, version, and distribute modules to your organizations and teams. ??? **This is just like the public module registry but it runs inside your own Terraform Organization where only your users can access it. This way you can share private or confidential code, or even take the public modules and fork them for your own use.** @@ -912,11 +912,11 @@ Terraform Cloud includes a Private Module Registry where you can store, version, name: api-driven-workflows class: title, smokescreen, shelf background-image: url(images/enter_the_matrix.jpg) -# Terraform Cloud API +# HCP Terraform API ## Automate Everything ??? -**This section will give us a small sample of what's possible using the Terraform Cloud API to build automation. APIs provide a clear and well understood method for interacting with Terraform Cloud, even from systems that have no native Terraform support or integrations.** +**This section will give us a small sample of what's possible using the HCP Terraform API to build automation. APIs provide a clear and well understood method for interacting with HCP Terraform, even from systems that have no native Terraform support or integrations.** --- name: whats-an-api @@ -938,8 +938,8 @@ APIs are the default language of the Internet. According to Akamai research 83% **There are APIs for all kinds of stuff! Even Dad Jokes!** --- -name: terraform-cloud-api -# Terraform Cloud API - How It Works +name: hcp-terraform-api +# HCP Terraform API - How It Works ```bash # Create a workspace using the API curl --header "Authorization: Bearer $TOKEN" --header \ @@ -959,7 +959,7 @@ Most programming languages have helper libraries for working with APIs. --- name: api-use-cases -# Terraform Cloud API - Use Cases +# HCP Terraform API - Use Cases * Continuous Integration test pipelines * Connect with workflow management systems @@ -968,17 +968,17 @@ name: api-use-cases * Custom command line scripts for specific needs ??? -**Here are just a few of the things you might build with the Terraform Cloud API.** +**Here are just a few of the things you might build with the HCP Terraform API.** --- name: lab-exercise-4 # 👩‍💻 Lab Exercise: Modules and API Automation

-In this lab we'll cover the Private Module Registry and API Automation with Terraform Cloud. +In this lab we'll cover the Terraform Private Registry and API Automation with HCP Terraform. Continue the lab exercises from where you left off. -🛑 **STOP** after you complete the fourth quiz - "Private Module Registry". +🛑 **STOP** after you complete the fourth quiz - "Terraform Private Registry". ??? This is the last official lab; the bonus lab will be stored in a separate track. @@ -999,19 +999,19 @@ name: bonus-lab If you have completed all the workshop content and would like to try the bonus lab, your instructor can provide you with an invite. ??? -This bonus lab can be used with any of the three Terraform Cloud workshops. Create an invite if you'd like to share it with your students. +This bonus lab can be used with any of the three HCP Terraform workshops. Create an invite if you'd like to share it with your students. https://instruqt.com/hashicorp/tracks/terraform-cloud-bonus-lab --- name: additional-resources-tfe # Additional Resources -If you'd like to learn more about Terraform Enterprise or Terraform Cloud visit the links below: +If you'd like to learn more about Terraform Enterprise or HCP Terraform visit the links below: Terraform Enterprise Product Page https://www.hashicorp.com/products/terraform/ -Why Consider Terraform Enterprise Over Open Source? +Why Consider Terraform Enterprise Over Community Edition? https://www.hashicorp.com/resources/why-consider-terraform-enterprise-over-open-source Terraform AWS Provider Documentation diff --git a/docs/slides/aws/index.md b/docs/slides/aws/index.md index f5df9eae..9d1e0236 100644 --- a/docs/slides/aws/index.md +++ b/docs/slides/aws/index.md @@ -26,7 +26,7 @@ name: terraform-workshops-slides # Terraform AWS Workshop Slides ### This directory contains slides for Terraform workshops intended for use with AWS. ### Workshops for each cloud are organized by type: - 1. Terraform OSS + 1. Terraform Community Edition 1. Terraform Enterprise ??? diff --git a/docs/slides/aws/terraform-oss/images/1password_terraform.png b/docs/slides/aws/terraform-community/images/1password_terraform.png similarity index 100% rename from docs/slides/aws/terraform-oss/images/1password_terraform.png rename to docs/slides/aws/terraform-community/images/1password_terraform.png diff --git a/docs/slides/aws/terraform-oss/images/Config_Hell.jpg b/docs/slides/aws/terraform-community/images/Config_Hell.jpg similarity index 100% rename from docs/slides/aws/terraform-oss/images/Config_Hell.jpg rename to docs/slides/aws/terraform-community/images/Config_Hell.jpg diff --git a/docs/slides/aws/terraform-oss/images/Terraform_VerticalLogo_FullColor.png b/docs/slides/aws/terraform-community/images/Terraform_VerticalLogo_FullColor.png similarity index 100% rename from docs/slides/aws/terraform-oss/images/Terraform_VerticalLogo_FullColor.png rename to docs/slides/aws/terraform-community/images/Terraform_VerticalLogo_FullColor.png diff --git a/docs/slides/aws/terraform-oss/images/aws_provision.png b/docs/slides/aws/terraform-community/images/aws_provision.png similarity index 100% rename from docs/slides/aws/terraform-oss/images/aws_provision.png rename to docs/slides/aws/terraform-community/images/aws_provision.png diff --git a/docs/slides/aws/terraform-oss/images/aws_provision_2.png b/docs/slides/aws/terraform-community/images/aws_provision_2.png similarity index 100% rename from docs/slides/aws/terraform-oss/images/aws_provision_2.png rename to docs/slides/aws/terraform-community/images/aws_provision_2.png diff --git a/docs/slides/aws/terraform-oss/images/blast_radius_graph_1.png b/docs/slides/aws/terraform-community/images/blast_radius_graph_1.png similarity index 100% rename from docs/slides/aws/terraform-oss/images/blast_radius_graph_1.png rename to docs/slides/aws/terraform-community/images/blast_radius_graph_1.png diff --git a/docs/slides/aws/terraform-oss/images/clouds.png b/docs/slides/aws/terraform-community/images/clouds.png similarity index 100% rename from docs/slides/aws/terraform-oss/images/clouds.png rename to docs/slides/aws/terraform-community/images/clouds.png diff --git a/docs/slides/aws/terraform-oss/images/cpa.jpg b/docs/slides/aws/terraform-community/images/cpa.jpg similarity index 100% rename from docs/slides/aws/terraform-oss/images/cpa.jpg rename to docs/slides/aws/terraform-community/images/cpa.jpg diff --git a/docs/slides/aws/terraform-oss/images/infra_tools.png b/docs/slides/aws/terraform-community/images/infra_tools.png similarity index 100% rename from docs/slides/aws/terraform-oss/images/infra_tools.png rename to docs/slides/aws/terraform-community/images/infra_tools.png diff --git a/docs/slides/aws/terraform-oss/images/tf_aws.png b/docs/slides/aws/terraform-community/images/tf_aws.png similarity index 100% rename from docs/slides/aws/terraform-oss/images/tf_aws.png rename to docs/slides/aws/terraform-community/images/tf_aws.png diff --git a/docs/slides/aws/terraform-oss/index.html b/docs/slides/aws/terraform-community/index.html similarity index 97% rename from docs/slides/aws/terraform-oss/index.html rename to docs/slides/aws/terraform-community/index.html index afaee178..9e7667d2 100644 --- a/docs/slides/aws/terraform-oss/index.html +++ b/docs/slides/aws/terraform-community/index.html @@ -7,7 +7,7 @@ - Introduction to Terraform OSS on AWS + Introduction to Terraform Community Edition on AWS diff --git a/docs/slides/aws/terraform-oss/index.md b/docs/slides/aws/terraform-community/index.md similarity index 94% rename from docs/slides/aws/terraform-oss/index.md rename to docs/slides/aws/terraform-community/index.md index ca208c46..1d9217c4 100644 --- a/docs/slides/aws/terraform-oss/index.md +++ b/docs/slides/aws/terraform-community/index.md @@ -73,7 +73,7 @@ name: Table-of-Contents 1. Provision and Configure AWS Instances
🔬 **Lab - Provisioning with Terraform**
1. Manage and Change Infrastructure State
-1. Terraform Cloud
+1. HCP Terraform
⚗️ **Lab - Terraform Remote State** @@ -445,12 +445,12 @@ class: title **Now that you have terraform installed and working with AWS, we can do a few dry runs before building real infrastructure. Follow along carefully, copying and pasting the commands on each slide into your shell as we go.** --- -name: what-is-terraform-oss +name: what-is-terraform-community class: img-left # What is Terraform? ![Terraform](images\Terraform_VerticalLogo_FullColor.png) -Terraform is an open source provisioning tool. +Terraform Community Edition is a free, downloadable tool that you interact with on the command line. It lets you provision infrastructure on any cloud provider and manages configuration, plugins, infrastructure, and state. It ships as a single binary which is written in Go. Terraform is cross platform and can run on Linux, Windows, or MacOS. @@ -1127,59 +1127,59 @@ What happens in each scenario? Discuss. name: Chapter-6 class: title # Chapter 6 -## Terraform Cloud +## HCP Terraform --- -name: terraform-cloud +name: hcp-terraform class: img-right -# Terraform Cloud -##### Terraform Cloud is a free to use SaaS application that provides the best workflow for writing and building infrastructure as code with Terraform. -![Terraform Cloud](https://hashicorp.github.io/field-workshops-assets/assets/logos/Terraform_Cloud_Logo_Color_RGB.png) +# HCP Terraform +##### HCP Terraform is a free to use SaaS application that provides the best workflow for writing and building infrastructure as code with Terraform. +![HCP Terraform](https://hashicorp.github.io/field-workshops-assets/assets/logos/Terraform_Cloud_Logo_Color_RGB.png) * State storage and management * Web UI for viewing and approving Terraform runs -* Private module registry +* Terraform Private Registry * Version Control System (VCS) integration * CLI, API or GUI driven actions * Notifications for run events * Full HTTP API for automation --- -name: tfcloud-vs-tfe +name: hcp-terraform-vs-tfe class: compact -# Terraform Cloud or Terraform Enterprise? -**[Terraform Cloud](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. +# HCP Terraform or Terraform Enterprise? +**[HCP Terraform](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. -**[Terraform Cloud for Business](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as Terraform Cloud, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, the abbility to use [Agents](https://www.terraform.io/cloud-docs/agents) to deploy in private environments, and integrate with external tools via [Run Tasks](https://www.terraform.io/cloud-docs/integrations/run-tasks). +**[HCP Terraform Plus Tier](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as HCP Terraform, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, the abbility to use [Agents](https://www.terraform.io/cloud-docs/agents) to deploy in private environments, and integrate with external tools via [Run Tasks](https://www.terraform.io/cloud-docs/integrations/run-tasks). -**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the Terraform Cloud application, or wish to run it in restricted networks behind corporate firewalls. +**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the HCP Terraform application, or wish to run it in restricted networks behind corporate firewalls. -The feature list for these offerings is nearly identical. We will be using Terraform Cloud accounts for our lab exercises today. +The feature list for these offerings is nearly identical. We will be using HCP Terraform accounts for our lab exercises today. --- -name: terraform-cloud-remote-state +name: hcp-terraform-remote-state # Terraform Remote State By default Terraform stores its state file in the workspace directory on your laptop or workstation. This is ok for development and experimentation, but in a production environment you need to protect and store the state file safely. -Terraform has an option to store and secure your state files remotely. Terraform Cloud accounts now offer unlimited state file storage even for open source users. +Terraform has an option to store and secure your state files remotely. HCP Terraform accounts now offer unlimited state file storage even for Community Edition users. -All state files are encrypted (using HashiCorp Vault) and stored securely in your Terraform Cloud account. You'll never have to worry about losing or deleting your state file again. +All state files are encrypted (using HashiCorp Vault) and stored securely in your HCP Terraform account. You'll never have to worry about losing or deleting your state file again. --- name: execution-mode class: compact -# Terraform Cloud Execution Modes +# HCP Terraform Execution Modes **Local Execution** - Terraform commands run on your laptop or workstation and all variables are configured locally. Only the terraform state is stored remotely. -**Remote Execution** - Terraform commands are run in a Terraform Cloud container environment. All variables are stored in the remote workspace. Code can be stored in a Version Control System repository. Limited to 1 concurrent run for free tier users. +**Remote Execution** - Terraform commands are run in a HCP Terraform container environment. All variables are stored in the remote workspace. Code can be stored in a Version Control System repository. Limited to 1 concurrent run for free tier users. -**Agent Execution** *(Enterprise only)* - Terraform Cloud Agents allow Terraform Cloud and Enterprise to communicate with isolated, private, or on-premises infrastructure. The agent architecture is pull-based, so no inbound connectivity is required. Any agent you provision will poll Terraform Cloud or Enterprise for work and carry out execution of that work locally. +**Agent Execution** *(Enterprise only)* - HCP Terraform Agents allow HCP Terraform and Enterprise to communicate with isolated, private, or on-premises infrastructure. The agent architecture is pull-based, so no inbound connectivity is required. Any agent you provision will poll HCP Terraform or Terraform Enterprise for work and carry out execution of that work locally. --- name: lab-exercise-2c -# 👩‍💻 Lab Exercise: Terraform Cloud -In the final part of the second lab we'll create a free Terraform Cloud account and enable remote storage of our state file. +# 👩‍💻 Lab Exercise: HCP Terraform +In the final part of the second lab we'll create a free HCP Terraform account and enable remote storage of our state file. Return to the training lab and continue where you left off. diff --git a/docs/slides/azure/terraform-cloud-v2/fav-icon/android-chrome-192x192.png b/docs/slides/azure/hcp-terraform-v2/fav-icon/android-chrome-192x192.png similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/fav-icon/android-chrome-192x192.png rename to docs/slides/azure/hcp-terraform-v2/fav-icon/android-chrome-192x192.png diff --git a/docs/slides/azure/terraform-cloud-v2/fav-icon/android-chrome-512x512.png b/docs/slides/azure/hcp-terraform-v2/fav-icon/android-chrome-512x512.png similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/fav-icon/android-chrome-512x512.png rename to docs/slides/azure/hcp-terraform-v2/fav-icon/android-chrome-512x512.png diff --git a/docs/slides/azure/terraform-cloud-v2/fav-icon/apple-touch-icon.png b/docs/slides/azure/hcp-terraform-v2/fav-icon/apple-touch-icon.png similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/fav-icon/apple-touch-icon.png rename to docs/slides/azure/hcp-terraform-v2/fav-icon/apple-touch-icon.png diff --git a/docs/slides/azure/terraform-cloud-v2/fav-icon/browserconfig.xml b/docs/slides/azure/hcp-terraform-v2/fav-icon/browserconfig.xml similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/fav-icon/browserconfig.xml rename to docs/slides/azure/hcp-terraform-v2/fav-icon/browserconfig.xml diff --git a/docs/slides/azure/terraform-cloud-v2/fav-icon/favicon-16x16.png b/docs/slides/azure/hcp-terraform-v2/fav-icon/favicon-16x16.png similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/fav-icon/favicon-16x16.png rename to docs/slides/azure/hcp-terraform-v2/fav-icon/favicon-16x16.png diff --git a/docs/slides/azure/terraform-cloud-v2/fav-icon/favicon-32x32.png b/docs/slides/azure/hcp-terraform-v2/fav-icon/favicon-32x32.png similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/fav-icon/favicon-32x32.png rename to docs/slides/azure/hcp-terraform-v2/fav-icon/favicon-32x32.png diff --git a/docs/slides/azure/terraform-cloud-v2/fav-icon/favicon.ico b/docs/slides/azure/hcp-terraform-v2/fav-icon/favicon.ico similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/fav-icon/favicon.ico rename to docs/slides/azure/hcp-terraform-v2/fav-icon/favicon.ico diff --git a/docs/slides/azure/terraform-cloud-v2/fav-icon/icon.svg b/docs/slides/azure/hcp-terraform-v2/fav-icon/icon.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/fav-icon/icon.svg rename to docs/slides/azure/hcp-terraform-v2/fav-icon/icon.svg diff --git a/docs/slides/azure/terraform-cloud-v2/fav-icon/mstile-150x150.png b/docs/slides/azure/hcp-terraform-v2/fav-icon/mstile-150x150.png similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/fav-icon/mstile-150x150.png rename to docs/slides/azure/hcp-terraform-v2/fav-icon/mstile-150x150.png diff --git a/docs/slides/azure/terraform-cloud-v2/fav-icon/safari-pinned-tab.svg b/docs/slides/azure/hcp-terraform-v2/fav-icon/safari-pinned-tab.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/fav-icon/safari-pinned-tab.svg rename to docs/slides/azure/hcp-terraform-v2/fav-icon/safari-pinned-tab.svg diff --git a/docs/slides/azure/terraform-cloud-v2/fav-icon/site.webmanifest b/docs/slides/azure/hcp-terraform-v2/fav-icon/site.webmanifest similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/fav-icon/site.webmanifest rename to docs/slides/azure/hcp-terraform-v2/fav-icon/site.webmanifest diff --git a/docs/slides/azure/terraform-cloud-v2/images/2022_hashiconf_tuesday_089_0499.jpg b/docs/slides/azure/hcp-terraform-v2/images/2022_hashiconf_tuesday_089_0499.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/2022_hashiconf_tuesday_089_0499.jpg rename to docs/slides/azure/hcp-terraform-v2/images/2022_hashiconf_tuesday_089_0499.jpg diff --git a/docs/slides/azure/terraform-cloud-v2/images/HCP_Diagram_OnBlack_Terraform.svg b/docs/slides/azure/hcp-terraform-v2/images/HCP_Diagram_OnBlack_Terraform.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/HCP_Diagram_OnBlack_Terraform.svg rename to docs/slides/azure/hcp-terraform-v2/images/HCP_Diagram_OnBlack_Terraform.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/adoption_journey_groups 2.svg b/docs/slides/azure/hcp-terraform-v2/images/adoption_journey_groups 2.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/adoption_journey_groups 2.svg rename to docs/slides/azure/hcp-terraform-v2/images/adoption_journey_groups 2.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/adoption_journey_groups.svg b/docs/slides/azure/hcp-terraform-v2/images/adoption_journey_groups.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/adoption_journey_groups.svg rename to docs/slides/azure/hcp-terraform-v2/images/adoption_journey_groups.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/adoption_journey_individual.svg b/docs/slides/azure/hcp-terraform-v2/images/adoption_journey_individual.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/adoption_journey_individual.svg rename to docs/slides/azure/hcp-terraform-v2/images/adoption_journey_individual.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/adoption_journey_multiple_groups.svg b/docs/slides/azure/hcp-terraform-v2/images/adoption_journey_multiple_groups.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/adoption_journey_multiple_groups.svg rename to docs/slides/azure/hcp-terraform-v2/images/adoption_journey_multiple_groups.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/adoption_journey_organization.svg b/docs/slides/azure/hcp-terraform-v2/images/adoption_journey_organization.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/adoption_journey_organization.svg rename to docs/slides/azure/hcp-terraform-v2/images/adoption_journey_organization.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/automated-testing.svg b/docs/slides/azure/hcp-terraform-v2/images/automated-testing.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/automated-testing.svg rename to docs/slides/azure/hcp-terraform-v2/images/automated-testing.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/code_example.svg b/docs/slides/azure/hcp-terraform-v2/images/code_example.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/code_example.svg rename to docs/slides/azure/hcp-terraform-v2/images/code_example.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/collaboration_experience.svg b/docs/slides/azure/hcp-terraform-v2/images/collaboration_experience.svg similarity index 97% rename from docs/slides/gcp/terraform-cloud-v2/images/collaboration_experience.svg rename to docs/slides/azure/hcp-terraform-v2/images/collaboration_experience.svg index 39a24566..420a6a2a 100644 --- a/docs/slides/gcp/terraform-cloud-v2/images/collaboration_experience.svg +++ b/docs/slides/azure/hcp-terraform-v2/images/collaboration_experience.svg @@ -36,8 +36,8 @@ as-code modules, policies and integration run tasks. - - Use Terraform Cloud to + + Use HCP Terraform to safely store sensitive materials, including Terraform plans and diff --git a/docs/slides/azure/terraform-cloud-v2/images/contract-testing.svg b/docs/slides/azure/hcp-terraform-v2/images/contract-testing.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/contract-testing.svg rename to docs/slides/azure/hcp-terraform-v2/images/contract-testing.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/deployment_variables.svg b/docs/slides/azure/hcp-terraform-v2/images/deployment_variables.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/deployment_variables.svg rename to docs/slides/azure/hcp-terraform-v2/images/deployment_variables.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/integration-testing.svg b/docs/slides/azure/hcp-terraform-v2/images/integration-testing.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/integration-testing.svg rename to docs/slides/azure/hcp-terraform-v2/images/integration-testing.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/organization_workflow.svg b/docs/slides/azure/hcp-terraform-v2/images/organization_workflow.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/organization_workflow.svg rename to docs/slides/azure/hcp-terraform-v2/images/organization_workflow.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/pac_technical_workflow.svg b/docs/slides/azure/hcp-terraform-v2/images/pac_technical_workflow.svg similarity index 99% rename from docs/slides/korean/aws/terraform-cloud-v2/images/pac_technical_workflow.svg rename to docs/slides/azure/hcp-terraform-v2/images/pac_technical_workflow.svg index 91122d29..7cac4b11 100644 --- a/docs/slides/korean/aws/terraform-cloud-v2/images/pac_technical_workflow.svg +++ b/docs/slides/azure/hcp-terraform-v2/images/pac_technical_workflow.svg @@ -87,7 +87,7 @@ - + diff --git a/docs/slides/azure/terraform-cloud-v2/images/part_01.png b/docs/slides/azure/hcp-terraform-v2/images/part_01.png similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/part_01.png rename to docs/slides/azure/hcp-terraform-v2/images/part_01.png diff --git a/docs/slides/azure/terraform-cloud-v2/images/part_02.png b/docs/slides/azure/hcp-terraform-v2/images/part_02.png similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/part_02.png rename to docs/slides/azure/hcp-terraform-v2/images/part_02.png diff --git a/docs/slides/azure/terraform-cloud-v2/images/part_03.png b/docs/slides/azure/hcp-terraform-v2/images/part_03.png similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/part_03.png rename to docs/slides/azure/hcp-terraform-v2/images/part_03.png diff --git a/docs/slides/azure/terraform-cloud-v2/images/part_04.png b/docs/slides/azure/hcp-terraform-v2/images/part_04.png similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/part_04.png rename to docs/slides/azure/hcp-terraform-v2/images/part_04.png diff --git a/docs/slides/azure/terraform-cloud-v2/images/permissions_model.svg b/docs/slides/azure/hcp-terraform-v2/images/permissions_model.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/permissions_model.svg rename to docs/slides/azure/hcp-terraform-v2/images/permissions_model.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/pmr_technical_workflow.svg b/docs/slides/azure/hcp-terraform-v2/images/pmr_technical_workflow.svg similarity index 99% rename from docs/slides/azure/terraform-cloud-v2/images/pmr_technical_workflow.svg rename to docs/slides/azure/hcp-terraform-v2/images/pmr_technical_workflow.svg index ba3cbf16..d53e05ce 100644 --- a/docs/slides/azure/terraform-cloud-v2/images/pmr_technical_workflow.svg +++ b/docs/slides/azure/hcp-terraform-v2/images/pmr_technical_workflow.svg @@ -83,7 +83,7 @@ - + diff --git a/docs/slides/azure/terraform-cloud-v2/images/policy-as-code.svg b/docs/slides/azure/hcp-terraform-v2/images/policy-as-code.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/policy-as-code.svg rename to docs/slides/azure/hcp-terraform-v2/images/policy-as-code.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/policy_as_code_workflow.svg b/docs/slides/azure/hcp-terraform-v2/images/policy_as_code_workflow.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/policy_as_code_workflow.svg rename to docs/slides/azure/hcp-terraform-v2/images/policy_as_code_workflow.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/projects-and-workspaces.svg b/docs/slides/azure/hcp-terraform-v2/images/projects-and-workspaces.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/projects-and-workspaces.svg rename to docs/slides/azure/hcp-terraform-v2/images/projects-and-workspaces.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/sole_practitioner.svg b/docs/slides/azure/hcp-terraform-v2/images/sole_practitioner.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/sole_practitioner.svg rename to docs/slides/azure/hcp-terraform-v2/images/sole_practitioner.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/team_collaboration.svg b/docs/slides/azure/hcp-terraform-v2/images/team_collaboration.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/team_collaboration.svg rename to docs/slides/azure/hcp-terraform-v2/images/team_collaboration.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/terraform-modules.svg b/docs/slides/azure/hcp-terraform-v2/images/terraform-modules.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/terraform-modules.svg rename to docs/slides/azure/hcp-terraform-v2/images/terraform-modules.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/terraform_adoption_journey_yt.png b/docs/slides/azure/hcp-terraform-v2/images/terraform_adoption_journey_yt.png similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/terraform_adoption_journey_yt.png rename to docs/slides/azure/hcp-terraform-v2/images/terraform_adoption_journey_yt.png diff --git a/docs/slides/gcp/terraform-cloud-v2/images/terraform_api.svg b/docs/slides/azure/hcp-terraform-v2/images/terraform_api.svg similarity index 99% rename from docs/slides/gcp/terraform-cloud-v2/images/terraform_api.svg rename to docs/slides/azure/hcp-terraform-v2/images/terraform_api.svg index 6310b0d0..dceb0e6c 100644 --- a/docs/slides/gcp/terraform-cloud-v2/images/terraform_api.svg +++ b/docs/slides/azure/hcp-terraform-v2/images/terraform_api.svg @@ -314,8 +314,8 @@ - - Terraform Cloud + + HCP Terraform diff --git a/docs/slides/azure/terraform-cloud-v2/images/terraform_callout_pattern_dark.svg b/docs/slides/azure/hcp-terraform-v2/images/terraform_callout_pattern_dark.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/terraform_callout_pattern_dark.svg rename to docs/slides/azure/hcp-terraform-v2/images/terraform_callout_pattern_dark.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/terraform_callout_pattern_light.svg b/docs/slides/azure/hcp-terraform-v2/images/terraform_callout_pattern_light.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/terraform_callout_pattern_light.svg rename to docs/slides/azure/hcp-terraform-v2/images/terraform_callout_pattern_light.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/terraform_cloud.svg b/docs/slides/azure/hcp-terraform-v2/images/terraform_cloud.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/terraform_cloud.svg rename to docs/slides/azure/hcp-terraform-v2/images/terraform_cloud.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/terraform_cloud_cicd.svg b/docs/slides/azure/hcp-terraform-v2/images/terraform_cloud_cicd.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/terraform_cloud_cicd.svg rename to docs/slides/azure/hcp-terraform-v2/images/terraform_cloud_cicd.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/terraform_modules.svg b/docs/slides/azure/hcp-terraform-v2/images/terraform_modules.svg similarity index 99% rename from docs/slides/azure/terraform-cloud-v2/images/terraform_modules.svg rename to docs/slides/azure/hcp-terraform-v2/images/terraform_modules.svg index 3244f906..aeb77715 100644 --- a/docs/slides/azure/terraform-cloud-v2/images/terraform_modules.svg +++ b/docs/slides/azure/hcp-terraform-v2/images/terraform_modules.svg @@ -143,7 +143,7 @@ - + diff --git a/docs/slides/azure/terraform-cloud-v2/images/terraform_registry.svg b/docs/slides/azure/hcp-terraform-v2/images/terraform_registry.svg similarity index 99% rename from docs/slides/azure/terraform-cloud-v2/images/terraform_registry.svg rename to docs/slides/azure/hcp-terraform-v2/images/terraform_registry.svg index 0b95ada4..4fd69f99 100644 --- a/docs/slides/azure/terraform-cloud-v2/images/terraform_registry.svg +++ b/docs/slides/azure/hcp-terraform-v2/images/terraform_registry.svg @@ -278,8 +278,8 @@ - - Terraform Cloud + + HCP Terraform diff --git a/docs/slides/aws/terraform-cloud-v2/images/terraform_workflow.svg b/docs/slides/azure/hcp-terraform-v2/images/terraform_workflow.svg similarity index 99% rename from docs/slides/aws/terraform-cloud-v2/images/terraform_workflow.svg rename to docs/slides/azure/hcp-terraform-v2/images/terraform_workflow.svg index 47bf7c14..5e693a7f 100644 --- a/docs/slides/aws/terraform-cloud-v2/images/terraform_workflow.svg +++ b/docs/slides/azure/hcp-terraform-v2/images/terraform_workflow.svg @@ -441,7 +441,7 @@ - Terraform Cloud integrates into + HCP Terraform integrates into workflow by faciliating resources, execution steps and maintenace diff --git a/docs/slides/azure/terraform-cloud-v2/images/unit-testing.svg b/docs/slides/azure/hcp-terraform-v2/images/unit-testing.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/unit-testing.svg rename to docs/slides/azure/hcp-terraform-v2/images/unit-testing.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/vcs_connection_overview.svg b/docs/slides/azure/hcp-terraform-v2/images/vcs_connection_overview.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/vcs_connection_overview.svg rename to docs/slides/azure/hcp-terraform-v2/images/vcs_connection_overview.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/vcs_workflow_overview.svg b/docs/slides/azure/hcp-terraform-v2/images/vcs_workflow_overview.svg similarity index 99% rename from docs/slides/azure/terraform-cloud-v2/images/vcs_workflow_overview.svg rename to docs/slides/azure/hcp-terraform-v2/images/vcs_workflow_overview.svg index f87959aa..694f2ff2 100644 --- a/docs/slides/azure/terraform-cloud-v2/images/vcs_workflow_overview.svg +++ b/docs/slides/azure/hcp-terraform-v2/images/vcs_workflow_overview.svg @@ -121,7 +121,7 @@ - + diff --git a/docs/slides/azure/terraform-cloud-v2/images/workspace-state.svg b/docs/slides/azure/hcp-terraform-v2/images/workspace-state.svg similarity index 100% rename from docs/slides/azure/terraform-cloud-v2/images/workspace-state.svg rename to docs/slides/azure/hcp-terraform-v2/images/workspace-state.svg diff --git a/docs/slides/aws/terraform-cloud-v2/index.html b/docs/slides/azure/hcp-terraform-v2/index.html similarity index 99% rename from docs/slides/aws/terraform-cloud-v2/index.html rename to docs/slides/azure/hcp-terraform-v2/index.html index 5fda69d2..3e393197 100644 --- a/docs/slides/aws/terraform-cloud-v2/index.html +++ b/docs/slides/azure/hcp-terraform-v2/index.html @@ -7,7 +7,7 @@ - Terraform Cloud on AWS + HCP Terraform on Azure @@ -358,7 +358,7 @@ // want to ignore. The following slides do not active the // lightbox - this is an all-or-nothing approach and can be improved. const ignore_ids = [ - "slide-Intro-to-Terraform-Cloud", + "slide-Intro-to-hcp-terraform", "slide-terraform-adoption-journey", "slide-lab-guidance-01", "slide-lab-guidance-02", diff --git a/docs/slides/azure/terraform-cloud-v2/index.md b/docs/slides/azure/hcp-terraform-v2/index.md similarity index 78% rename from docs/slides/azure/terraform-cloud-v2/index.md rename to docs/slides/azure/hcp-terraform-v2/index.md index 5e2a7be4..231298d2 100644 --- a/docs/slides/azure/terraform-cloud-v2/index.md +++ b/docs/slides/azure/hcp-terraform-v2/index.md @@ -1,15 +1,15 @@ -name: Intro-to-Terraform-Cloud +name: Intro-to-hcp-terraform class: center, middle, title-slide, no-footer count: true ![:scale 40%](images/HCP_Diagram_OnBlack_Terraform.svg) -# Terraform Cloud on Azure +# HCP Terraform on Azure ??? -# Terraform Cloud on Azure workshop +# HCP Terraform on Azure workshop ## Getting started -This is a half-day workshop that introduces Terraform Cloud using an Azure-based application for the Instruqt labs. If you're brand new to Terraform you should try the Introduction to Terraform Community Edition on Azure Instruqt track before this one. +This is a half-day workshop that introduces HCP Terraform using an Azure-based application for the Instruqt labs. If you're brand new to Terraform you should try the Introduction to Terraform Community Edition on Azure Instruqt track before this one. -The instructions on how to conduct a workshop are in the standard [instructor's guide](https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_terraform_cloud_INSTRUCTOR_GUIDE.md). +The instructions on how to conduct a workshop are in the standard [instructor's guide](https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_hcp_terraform_INSTRUCTOR_GUIDE.md). ## Navigation @@ -65,9 +65,9 @@ Standardize infrastructure across your provisioning processes using your private 2. If your audience is less than 20 people you have the option to quickly go through the room and ask everyone to introduce themselves if they wish to participate. ## Goals for the workshop -1. Launch a deployment to using Terraform Cloud using VCS workflows +1. Launch a deployment to using HCP Terraform using VCS workflows 2. Explore management and configuration options with team permissions and deployment policies -3. Test the Private Module Registry and some API functions +3. Test the Terraform Private Registry and some API functions --- name: Table-of-Contents @@ -77,7 +77,7 @@ class: col-2, top, minimal-list, minimal-toc **1- Infrastructure Automation** * Terraform Adoption Journey * Terraform Editions -* Terraform Cloud +* HCP Terraform
@@ -96,7 +96,7 @@ class: col-2, top, minimal-list, minimal-toc
**4- Terraform Modules & API** -* Private Module Registry +* Terraform Private Registry * API Driven Workflows * CI/CD Integration @@ -129,7 +129,7 @@ class: table-exercises

Part 1

  • Getting Started - Explore the Lab
  • -
  • Terraform Cloud Setup
  • +
  • HCP Terraform Setup
  • Safekeeping your Terraform State
  • Quiz 1: Terraform Remote State
@@ -138,7 +138,7 @@ class: table-exercises

Part 2

  • Workspace variables
  • -
  • Working with Teams in Terraform Cloud
  • +
  • Working with Teams in HCP Terraform
  • Quiz 2: Secure Variables
@@ -156,9 +156,9 @@ class: table-exercises

Part 4

    -
  • Private Module Registry
  • +
  • Terraform Private Registry
  • API Driven Workflows
  • -
  • Quiz 4: Private Module Registry
  • +
  • Quiz 4: Terraform Private Registry
@@ -184,12 +184,12 @@ class: table-exercises name: participant-requirements class: col-3, header-adjust, minimal-list # Participant Requirements -### Terraform Cloud -- Terraform Cloud account (free) +### HCP Terraform +- HCP Terraform account (free) - Terraform "___Plus Tier___" Trial -- Terraform Cloud personal access token +- HCP Terraform personal access token ### GitHub - Personal account @@ -232,11 +232,11 @@ This chapter is organized in three sections: 2. Terraform Editions - - Understand Terraform Community Edition and the differences between Community Edition and Cloud and Enterprise + - Understand Terraform Community Edition and the differences between Community Edition, HCP Terraform, and Terraform Enterprise -3. Benefits of using Terraform Cloud +3. Benefits of using HCP Terraform - - Hightlight the key benefits of using Terraform Cloud to + - Hightlight the key benefits of using HCP Terraform to - Build infrastructure, - Standardize best practices, and @@ -401,14 +401,14 @@ class: col-3, header-adjust, header-adjust-minimal-list * Manually pull and commit the most up-to-date version to perform Terraform operations * Use and publish public modules as infrastructure templates -### Terraform Cloud -* Integrate Terraform Cloud into your existing workflows +### HCP Terraform +* Integrate HCP Terraform into your existing workflows * Ensure that only approved teams can access, edit, and provision infrastructure * Publish configuration modules in a private registry to define approved infrastructure patterns * Enforce best practices and security rules with policy as code framework ### Terraform Enterprise -* Set up a private instance of Terraform Cloud with dedicated support from HashiCorp +* Set up a private instance of HCP Terraform with dedicated support from HashiCorp * Accommodate advanced security and compliance requirements ??? @@ -420,19 +420,19 @@ class: col-3, header-adjust, header-adjust-minimal-list - Terraform contains everything you need to configure, plan and deploy -## Terraform Cloud -- Terraform Cloud is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments with Terraform +## HCP Terraform +- HCP Terraform is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments with Terraform -- Terraform Cloud provides features to manage user access, assign team permissions, automate integrations, host private resources, enforce policies, conduct audit, etc. +- HCP Terraform provides features to manage user access, assign team permissions, automate integrations, host private resources, enforce policies, conduct audit, etc. ## Terraform Enteprise -- Terraform Enterprise is private instance of Terraform Cloud deployed in a private environment with dedicated support from HashiCorp. +- Terraform Enterprise is private instance of HCP Terraform deployed in a private environment with dedicated support from HashiCorp. - Terraform Enterprise appeals to security conscious organizations that must accommodate advanced security and compliance requirements. --- -name: terraform-cloud +name: hcp-terraform class: col-2, header-adjust, minimal-list -# Terraform Cloud +# HCP Terraform ### Single control plane for provisioning * Fully-managed, infrastructure-as-code cloud service @@ -443,21 +443,21 @@ class: col-2, header-adjust, minimal-list * Enterprise features to provide advanced security, compliance and governance -![Terraform Cloud](images/terraform_cloud.svg) +![HCP Terraform](images/terraform_cloud.svg) ??? -# Terraform Cloud +# HCP Terraform -## Why Terraform Cloud? +## Why HCP Terraform? -- Terraform Cloud enables infrastructure automation for provisioning, compliance, and management of any cloud, datacenter, and service. +- HCP Terraform enables infrastructure automation for provisioning, compliance, and management of any cloud, datacenter, and service. -- Terraform Cloud provides infrastructure automation as a service, is free to get started, and has an in-place upgrade to paid option. +- HCP Terraform provides infrastructure automation as a service, is free to get started, and has an in-place upgrade to paid option. -- Terraform Cloud is not the same as Terraform Community Edition. Terraform Cloud is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. +- HCP Terraform is not the same as Terraform Community Edition. HCP Terraform is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. --- -name: terraform-cloud-build +name: hcp-terraform-build class: col-2, header-adjust, minimal-paragraph # Build infrastructure remotely with your team @@ -477,11 +477,11 @@ Review and comment on plans before executing any change to infrastructure # Build infrastructure remotely with your team - This slide is about **`team collaboration`** across an organization. -- Terraform Cloud provides a number of features for teams to collaborate with a common purpose. +- HCP Terraform provides a number of features for teams to collaborate with a common purpose. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a story that fits your narrative. For example: -1. **Remote state storage**: Remove a vulnerable part of the process by storing the deployment state in Terraform Cloud, where it is stored in an encrypted format at rest. +1. **Remote state storage**: Remove a vulnerable part of the process by storing the deployment state in HCP Terraform, where it is stored in an encrypted format at rest. 2. **Flexible workflows**: Allow practitioners to use the apprach that works best for their situation. @@ -490,7 +490,7 @@ Review and comment on plans before executing any change to infrastructure 4. **Collaborate on infrastructure changes**: Each team is responsible for their domain of expertise. --- -name: terraform-cloud-standard +name: hcp-terraform-standard class: col-3, header-adjust, minimal-list # Standardize best practices ###Private registry @@ -506,7 +506,7 @@ class: col-3, header-adjust, minimal-list # Standardize best practices - This slide is about **`business calibration`** when adopting a service for deployment automation. -- Terraform Cloud introduces workflow features for teams to support typical enterprise requirements. +- HCP Terraform introduces workflow features for teams to support typical enterprise requirements. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a point that fits your narrative. For example: @@ -517,14 +517,14 @@ class: col-3, header-adjust, minimal-list 3. **Policy as code**: Remove risk with standard deployments, avoiding common misconfigurations, maintaining security standards and confirming compliance requirements. --- -name: terraform-cloud-cicd +name: hcp-terraform-cicd class: col-2, header-adjust, minimal-paragraph # Integrating into your CI/CD pipelines ###CI/CD integration Integrate Terraform runs into your existing toolchain for improved automation ###API-driven Operations -Build Terraform Cloud into your existing automation workflows +Build HCP Terraform into your existing automation workflows ###Concurrent runs Increase your team’s velocity by adding concurrent runs to your plan @@ -535,17 +535,17 @@ Execute Terraform runs from behind your firewall or connect to other private res # Standardize best practices - This slide is about **`process optimization`** in service delivery. -- Terraform Cloud integrates in various forms to enhance existing service delivery models. +- HCP Terraform integrates in various forms to enhance existing service delivery models. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a point that fits your narrative. For example: -1. **CI/CD integration**: Inject automation into your service delivery practice, where Terraform Cloud works alongside your service management requests and fullfilment channels. +1. **CI/CD integration**: Inject automation into your service delivery practice, where HCP Terraform works alongside your service management requests and fullfilment channels. 2. **Concurrent runs**: Accelerate delivery and control the rate of deployments; support seasonal, high-intensity service delivery workloads. -3. **API-driven Operations**: Support an API-first methodology and align with your existing service management practices. Terraform Cloud offers multiple API-driven methods to complement the chain of operations in existing automation workflows. +3. **API-driven Operations**: Support an API-first methodology and align with your existing service management practices. HCP Terraform offers multiple API-driven methods to complement the chain of operations in existing automation workflows. -4. **Private datacenter connectivity**: Extend Terraform Cloud features and workflow steps to private networks that include Cloud and traditional datacenter environments. +4. **Private datacenter connectivity**: Extend HCP Terraform features and workflow steps to private networks that include Cloud and traditional datacenter environments. --- name: lab-guidance-01 @@ -559,14 +559,14 @@ class: col-2, adjust-minimal-sub-list * Set up Code Editor * Try out Terraform commands -1. Terraform Cloud Setup - * Sign-up or log in to Terraform Cloud +1. HCP Terraform Setup + * Sign-up or log in to HCP Terraform * Create a Plus Tier trial organization - * Generate a personal Terraform Cloud token + * Generate a personal HCP Terraform token 1. Safekeeping Your Terraform State * Deploy a working app environment in Azure - * Use Terraform Cloud to manage Terraform state + * Use HCP Terraform to manage Terraform state - Quiz 1 - Terraform Remote State ??? @@ -607,14 +607,14 @@ class: review, no-footer 1. The adoption journey of infrastructure-as-code with Terraform includes phases of maturity for individuals, groups, and organizations -2. Terraform Cloud is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments +2. HCP Terraform is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments ??? # Chapter 1 review 1. The adoption patterns we see, both among our large-scale users as well as individual contributors, involve multiple adaptive stages. The central idea remains uniform in that automation should be standardized as shared practice, and that governance guidelines are needed to support emerging requirements. -2. Terraform Cloud is not the same as Terraform Community Edition. Terraform Cloud is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. We use Terraform Cloud to manage the lifecyle of infrastructure deployemnts using Terraform [Community]. +2. HCP Terraform is not the same as Terraform Community Edition. HCP Terraform is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. We use HCP Terraform to manage the lifecyle of infrastructure deployemnts using Terraform [Community]. --- name: Access-Control class: title, no-footer @@ -628,9 +628,9 @@ class: title, no-footer This chapter is organized in three sections: 1. The Core Terraform Workflow - - Review the benefits of the Core Terraform Workflow with Terraform Cloud + - Review the benefits of the Core Terraform Workflow with HCP Terraform -2. Shared Resources in Terraform Cloud +2. Shared Resources in HCP Terraform - Projects and Workspaces - Deployment State @@ -638,7 +638,7 @@ This chapter is organized in three sections: 3. Team Collaboration - - Hightlight how teams access shared resources in Terraform Cloud + - Hightlight how teams access shared resources in HCP Terraform - How to apply the resources in a typical project lifecycle **INSTRUCTOR NOTE**: Remind the audience the topics above are showcased in the lab portion. @@ -697,28 +697,28 @@ class: col-3, header-adjust, header-adjust-minimal-list ![:scale 40%](images/adoption_journey_individual.svg) --- -name: core-terraform-workflow-with-tfc +name: core-terraform-workflow-with-hcp-terraform class: col-3, header-adjust, header-adjust-minimal-list -# The Core Terraform Workflow and Terraform Cloud +# The Core Terraform Workflow and HCP Terraform ### Write * Author infrastructure as code and maintain in VCS * Team members work on authoring config until it is ready to propose changes via a pull request -* Terraform Cloud secures state, input variables, and authorized access +* HCP Terraform secures state, input variables, and authorized access
### Plan * Automated, speculative plans review changes before applying so team members can quickly analyze the full plan details -* Terraform Cloud estimates monthly costs of deployment -* Terraform Cloud evaluates policies against the plan to determine compliance with policy-as-code logic +* HCP Terraform estimates monthly costs of deployment +* HCP Terraform evaluates policies against the plan to determine compliance with policy-as-code logic ### Apply * Team members trigger __apply__ directives via CLI, API or VCS change control -* Authorized Terraform Cloud users can approve or reject deployments -* Terraform Cloud can integrate third-party tools and services to manage cost, security, and compliance; Or, to enhance your workflow with custom logic +* Authorized HCP Terraform users can approve or reject deployments +* HCP Terraform can integrate third-party tools and services to manage cost, security, and compliance; Or, to enhance your workflow with custom logic ??? -# The Core Terraform Workflow and Terraform Cloud +# The Core Terraform Workflow and HCP Terraform - There are still only three stages on the Core Terraform Workflow, but there are significant improvements in the approach to manage deployments. For instance: @@ -732,13 +732,13 @@ class: col-3, header-adjust, header-adjust-minimal-list ![:scale 40%](images/adoption_journey_multiple_groups.svg) --- -name: tfc-workspaces +name: hcp-terraform-workspaces class: col-2, minimal-list # Projects and Workspaces -- Terraform Cloud organizes infrastructure collections with projects and workspaces that align to teams +- HCP Terraform organizes infrastructure collections with projects and workspaces that align to teams -- A project is a logical grouping of Terraform Cloud workspaces +- A project is a logical grouping of HCP Terraform workspaces - Workspaces contain everything Terraform needs to manage a given collection of infrastructure, and separate workspaces function like completely separate working entities @@ -755,19 +755,19 @@ class: col-2, minimal-list - Grouping deployment types by department - Grouping deployment types by team -- Workspaces fit into Projects to execute on the actual deployments. Each workspace follows logic for execution and access rules, policies, resources, integrations, etc. are inherent from the project or Terraform Cloud organization. +- Workspaces fit into Projects to execute on the actual deployments. Each workspace follows logic for execution and access rules, policies, resources, integrations, etc. are inherent from the project or HCP Terraform organization. --- -name: tfc-state +name: hcp-terraform-state class: col-2, minimal-list # Deployment State -- Terraform Cloud retains historical state versions, available for analysis of infrastructure changes over time +- HCP Terraform retains historical state versions, available for analysis of infrastructure changes over time - Authorized users can download and manipulate state to manually import, taint, move, or rename existing resources to match a drift in configuration - Authorized users can roll back to a previous state version with the UI -- Terraform Cloud uses state to measure drift with automated Health Assessments +- HCP Terraform uses state to measure drift with automated Health Assessments ![Browser](images/workspace-state.svg) ??? @@ -780,13 +780,13 @@ class: col-2, minimal-list - All state information is fully encrypted at rest, where each object is encrypted with a unique encryption key. --- -name: tfc-variables +name: hcp-terraform-variables class: col-2, minimal-list # Deployment Variables -- Terraform Cloud supports a global scope with **variable sets**. These can be exposed globaly or to select workspaces +- HCP Terraform supports a global scope with **variable sets**. These can be exposed globaly or to select workspaces -- Terraform Cloud workspaces use local variables - may override variable sets +- HCP Terraform workspaces use local variables - may override variable sets - Variable subsets include @@ -798,7 +798,7 @@ class: col-2, minimal-list
-![Terraform Cloud Variables](images/deployment_variables.svg) +![HCP Terraform Variables](images/deployment_variables.svg) ??? # Deployment Variables @@ -812,29 +812,29 @@ class: col-2, minimal-list - Things that are configured during the deployment. Consider, the internal ID or a Cloud VPC, the ARN of a security group, the URL or a storage bucket. These can be more applicable to workspace variables. --- -name: tfc-user-permissions +name: hcp-terraform-user-permissions class: col-2, minimal-list # Permissions Model -- Users must belong to a team with appropriate grant permissions to perform actions in Terraform Cloud +- Users must belong to a team with appropriate grant permissions to perform actions in HCP Terraform - The permissions model splits into organization-level and workspace-level permissions - Organization owners can grant teams permissions to manage policies, projects and workspaces, VCS settings, private registry providers and modules, and policy overrides across an organization -![Terraform Cloud Permissions Model](images/permissions_model.svg) +![HCP Terraform Permissions Model](images/permissions_model.svg) ??? # Permissions Model -- The permissions model splits into into organization-level and workspace-level permissions. This is the best combination to align administrators, producers and consumers to manage, create and consume resources via Terraform Cloud. +- The permissions model splits into into organization-level and workspace-level permissions. This is the best combination to align administrators, producers and consumers to manage, create and consume resources via HCP Terraform. -- The organization-level permissions use an `Implicit-Deny` - which means Terraform Cloud administration is subject to assignment. In this model, teams fucntion based on their permissions and membership. +- The organization-level permissions use an `Implicit-Deny` - which means HCP Terraform administration is subject to assignment. In this model, teams fucntion based on their permissions and membership. -- The workspace-level permissions have `Implied Permissions` - where Terraform Cloud provides most common functions. Under this model permissions imply other permissions; for example, permission to queue plans also grants permission to read runs. +- The workspace-level permissions have `Implied Permissions` - where HCP Terraform provides most common functions. Under this model permissions imply other permissions; for example, permission to queue plans also grants permission to read runs. -- Q: What complements the permissions model? A: The alignment of Terraform Cloud teams with external teams via single-sign-on (SSO). +- Q: What complements the permissions model? A: The alignment of HCP Terraform teams with external teams via single-sign-on (SSO). --- -name: tfc-team-collaboration +name: hcp-terraform-team-collaboration class: col-2, header-adjust-minimal-list # Team collaboration There are three main elements to the Terraform collaboration experience: @@ -842,11 +842,11 @@ There are three main elements to the Terraform collaboration experience: - **Centralized plans and applies**: Safely run Terraform plans and applies in one location where collaborators can review and make decisions together - **State management**: Store, secure, lock, and version Terraform state files -![Terraform Cloud Permissions Model](images/collaboration_experience.svg) +![HCP Terraform Permissions Model](images/collaboration_experience.svg) ??? # Team collaboration -- The structure of the Möbius strip visual reflects a familiar way to describe a lifecycle process. There are many examples of that idea, and our intent is to explain where Terraform Cloud provides value. +- The structure of the Möbius strip visual reflects a familiar way to describe a lifecycle process. There are many examples of that idea, and our intent is to explain where HCP Terraform provides value. - These concepts likely overlap with existing frameworks and that is why integration resonates with sophisticated environments. @@ -866,10 +866,10 @@ class: col-2, adjust-minimal-sub-list * Explore Variable Sets * Compare workspace variables -1. Working with Teams in Terraform Cloud +1. Working with Teams in HCP Terraform * Create Organization Teams * Assign Workspace Permissions to Teams - * Invite Terraform Cloud users to join Teams + * Invite HCP Terraform users to join Teams - Quiz 2 - Secure Variables @@ -893,16 +893,16 @@ name: chapter-2-review class: review, no-footer # Chapter 2 review -1. Terraform Cloud permissions model splits into organization and workspace levels +1. HCP Terraform permissions model splits into organization and workspace levels -2. Resource administration in Terraform Cloud defaults to an implicit deny-all model, and teams require global, project or workspace assignments +2. Resource administration in HCP Terraform defaults to an implicit deny-all model, and teams require global, project or workspace assignments ??? # Chapter 2 review -1. When teams are intent in formalizing their approach to automated infrastructure deployment with Terraform, there need to be fundamental principals to support a responsible use of Terraform Cloud. The permissions model is a core principle to support governance and responsible use of IaC automation. Without a permissions model, teams operated based on different opinions without self-supervision. +1. When teams are intent in formalizing their approach to automated infrastructure deployment with Terraform, there need to be fundamental principals to support a responsible use of HCP Terraform. The permissions model is a core principle to support governance and responsible use of IaC automation. Without a permissions model, teams operated based on different opinions without self-supervision. -2. When teams have different responsibilities, the platform instrumentation should allow for effective changes at a group level to support roles, not individual identities. Having an implicit `deny-all` for the Terraform Cloud organization, and `implied permissions` for teams and workspaces accelerates the effective purpose of IaC automation. +2. When teams have different responsibilities, the platform instrumentation should allow for effective changes at a group level to support roles, not individual identities. Having an implicit `deny-all` for the HCP Terraform organization, and `implied permissions` for teams and workspaces accelerates the effective purpose of IaC automation. --- name: VCS-and-Governance @@ -937,46 +937,46 @@ This chapter is organized in three sections: **INSTRUCTOR NOTE**: Remind the audience that the hands-on portions of the lab demonstrate the topics above. --- -name: tfc-vcs-workflow +name: hcp-terraform-vcs-workflow class: col-2, minimal-list # VCS Connections -- Access a list of repositories and link to your private module registry, policy sets and workspaces in Terraform Cloud +- Access a list of repositories and link to your Terraform Private Registry, policy sets and workspaces in HCP Terraform -- Terraform Cloud downloads the contents of a repository based on workflow triggers +- HCP Terraform downloads the contents of a repository based on workflow triggers -- Terraform Cloud supports Azure DevOps, BitBucket, GitHub, and GitLab +- HCP Terraform supports Azure DevOps, BitBucket, GitHub, and GitLab ![VCS Workflow Overview](images/vcs_workflow_overview.svg) ??? # VCS Connections -- Terraform Cloud uses VCS connection to link directly to assets in repos +- HCP Terraform uses VCS connection to link directly to assets in repos - VCS connections are configured once and used for three specific types of assets: - 1. Terraform Modules to list in the private Terraform Cloud Registry + 1. Terraform Modules to list in the Terraform Private Registry 2. Policy collections to align with Policy Sets 3. Terraform deployments in a 1:1 relationship with Workspaces -- It is important to remember that Terraform Cloud Worspaces can use up to three types of workflows to trigger a run: 1- `CLI`, 2- `VCS` and 3- `API`. Using VCS satisfies one of these workflow patterns. +- It is important to remember that HCP Terraform Worspaces can use up to three types of workflows to trigger a run: 1- `CLI`, 2- `VCS` and 3- `API`. Using VCS satisfies one of these workflow patterns. --- -name: tfc-vcs-connection +name: hcp-terraform-vcs-connection class: col-2, minimal-list # VCS Workflow -- Workspaces register webhooks with your VCS provider, and Terraform Cloud gets notified of new commits to a branch +- Workspaces register webhooks with your VCS provider, and HCP Terraform gets notified of new commits to a branch -- With VCS integration, Terraform Cloud can automatically initiate a run on a dedicated Terraform Cloud worker +- With VCS integration, HCP Terraform can automatically initiate a run on a dedicated HCP Terraform worker -- Terraform Cloud makes code review easier by automatically predicting how pull requests affect infrastructure with speculative plans +- HCP Terraform makes code review easier by automatically predicting how pull requests affect infrastructure with speculative plans ![VCS Connection Overview](images/vcs_connection_overview.svg) ??? # VCS Workflow -- A VCS connection is established at the administrative level for the VCS provider and Terraform Cloud. +- A VCS connection is established at the administrative level for the VCS provider and HCP Terraform. - From the illustration: @@ -984,24 +984,24 @@ class: col-2, minimal-list 2. Notifications are triggered by pull requests and merges. - 3. The Webhook notifies the associated Terraform Cloud workspace. + 3. The Webhook notifies the associated HCP Terraform workspace. - 4. Terraform Cloud securely retrieves the IaC collection to a secure location in Terraform Cloud. The location is not exposed outside of Terraform Cloud. + 4. HCP Terraform securely retrieves the IaC collection to a secure location in HCP Terraform. The location is not exposed outside of HCP Terraform. - 5. With a pull request, Terraform Cloud runs a speculative plan. + 5. With a pull request, HCP Terraform runs a speculative plan. 6. The results are processed back to the VCS pull request for further processing. 7. With a successful plan, an other validing tests, the pull request is merged. - 8. With an authorized VCS merge, Terraform Cloud initiates a new run and completes the entire set of steps to deploy the environment. + 8. With an authorized VCS merge, HCP Terraform initiates a new run and completes the entire set of steps to deploy the environment. --- -name: tfc-policy-as-code +name: hcp-terraform-policy-as-code class: col-2, minimal-list, constrain-image # Policy As Code -- Terraform Cloud enforces rules with policies written with HashiCorp Sentinel or Open Policy Agent (OPA) +- HCP Terraform enforces rules with policies written with HashiCorp Sentinel or Open Policy Agent (OPA) - Policies are expressed as code and grouped into policy sets @@ -1040,7 +1040,7 @@ The categories above are not exhaustive and there are many other optional catego >> A development group should not deploy a fleet of VMs, any with 8-32 cores and/or 16-64GB memory, on a Friday afternoon past 3PM. --- -name: tfc-policy-as-code-validation +name: hcp-terraform-policy-as-code-validation class: col-2, minimal-list # Automated Policy Validation @@ -1079,7 +1079,7 @@ class: col-2, minimal-list 4. When a policy check fails, the assigned enforcement level determines whether a user with authority can override. --- -name: tfc-vcs-automation +name: hcp-terraform-vcs-automation class: col-3, header-adjust, header-adjust-minimal-paragraph # Automated Testing @@ -1109,7 +1109,7 @@ class: col-3, header-adjust, header-adjust-minimal-paragraph - **Unit testing** looks at expected values in the Terraform plan. -- **Contract testing** compares infrastructure state. Highlight that Terraform Cloud allows state sharing between workspaces to explore key informational data points. +- **Contract testing** compares infrastructure state. Highlight that HCP Terraform allows state sharing between workspaces to explore key informational data points. - **Integration testing** compares ___real___ resources and their interaction. These often include functional, policy and security domains. You can introduce `Run Tasks` as the vehicle to perform this type of testing. @@ -1155,7 +1155,7 @@ class: col-2, adjust-minimal-sub-list **INSTRUCTOR NOTES**: - This is the longest lab portion of the workshop. -- It is possibly the most challenging part for some participants as they have to use GitHub in combination with Terraform Cloud. +- It is possibly the most challenging part for some participants as they have to use GitHub in combination with HCP Terraform. - It is important to remind your audience that the lab is available for 5 hours. - If you have extended the Instruqt Invite beyond the workshop time, you can emphasize. @@ -1164,15 +1164,15 @@ name: chapter-3-review class: review, no-footer # Chapter 3 review -1. Terraform Cloud supports CLI, VCS and API workflows, adapting to different code-management practices +1. HCP Terraform supports CLI, VCS and API workflows, adapting to different code-management practices -2. Terraform Cloud enables testing and validation with policy-as-code, and sustains maintenance with deployment health-checks and alerting +2. HCP Terraform enables testing and validation with policy-as-code, and sustains maintenance with deployment health-checks and alerting ??? # Chapter 3 review -1. Terraform execution is driven by different priorities and the workflows in Terraform Cloud are adaptive. VCS-driven workflows are important for groups that are focused specifically in Infrastructure-as-Code delivery. VCS-driven workflows shorten the knowledge gap between newhires and veterans because they use a common set of defined practices; and VCS-driven workflows flattens the adoption curve for consumers because not everyone needs to learn Terraform. +1. Terraform execution is driven by different priorities and the workflows in HCP Terraform are adaptive. VCS-driven workflows are important for groups that are focused specifically in Infrastructure-as-Code delivery. VCS-driven workflows shorten the knowledge gap between newhires and veterans because they use a common set of defined practices; and VCS-driven workflows flattens the adoption curve for consumers because not everyone needs to learn Terraform. -2. Policy validation is increasingly necessary for all aspect of \[Work\]-as-Code practices. In our case, we truly believe that there should not be ___#YOLO-driven development!___ when dealing with infrastructure deployments. Terraform Cloud provides deployment health-checks and alerting mechanisms to provide continual coverage of emerging changes in infrastructure deployments. +2. Policy validation is increasingly necessary for all aspect of \[Work\]-as-Code practices. In our case, we truly believe that there should not be ___#YOLO-driven development!___ when dealing with infrastructure deployments. HCP Terraform provides deployment health-checks and alerting mechanisms to provide continual coverage of emerging changes in infrastructure deployments. --- name: Modules-and-API class: title, no-footer @@ -1188,13 +1188,13 @@ This chapter is organized in three sections: - Why is the Public Regitry important? - What is the value of Terraform modules? - - The advantage of the Terraform Cloud Private Module Registry (PMR) + - The advantage of the HCP Terraform Private Registry 2. Business Process Models - Trusted Orchestrator - VCS coordination - - Terraform Cloud + - HCP Terraform 3. API-driven workflows @@ -1222,7 +1222,7 @@ class: col-2, minimal-list - The progression of the Terraform journey into teams naturally leads to Terraform modules. These are like templates that teams often customize and use in deployments. -- HashiCorp is comoditazing this centralized registry and extending it to Policy-as-Code and Run Tasks. **Policy-As-Code** are libraries of policies that can be used within Terraform Cloud. **Run Tasks** are third-party integrations to tools and services to manage cost, security, compliance and more. +- HashiCorp is comoditazing this centralized registry and extending it to Policy-as-Code and Run Tasks. **Policy-As-Code** are libraries of policies that can be used within HCP Terraform. **Run Tasks** are third-party integrations to tools and services to manage cost, security, compliance and more. --- name: terraform-modules @@ -1233,7 +1233,7 @@ class: col-2, minimal-list - Producer groups create curated modules as standard, templated offerings with configurable properties -- Modules are maintained in VCS repositories and published to a private registry in Terraform Cloud +- Modules are maintained in VCS repositories and published to a private registry in HCP Terraform ![Terraform Modules](images/terraform_modules.svg) ??? @@ -1244,39 +1244,39 @@ class: col-2, minimal-list - Modules in the Terraform Registry are free to use, and Terraform can download them automatically with an appropriate source and version in a module call block. --- -name: tfc-private-registry +name: hcp-terraform-private-registry class: col-2, minimal-list -# Private Module Registry +# Terraform Private Registry -- Terraform Cloud includes a private registry where teams can set up modules and providers from private VCS repositories +- HCP Terraform includes a private registry where teams can set up modules and providers from private VCS repositories - Many organizations use modules, providers, or policies that cannot or do not need to be publicly available -- Practitioners can copy modules from the public Terraform Registry, customize a private version, and publish to their Private Module Registry in Terraform Cloud +- Practitioners can copy modules from the public Terraform Registry, customize a private version, and publish to their Terraform Private Registry in HCP Terraform ![PMR Workflow](images/pmr_technical_workflow.svg) ??? -# Private Module Registry -- In Terraform Cloud, modules can be privatized to support the idea of a safe sandbox. +# Terraform Private Registry +- In HCP Terraform, modules can be privatized to support the idea of a safe sandbox. - The further a module is configured, the least number of choices consumers need to make to automate their deployments. -- Private modules can referenced arbitrarily, but access to the resource follows the Terraform Cloud permissions model - meaning only teams with access privileges are able to access the module in the private registry, and execution of the code is only possible within a workspace in the same Terraform Cloud organization. +- Private modules can referenced arbitrarily, but access to the resource follows the HCP Terraform permissions model - meaning only teams with access privileges are able to access the module in the private registry, and execution of the code is only possible within a workspace in the same HCP Terraform organization. **INSTRUCTOR NOTE**: -> You can bring up the idea of the Configuration Designer in Terraform Cloud - which leads to no-code provisioning. +> You can bring up the idea of the Configuration Designer in HCP Terraform - which leads to no-code provisioning. > No-code provisioning lets users deploy infrastructure in modules without writing any Terraform configuration, which makes your standards even easier to comply with, and removes the dependency on infrastructure teams or ticketing systems to give developers their required resources. --- -name: tfc-api +name: hcp-terraform-api class: col-2, minimal-list # Terraform API -- Terraform Cloud supports a rich HTTP API to perform most operations, replacing UI directives and CLI commands +- HCP Terraform supports a rich HTTP API to perform most operations, replacing UI directives and CLI commands -- The TFC Terraform Provider is a practical API implementation for automating Terraform Cloud managment with Terraform (HCL) configuration code +- The TFC Terraform Provider is a practical API implementation for automating HCP Terraform managment with Terraform (HCL) configuration code - The Terraform CDK supports the following: @@ -1294,20 +1294,20 @@ class: col-2, minimal-list # Terraform API - Mature IaC practices evolve to delegate tasks through automation. Terraform can be fully operated via API allowing organizations to easily integrate it into their existing deployment processes. -- Terraform Cloud supports multiple instrumentation technologies to implemented automated provisioning. The idea is to support adequate technology frameworks that support a service management practice. +- HCP Terraform supports multiple instrumentation technologies to implemented automated provisioning. The idea is to support adequate technology frameworks that support a service management practice. -- As a whole, the Terraform community provides testing frameworks, pipeline utilities, programming libraries, scripted templates, and repeatable examples to implement Terraform. What is relevant to emphasize is that all of these are 100% compatible with Terraform Cloud, and the time and effort to accomdate those resources is minimal. +- As a whole, the Terraform community provides testing frameworks, pipeline utilities, programming libraries, scripted templates, and repeatable examples to implement Terraform. What is relevant to emphasize is that all of these are 100% compatible with HCP Terraform, and the time and effort to accomdate those resources is minimal. - ->> The real value is the utility of the Terraform echo system and the benefits of Terraform Cloud combined. In blunt words, technology is not a barrier... teams need to commit to the adoption journey. +>> The real value is the utility of the Terraform echo system and the benefits of HCP Terraform combined. In blunt words, technology is not a barrier... teams need to commit to the adoption journey. --- -name: tfc-api-workflows +name: hcp-terraform-api-workflows class: col-2, minimal-list # Service Management -- Terraform Cloud operations can be entirely managed via API, allowing organizations to integrate automated deployments in their existing business processes easily +- HCP Terraform operations can be entirely managed via API, allowing organizations to integrate automated deployments in their existing business processes easily - Trusted orchestrators use the Terraform API to procure resources and coordinate runtime operations @@ -1316,22 +1316,22 @@ class: col-2, minimal-list ![Terraform API](images/terraform_workflow.svg) ??? # Service Management -- In context of service management, the most visible value of Terraform Cloud is the ability to integrate resources, workflow and support capabilites seamlessly. +- In context of service management, the most visible value of HCP Terraform is the ability to integrate resources, workflow and support capabilites seamlessly. -- Terraform Cloud is a cloud service and every functional area is designed with the intention to hand-off to a different one. +- HCP Terraform is a cloud service and every functional area is designed with the intention to hand-off to a different one. -- In the diagram, the main highlight is the HashiCorp accent in pink, which symbolizes the functional areas where Terraform Cloud operates within the service workflow. +- In the diagram, the main highlight is the HashiCorp accent in pink, which symbolizes the functional areas where HCP Terraform operates within the service workflow. -- The illustration is simplified and incomplete as there are many other steps in a formal service management process. As in the illustration of the [Möbius strip](#tfc-team-collaboration), there are many examples of a process idea, and our intent is to explain where Terraform Cloud provides value on day-one. +- The illustration is simplified and incomplete as there are many other steps in a formal service management process. As in the illustration of the [Möbius strip](#hcp-terraform-team-collaboration), there are many examples of a process idea, and our intent is to explain where HCP Terraform provides value on day-one. --- -name: tfc-api-cicd +name: hcp-terraform-api-cicd class: center_p # CICD Integration -Terraform Cloud integrates into your existing CI/CD pipelines, IT service management interfaces, and version control system processes. +HCP Terraform integrates into your existing CI/CD pipelines, IT service management interfaces, and version control system processes. -![Terraform Cloud CIDC](images/terraform_cloud_cicd.svg) +![HCP Terraform CIDC](images/terraform_cloud_cicd.svg) ??? # CICD Integration - The illustration showcases the type of service layers involved in a CI/CD process. Here is a quick breakdown of each from left to right: @@ -1342,7 +1342,7 @@ Terraform Cloud integrates into your existing CI/CD pipelines, IT service manage | ServiceNow | | IT Service management agent that handles requests and triggers work | | Jenkins | | Trusted orchestrator to provide step-by-step functions to deliver the infrastructure | | GitHub | | VCS to manage the lifecycle of IaC, Modules and PaC | -| Terraform Cloud | | Cloud service to manage the lifecyle of an IaC deployment using Terraform | +| HCP Terraform | | Cloud service to manage the lifecyle of an IaC deployment using Terraform | | Azure | | Target environment | > **NOTABLY MISSING** is a secrets management service to safeguard secrets and to manage the lifecyle of those secrets. @@ -1355,7 +1355,7 @@ Terraform Cloud integrates into your existing CI/CD pipelines, IT service manage > | :--------------------: | --- | :------: | --- | :----------: | --- | :----: | > | Korn
C
Bourne | | BladeLogic
Opsware
VMware | | Ansible
Chef
Puppet
Terraform | | Terraform
ARM templates
CloudFormation
GC Deployment Manager | --> -- The overall infrastructure automation space is not new and there have been multiple generations of promising implementation solutions. The true realization of IaC had not happened until Terraform settled as the de facto solution. Terraform Cloud is a next-generation service to support that realization moving forward. +- The overall infrastructure automation space is not new and there have been multiple generations of promising implementation solutions. The true realization of IaC had not happened until Terraform settled as the de facto solution. HCP Terraform is a next-generation service to support that realization moving forward. - It important to highlight the innovative approach from HashiCorp in the IaC space since 2012. @@ -1364,10 +1364,10 @@ name: lab-guidance-04 class: col-2, adjust-minimal-sub-list # Workshop - Part Four -1. Private Module Registry +1. Terraform Private Registry * Implement a Terraform module from the [Terraform Registry](https://registry.terraform.io) * Clone a Terraform Registry module to your private VCS - * Implement a module from your Private Module Registry + * Implement a module from your Terraform Private Registry 1. API Driven Workflows * Test core HTTP API methods @@ -1375,7 +1375,7 @@ class: col-2, adjust-minimal-sub-list * Explore API wrappers concepts * Use continuous integration with GitHub Actions -- Quiz 4 - Private Module Registry +- Quiz 4 - Terraform Private Registry - Clean up @@ -1403,7 +1403,7 @@ class: col-2, adjust-minimal-sub-list - The __Clean up__ challenge removes the following: - Azure deployment of the Hashicat app - - Terraform Cloud configurations + - HCP Terraform configurations - GitHub repo of `hashicat-app` - The __Clean up__ challenge does not remove the cloned module from the Terraform Registry. @@ -1414,13 +1414,13 @@ class: review, no-footer 1. The Private Registry establishes a service catalogue of infrastructure deployments and options for no-code -2. Terraform Cloud supports rich API options that adapt to your existing service model workflows and integrate agnostically into your delivery pipelines +2. HCP Terraform supports rich API options that adapt to your existing service model workflows and integrate agnostically into your delivery pipelines ??? # Chapter 4 review -1. The Public Terraform Registry and the Private Module Registry (PMR) serve a similar function purpose. The main difference is that the PMR is designed to support privacy and security controls. +1. The Public Terraform Registry and the Terraform Private Registry serve a similar function purpose. The main difference is that the PMR is designed to support privacy and security controls. -2. When using Terraform Cloud, stake-holders should expect to maximize the use of automation to support service management processes via service delivery pipelines. The Terraform Cloud API promotes an API-first approach and it contains a vast array of instrumentation options to satisfy most use cases. +2. When using HCP Terraform, stake-holders should expect to maximize the use of automation to support service management processes via service delivery pipelines. The HCP Terraform API promotes an API-first approach and it contains a vast array of instrumentation options to satisfy most use cases. --- name: additional-resources class: header-adjust, minimal @@ -1430,7 +1430,7 @@ Learn at your own pace in one place with reference docs, step by step tutorials, ### HashiCorp Community Join our forum or a user group to engage and learn from the broader community. `https://www.hashicorp.com/community` ### HashiCorp Forum -Terraform, Terraform Cloud, Terraform Enterprise, and CDK for Terraform use cases, questions, and best practices discussions. `https://discuss.hashicorp.com` +Terraform, HCP Terraform, Terraform Enterprise, and CDK for Terraform use cases, questions, and best practices discussions. `https://discuss.hashicorp.com` ??? # Additional Resources diff --git a/docs/slides/azure/terraform-cloud/images/Terraform_VerticalLogo_FullColor.png b/docs/slides/azure/hcp-terraform/images/Terraform_VerticalLogo_FullColor.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/Terraform_VerticalLogo_FullColor.png rename to docs/slides/azure/hcp-terraform/images/Terraform_VerticalLogo_FullColor.png diff --git a/docs/slides/azure/terraform-cloud/images/add_a_module.png b/docs/slides/azure/hcp-terraform/images/add_a_module.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/add_a_module.png rename to docs/slides/azure/hcp-terraform/images/add_a_module.png diff --git a/docs/slides/azure/terraform-cloud/images/azure_encrypted_vars.png b/docs/slides/azure/hcp-terraform/images/azure_encrypted_vars.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/azure_encrypted_vars.png rename to docs/slides/azure/hcp-terraform/images/azure_encrypted_vars.png diff --git a/docs/slides/azure/terraform-cloud/images/azure_pmr.png b/docs/slides/azure/hcp-terraform/images/azure_pmr.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/azure_pmr.png rename to docs/slides/azure/hcp-terraform/images/azure_pmr.png diff --git a/docs/slides/azure/terraform-cloud/images/azure_vnet_module.png b/docs/slides/azure/hcp-terraform/images/azure_vnet_module.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/azure_vnet_module.png rename to docs/slides/azure/hcp-terraform/images/azure_vnet_module.png diff --git a/docs/slides/azure/terraform-cloud/images/change_to_local.png b/docs/slides/azure/hcp-terraform/images/change_to_local.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/change_to_local.png rename to docs/slides/azure/hcp-terraform/images/change_to_local.png diff --git a/docs/slides/azure/terraform-cloud/images/checklist.jpg b/docs/slides/azure/hcp-terraform/images/checklist.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/checklist.jpg rename to docs/slides/azure/hcp-terraform/images/checklist.jpg diff --git a/docs/slides/azure/terraform-cloud/images/choose_an_org.png b/docs/slides/azure/hcp-terraform/images/choose_an_org.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/choose_an_org.png rename to docs/slides/azure/hcp-terraform/images/choose_an_org.png diff --git a/docs/slides/azure/terraform-cloud/images/choose_org.png b/docs/slides/azure/hcp-terraform/images/choose_org.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/choose_org.png rename to docs/slides/azure/hcp-terraform/images/choose_org.png diff --git a/docs/slides/azure/terraform-cloud/images/choose_training_org.png b/docs/slides/azure/hcp-terraform/images/choose_training_org.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/choose_training_org.png rename to docs/slides/azure/hcp-terraform/images/choose_training_org.png diff --git a/docs/slides/azure/terraform-cloud/images/cloud_overview_aws.png b/docs/slides/azure/hcp-terraform/images/cloud_overview_aws.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/cloud_overview_aws.png rename to docs/slides/azure/hcp-terraform/images/cloud_overview_aws.png diff --git a/docs/slides/azure/terraform-cloud/images/cloud_overview_azure.png b/docs/slides/azure/hcp-terraform/images/cloud_overview_azure.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/cloud_overview_azure.png rename to docs/slides/azure/hcp-terraform/images/cloud_overview_azure.png diff --git a/docs/slides/azure/terraform-cloud/images/cloud_overview_generic.png b/docs/slides/azure/hcp-terraform/images/cloud_overview_generic.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/cloud_overview_generic.png rename to docs/slides/azure/hcp-terraform/images/cloud_overview_generic.png diff --git a/docs/slides/azure/terraform-cloud/images/code_example.png b/docs/slides/azure/hcp-terraform/images/code_example.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/code_example.png rename to docs/slides/azure/hcp-terraform/images/code_example.png diff --git a/docs/slides/azure/terraform-cloud/images/commitstrip_devops.jpg b/docs/slides/azure/hcp-terraform/images/commitstrip_devops.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/commitstrip_devops.jpg rename to docs/slides/azure/hcp-terraform/images/commitstrip_devops.jpg diff --git a/docs/slides/azure/terraform-cloud/images/create_a_new_policy.png b/docs/slides/azure/hcp-terraform/images/create_a_new_policy.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/create_a_new_policy.png rename to docs/slides/azure/hcp-terraform/images/create_a_new_policy.png diff --git a/docs/slides/azure/terraform-cloud/images/create_a_new_policy_set_gui.png b/docs/slides/azure/hcp-terraform/images/create_a_new_policy_set_gui.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/create_a_new_policy_set_gui.png rename to docs/slides/azure/hcp-terraform/images/create_a_new_policy_set_gui.png diff --git a/docs/slides/azure/terraform-cloud/images/create_policy_button.png b/docs/slides/azure/hcp-terraform/images/create_policy_button.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/create_policy_button.png rename to docs/slides/azure/hcp-terraform/images/create_policy_button.png diff --git a/docs/slides/azure/terraform-cloud/images/create_repo_workspace.png b/docs/slides/azure/hcp-terraform/images/create_repo_workspace.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/create_repo_workspace.png rename to docs/slides/azure/hcp-terraform/images/create_repo_workspace.png diff --git a/docs/slides/azure/terraform-cloud/images/create_workspace_gui.png b/docs/slides/azure/hcp-terraform/images/create_workspace_gui.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/create_workspace_gui.png rename to docs/slides/azure/hcp-terraform/images/create_workspace_gui.png diff --git a/docs/slides/azure/terraform-cloud/images/create_workspace_gui2.png b/docs/slides/azure/hcp-terraform/images/create_workspace_gui2.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/create_workspace_gui2.png rename to docs/slides/azure/hcp-terraform/images/create_workspace_gui2.png diff --git a/docs/slides/azure/terraform-cloud/images/destroy_gui.png b/docs/slides/azure/hcp-terraform/images/destroy_gui.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/destroy_gui.png rename to docs/slides/azure/hcp-terraform/images/destroy_gui.png diff --git a/docs/slides/azure/terraform-cloud/images/distributed_vcs.png b/docs/slides/azure/hcp-terraform/images/distributed_vcs.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/distributed_vcs.png rename to docs/slides/azure/hcp-terraform/images/distributed_vcs.png diff --git a/docs/slides/azure/terraform-cloud/images/dog_homework.jpg b/docs/slides/azure/hcp-terraform/images/dog_homework.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/dog_homework.jpg rename to docs/slides/azure/hcp-terraform/images/dog_homework.jpg diff --git a/docs/slides/azure/terraform-cloud/images/enable_auto_apply.png b/docs/slides/azure/hcp-terraform/images/enable_auto_apply.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/enable_auto_apply.png rename to docs/slides/azure/hcp-terraform/images/enable_auto_apply.png diff --git a/docs/slides/azure/terraform-cloud/images/encryption.jpg b/docs/slides/azure/hcp-terraform/images/encryption.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/encryption.jpg rename to docs/slides/azure/hcp-terraform/images/encryption.jpg diff --git a/docs/slides/azure/terraform-cloud/images/enter_the_matrix.jpg b/docs/slides/azure/hcp-terraform/images/enter_the_matrix.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/enter_the_matrix.jpg rename to docs/slides/azure/hcp-terraform/images/enter_the_matrix.jpg diff --git a/docs/slides/azure/terraform-cloud/images/fork.png b/docs/slides/azure/hcp-terraform/images/fork.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/fork.png rename to docs/slides/azure/hcp-terraform/images/fork.png diff --git a/docs/slides/azure/terraform-cloud/images/get-started-tfe.png b/docs/slides/azure/hcp-terraform/images/get-started-tfe.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/get-started-tfe.png rename to docs/slides/azure/hcp-terraform/images/get-started-tfe.png diff --git a/docs/slides/azure/terraform-cloud/images/git_commit_log.png b/docs/slides/azure/hcp-terraform/images/git_commit_log.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/git_commit_log.png rename to docs/slides/azure/hcp-terraform/images/git_commit_log.png diff --git a/docs/slides/azure/terraform-cloud/images/git_log.png b/docs/slides/azure/hcp-terraform/images/git_log.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/git_log.png rename to docs/slides/azure/hcp-terraform/images/git_log.png diff --git a/docs/slides/azure/terraform-cloud/images/git_noobs.png b/docs/slides/azure/hcp-terraform/images/git_noobs.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/git_noobs.png rename to docs/slides/azure/hcp-terraform/images/git_noobs.png diff --git a/docs/slides/azure/terraform-cloud/images/git_triggered_run.png b/docs/slides/azure/hcp-terraform/images/git_triggered_run.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/git_triggered_run.png rename to docs/slides/azure/hcp-terraform/images/git_triggered_run.png diff --git a/docs/slides/azure/terraform-cloud/images/git_workflow_tests.png b/docs/slides/azure/hcp-terraform/images/git_workflow_tests.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/git_workflow_tests.png rename to docs/slides/azure/hcp-terraform/images/git_workflow_tests.png diff --git a/docs/slides/azure/terraform-cloud/images/hashimoo.png b/docs/slides/azure/hcp-terraform/images/hashimoo.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/hashimoo.png rename to docs/slides/azure/hcp-terraform/images/hashimoo.png diff --git a/docs/slides/azure/terraform-cloud/images/integrate_github.png b/docs/slides/azure/hcp-terraform/images/integrate_github.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/integrate_github.png rename to docs/slides/azure/hcp-terraform/images/integrate_github.png diff --git a/docs/slides/azure/terraform-cloud/images/kitt_scanner.gif b/docs/slides/azure/hcp-terraform/images/kitt_scanner.gif similarity index 100% rename from docs/slides/azure/terraform-cloud/images/kitt_scanner.gif rename to docs/slides/azure/hcp-terraform/images/kitt_scanner.gif diff --git a/docs/slides/azure/terraform-cloud/images/lego_wallpaper.jpg b/docs/slides/azure/hcp-terraform/images/lego_wallpaper.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/lego_wallpaper.jpg rename to docs/slides/azure/hcp-terraform/images/lego_wallpaper.jpg diff --git a/docs/slides/azure/terraform-cloud/images/live_demo.jpg b/docs/slides/azure/hcp-terraform/images/live_demo.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/live_demo.jpg rename to docs/slides/azure/hcp-terraform/images/live_demo.jpg diff --git a/docs/slides/azure/terraform-cloud/images/mars_terraform.jpg b/docs/slides/azure/hcp-terraform/images/mars_terraform.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/mars_terraform.jpg rename to docs/slides/azure/hcp-terraform/images/mars_terraform.jpg diff --git a/docs/slides/azure/terraform-cloud/images/marscolony.jpg b/docs/slides/azure/hcp-terraform/images/marscolony.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/marscolony.jpg rename to docs/slides/azure/hcp-terraform/images/marscolony.jpg diff --git a/docs/slides/azure/terraform-cloud/images/meow_world.png b/docs/slides/azure/hcp-terraform/images/meow_world.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/meow_world.png rename to docs/slides/azure/hcp-terraform/images/meow_world.png diff --git a/docs/slides/azure/terraform-cloud/images/merge_pull_request.png b/docs/slides/azure/hcp-terraform/images/merge_pull_request.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/merge_pull_request.png rename to docs/slides/azure/hcp-terraform/images/merge_pull_request.png diff --git a/docs/slides/azure/terraform-cloud/images/policy_workspaces.png b/docs/slides/azure/hcp-terraform/images/policy_workspaces.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/policy_workspaces.png rename to docs/slides/azure/hcp-terraform/images/policy_workspaces.png diff --git a/docs/slides/azure/terraform-cloud/images/protect_master.png b/docs/slides/azure/hcp-terraform/images/protect_master.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/protect_master.png rename to docs/slides/azure/hcp-terraform/images/protect_master.png diff --git a/docs/slides/azure/terraform-cloud/images/queue_a_plan.png b/docs/slides/azure/hcp-terraform/images/queue_a_plan.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/queue_a_plan.png rename to docs/slides/azure/hcp-terraform/images/queue_a_plan.png diff --git a/docs/slides/azure/terraform-cloud/images/queue_destroy_plan.png b/docs/slides/azure/hcp-terraform/images/queue_destroy_plan.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/queue_destroy_plan.png rename to docs/slides/azure/hcp-terraform/images/queue_destroy_plan.png diff --git a/docs/slides/azure/terraform-cloud/images/rebuild_lab_environment.png b/docs/slides/azure/hcp-terraform/images/rebuild_lab_environment.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/rebuild_lab_environment.png rename to docs/slides/azure/hcp-terraform/images/rebuild_lab_environment.png diff --git a/docs/slides/azure/terraform-cloud/images/remote_execution.png b/docs/slides/azure/hcp-terraform/images/remote_execution.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/remote_execution.png rename to docs/slides/azure/hcp-terraform/images/remote_execution.png diff --git a/docs/slides/azure/terraform-cloud/images/remote_state_free.png b/docs/slides/azure/hcp-terraform/images/remote_state_free.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/remote_state_free.png rename to docs/slides/azure/hcp-terraform/images/remote_state_free.png diff --git a/docs/slides/azure/terraform-cloud/images/sandbox.png b/docs/slides/azure/hcp-terraform/images/sandbox.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/sandbox.png rename to docs/slides/azure/hcp-terraform/images/sandbox.png diff --git a/docs/slides/azure/terraform-cloud/images/secure_lock.jpg b/docs/slides/azure/hcp-terraform/images/secure_lock.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/secure_lock.jpg rename to docs/slides/azure/hcp-terraform/images/secure_lock.jpg diff --git a/docs/slides/azure/terraform-cloud/images/security_lasers.jpg b/docs/slides/azure/hcp-terraform/images/security_lasers.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/security_lasers.jpg rename to docs/slides/azure/hcp-terraform/images/security_lasers.jpg diff --git a/docs/slides/azure/terraform-cloud/images/select_default_shell.png b/docs/slides/azure/hcp-terraform/images/select_default_shell.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/select_default_shell.png rename to docs/slides/azure/hcp-terraform/images/select_default_shell.png diff --git a/docs/slides/azure/terraform-cloud/images/select_git_bash.png b/docs/slides/azure/hcp-terraform/images/select_git_bash.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/select_git_bash.png rename to docs/slides/azure/hcp-terraform/images/select_git_bash.png diff --git a/docs/slides/azure/terraform-cloud/images/select_git_bash_2.png b/docs/slides/azure/hcp-terraform/images/select_git_bash_2.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/select_git_bash_2.png rename to docs/slides/azure/hcp-terraform/images/select_git_bash_2.png diff --git a/docs/slides/azure/terraform-cloud/images/self_service.png b/docs/slides/azure/hcp-terraform/images/self_service.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/self_service.png rename to docs/slides/azure/hcp-terraform/images/self_service.png diff --git a/docs/slides/azure/terraform-cloud/images/set_prefix_gui.png b/docs/slides/azure/hcp-terraform/images/set_prefix_gui.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/set_prefix_gui.png rename to docs/slides/azure/hcp-terraform/images/set_prefix_gui.png diff --git a/docs/slides/azure/terraform-cloud/images/t2micro_instance_type.png b/docs/slides/azure/hcp-terraform/images/t2micro_instance_type.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/t2micro_instance_type.png rename to docs/slides/azure/hcp-terraform/images/t2micro_instance_type.png diff --git a/docs/slides/azure/terraform-cloud/images/team_workspace_acls.png b/docs/slides/azure/hcp-terraform/images/team_workspace_acls.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/team_workspace_acls.png rename to docs/slides/azure/hcp-terraform/images/team_workspace_acls.png diff --git a/docs/slides/azure/terraform-cloud/images/teams_emoji.png b/docs/slides/azure/hcp-terraform/images/teams_emoji.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/teams_emoji.png rename to docs/slides/azure/hcp-terraform/images/teams_emoji.png diff --git a/docs/slides/azure/terraform-cloud/images/teams_gui.png b/docs/slides/azure/hcp-terraform/images/teams_gui.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/teams_gui.png rename to docs/slides/azure/hcp-terraform/images/teams_gui.png diff --git a/docs/slides/azure/terraform-cloud/images/teams_list.png b/docs/slides/azure/hcp-terraform/images/teams_list.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/teams_list.png rename to docs/slides/azure/hcp-terraform/images/teams_list.png diff --git a/docs/slides/azure/terraform-cloud/images/teamwork.png b/docs/slides/azure/hcp-terraform/images/teamwork.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/teamwork.png rename to docs/slides/azure/hcp-terraform/images/teamwork.png diff --git a/docs/slides/azure/terraform-cloud/images/terraform_on_prem.png b/docs/slides/azure/hcp-terraform/images/terraform_on_prem.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/terraform_on_prem.png rename to docs/slides/azure/hcp-terraform/images/terraform_on_prem.png diff --git a/docs/slides/azure/terraform-cloud/images/terraform_scifi.jpg b/docs/slides/azure/hcp-terraform/images/terraform_scifi.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/terraform_scifi.jpg rename to docs/slides/azure/hcp-terraform/images/terraform_scifi.jpg diff --git a/docs/slides/azure/terraform-cloud/images/tf_az.png b/docs/slides/azure/hcp-terraform/images/tf_az.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/tf_az.png rename to docs/slides/azure/hcp-terraform/images/tf_az.png diff --git a/docs/slides/azure/terraform-cloud/images/tf_cloud_signup.png b/docs/slides/azure/hcp-terraform/images/tf_cloud_signup.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/tf_cloud_signup.png rename to docs/slides/azure/hcp-terraform/images/tf_cloud_signup.png diff --git a/docs/slides/azure/terraform-cloud/images/tf_cloud_welcome.png b/docs/slides/azure/hcp-terraform/images/tf_cloud_welcome.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/tf_cloud_welcome.png rename to docs/slides/azure/hcp-terraform/images/tf_cloud_welcome.png diff --git a/docs/slides/azure/terraform-cloud/images/tfc-gui.png b/docs/slides/azure/hcp-terraform/images/tfc-gui.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/tfc-gui.png rename to docs/slides/azure/hcp-terraform/images/tfc-gui.png diff --git a/docs/slides/azure/terraform-cloud/images/tfelogo.png b/docs/slides/azure/hcp-terraform/images/tfelogo.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/tfelogo.png rename to docs/slides/azure/hcp-terraform/images/tfelogo.png diff --git a/docs/slides/azure/terraform-cloud/images/the_huddle.jpg b/docs/slides/azure/hcp-terraform/images/the_huddle.jpg similarity index 100% rename from docs/slides/azure/terraform-cloud/images/the_huddle.jpg rename to docs/slides/azure/hcp-terraform/images/the_huddle.jpg diff --git a/docs/slides/azure/terraform-cloud/images/uat_branch.png b/docs/slides/azure/hcp-terraform/images/uat_branch.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/uat_branch.png rename to docs/slides/azure/hcp-terraform/images/uat_branch.png diff --git a/docs/slides/azure/terraform-cloud/images/variables_answer.png b/docs/slides/azure/hcp-terraform/images/variables_answer.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/variables_answer.png rename to docs/slides/azure/hcp-terraform/images/variables_answer.png diff --git a/docs/slides/azure/terraform-cloud/images/vcs_success.png b/docs/slides/azure/hcp-terraform/images/vcs_success.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/vcs_success.png rename to docs/slides/azure/hcp-terraform/images/vcs_success.png diff --git a/docs/slides/azure/terraform-cloud/images/welcome_arcade.png b/docs/slides/azure/hcp-terraform/images/welcome_arcade.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/welcome_arcade.png rename to docs/slides/azure/hcp-terraform/images/welcome_arcade.png diff --git a/docs/slides/azure/terraform-cloud/images/workspaces_gui.png b/docs/slides/azure/hcp-terraform/images/workspaces_gui.png similarity index 100% rename from docs/slides/azure/terraform-cloud/images/workspaces_gui.png rename to docs/slides/azure/hcp-terraform/images/workspaces_gui.png diff --git a/docs/slides/korean/aws/terraform-cloud/index.html b/docs/slides/azure/hcp-terraform/index.html similarity index 98% rename from docs/slides/korean/aws/terraform-cloud/index.html rename to docs/slides/azure/hcp-terraform/index.html index b4eb854c..926dca83 100644 --- a/docs/slides/korean/aws/terraform-cloud/index.html +++ b/docs/slides/azure/hcp-terraform/index.html @@ -7,7 +7,7 @@ - Terraform Cloud on AWS + HCP Terraform on Azure diff --git a/docs/slides/azure/terraform-cloud/index.md b/docs/slides/azure/hcp-terraform/index.md similarity index 77% rename from docs/slides/azure/terraform-cloud/index.md rename to docs/slides/azure/hcp-terraform/index.md index 8343f84e..62eeaf3b 100644 --- a/docs/slides/azure/terraform-cloud/index.md +++ b/docs/slides/azure/hcp-terraform/index.md @@ -1,19 +1,19 @@ -name: Intro-to-Terraform-Cloud +name: Intro-to-hcp-terraform class: center,middle,title-slide count: false

![:scale 60%](images/tf_az.png)

-# Terraform Cloud on Azure +# HCP Terraform on Azure ??? -**Welcome to the Terraform Cloud on Azure workshop. This is a one day workshop that introduces free and paid features of Terraform Cloud (also Enterprise) using an Azure-based application for the tech labs. If you're brand new to Terraform you should try the Introduction to Terraform OSS on Azure Instruqt track before this one.** +**Welcome to the HCP Terraform on Azure workshop. This is a one day workshop that introduces free and paid features of HCP Terraform (also Enterprise) using an Azure-based application for the tech labs. If you're brand new to Terraform you should try the Introduction to Terraform Community Edition on Azure Instruqt track before this one.** -**Terraform Cloud and Terraform Enterprise have almost identical feature sets so we'll be using Terraform Cloud as our training environment today.** +**HCP Terraform and Terraform Enterprise have almost identical feature sets so we'll be using HCP Terraform as our training environment today.** -INSTRUCTOR GUIDE LINK: https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_terraform_cloud_INSTRUCTOR_GUIDE.md +INSTRUCTOR GUIDE LINK: https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_hcp_terraform_INSTRUCTOR_GUIDE.md -INSTRUCTOR NOTE: Welcome to Terraform Cloud on Azure. This slide deck is written entirely in Markdown language, which means you can make edits or additions then submit a pull request to add your changes to the main branch. To make edits to the slide deck simply fork this repository, edit the Markdown file(s), and submit a pull request with your changes. You can easily test a local copy of the slide deck with this python one-liner: +INSTRUCTOR NOTE: Welcome to HCP Terraform on Azure. This slide deck is written entirely in Markdown language, which means you can make edits or additions then submit a pull request to add your changes to the main branch. To make edits to the slide deck simply fork this repository, edit the Markdown file(s), and submit a pull request with your changes. You can easily test a local copy of the slide deck with this python one-liner: ``` python -m SimpleHTTPServer @@ -58,7 +58,7 @@ If your audience is less than 25 people you can quickly go through the room and Now introduce yourself, tell a story, give the audience something to think about. If you don't have a story borrow someone else's: https://www.youtube.com/watch?v=h970ZBgKINg --- -name: tfc-link-to-slide-deck +name: hcp-terraform-link-to-slide-deck # The Slide Deck


.center[ @@ -76,8 +76,8 @@ class: col-2 # Table of Contents
-1. OSS to Cloud/Enterprise
-🌥️ Terraform Cloud Overview
+1. Community Edition to HCP/Enterprise
+🌥️ HCP Terraform Overview
👨🏽‍🏫 Review the Basics
🔗 Configure Remote State

@@ -91,7 +91,7 @@ class: col-2 👮 Sentinel Policy Enforcement

4. Terraform Modules & API
-⚙️ Private Module Registry
+⚙️ Terraform Private Registry
🏗️ API Driven Workflows

5. Extra Resources
@@ -109,10 +109,10 @@ name: TFE-Chapter-1 class: title # Chapter 1 -## Terraform OSS, Cloud and Enterprise +## Terraform Community Edition, HCP Terraform, and Terraform Enterprise ??? -**In the first chapter we'll cover Terraform open source and some of the differences between OSS and Cloud and Enterprise.** +**In the first chapter we'll cover Terraform Community Edition and some of the differences between Community Edition, HCP Terraform, and Terraform Enterprise.** --- name: terraform-user-journey @@ -156,7 +156,7 @@ name: multi-platform-compliance Terraform also integrates with on premise VMs or platform services. ??? -**Terraform Cloud and Enterprise can be used to build VMs in your data center, or Azure instances in the cloud, or both. You won't have to maintain two sets of tools to build on your hybrid cloud platforms.** +**HCP Terraform and Enterprise can be used to build VMs in your data center, or Azure instances in the cloud, or both. You won't have to maintain two sets of tools to build on your hybrid cloud platforms.** --- name: self-service-infra @@ -169,11 +169,11 @@ name: self-service-infra Enable users to build what they need without running up a huge bill or putting your organization at risk. ??? -**Terraform Cloud encourages safe provisioning via reusable modules and policy enforcement. Now users can build exactly what they need to do their jobs without breaking things or putting your organization at risk. A slow and cumbersome approval process is no longer required because the automation enforces best practices without manual code reviews.** +**HCP Terraform encourages safe provisioning via reusable modules and policy enforcement. Now users can build exactly what they need to do their jobs without breaking things or putting your organization at risk. A slow and cumbersome approval process is no longer required because the automation enforces best practices without manual code reviews.** --- -name: terraform-cloud-what-is-it -# Terraform Cloud - The Big Picture +name: hcp-terraform-what-is-it +# HCP Terraform - The Big Picture .center[ ![:scale 90%](images/cloud_overview_azure.png) @@ -182,34 +182,34 @@ name: terraform-cloud-what-is-it ??? **This slide shows the end state of our workshop. Over on the left our infrastructure folks have created some reusable modules that the rest of our users can implement in their own terraform code. These modules ensure that infrastructure components like networks and VMs get built correctly every time, and they also make it easy for the user to build the "right stuff" on their own.** -**In the next stage our user is writing terraform code and checking it into a Version Control System. This ensures that each and every change meant for production is recorded and reviewed. This is so important. It requires discipline and cooperation from all of your devops and infrastructure admins. When new code is committed to the master branch it triggers a plan in Terraform Cloud (or Enterprise)** +**In the next stage our user is writing terraform code and checking it into a Version Control System. This ensures that each and every change meant for production is recorded and reviewed. This is so important. It requires discipline and cooperation from all of your devops and infrastructure admins. When new code is committed to the master branch it triggers a plan in HCP Terraform (or Terraform Enterprise)** -**Think of Terraform Cloud as a remote execution and state management platform for Terraform. Now you're not running terraform on your laptop like it's the wild west of cloud provisioning; instead all terraform runs happen in secure docker containers that run on our SaaS platform, or in your own data center. This allows you to encrypt and secure all your API keys, variables, and terraform state files. Access is granted only to authorized users.** +**Think of HCP Terraform as a remote execution and state management platform for Terraform. Now you're not running terraform on your laptop like it's the wild west of cloud provisioning; instead all terraform runs happen in secure docker containers that run on our SaaS platform, or in your own data center. This allows you to encrypt and secure all your API keys, variables, and terraform state files. Access is granted only to authorized users.** **All your terraform state files are safely stored and encrypted on the server side. Any time you need to make a change to any of your infrastructure, Terraform knows the last state it was in and can build incrementally based on what has changed. Need to add more instances to a cluster? No problem, terraform can do that for you without a complete tear-down and rebuild.** **Before every terraform apply, you can run Sentinel policy checks against the proposed infrastructure plan to catch any policy violations. For example you might not want the devs creating super XL instances that cost a lot of money to run. You can write a simple rule that restricts developer workspaces to only using m3.medium sized instances, unless they get special permission for more.** -**Role-based access controls allow different types of users to interact with Terraform cloud according to their level of access. You might have super admins who can control everything in the organization, then regular users who can run terraform but only in dev environments. Another group might be able to push changes to production, while some users may have read-only access. Terraform Cloud/Enterprise is a true multi-tenant application.** +**Role-based access controls allow different types of users to interact with HCP Terraform according to their level of access. You might have super admins who can control everything in the organization, then regular users who can run terraform but only in dev environments. Another group might be able to push changes to production, while some users may have read-only access. HCP Terraform/Terraform Enterprise is a true multi-tenant application.** --- -name: why-tfc-1 +name: why-hcp-terraform-1 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: ??? -**Let's go through a quick bullet list of Terraform Cloud features and why they matter.** +**Let's go through a quick bullet list of HCP Terraform features and why they matter.** --- -name: why-tfc-2 +name: why-hcp-terraform-2 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS @@ -217,12 +217,12 @@ Terraform Cloud/Enterprise is an application that provides the following feature **As your organization begins to standardize on Terraform, you'll have different types of users. Most of you will become terraform experts, but there may be others who just want to build things. They can use the terraform code that folks like you have written. To make this process easy, we have a web application. You log on, click a button, and out pops your infrastructure.** --- -name: why-tfc-3 +name: why-hcp-terraform-3 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows @@ -233,83 +233,83 @@ Terraform Cloud/Enterprise is an application that provides the following feature **APIs are the building blocks of any modern cloud automation system. By using standard, well defined APIs you ensure that your infrastructure pipelines will be ready to adapt to any future changes.** --- -name: why-tfc-4 +name: why-hcp-terraform-4 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management ??? -**Terraform enterprise also provides safe and secure storage for your state files. Instead of having that important state file stored on someone's laptop, now it is safely stored in the Terraform Cloud application. Only those who need access to the state file can see it, and it is protected from being overwritten or corrupted.** +**Terraform enterprise also provides safe and secure storage for your state files. Instead of having that important state file stored on someone's laptop, now it is safely stored in the HCP Terraform application. Only those who need access to the state file can see it, and it is protected from being overwritten or corrupted.** --- -name: why-tfc-5 +name: why-hcp-terraform-5 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry ??? -**Eventually you'll have a library of Terraform code that you might like to share and publish for other users and teams in your company. The private module registry makes this easy. You build reusable modules that build infrastructure according to standards, and then publish them for your users. This can help with enforcing security policies and build standards.** +**Eventually you'll have a library of Terraform code that you might like to share and publish for other users and teams in your company. The Terraform Private Registry makes this easy. You build reusable modules that build infrastructure according to standards, and then publish them for your users. This can help with enforcing security policies and build standards.** --- -name: why-tfc-6 +name: why-hcp-terraform-6 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement ??? **TFE also comes with a policy enforcement engine that can ensure that your users don't build things they shouldn't build, or configure them in the wrong way. For example, you might wish to prevent users from opening network ports to the internet, or from building too many virtual machines. All of these types of rules can be expressed using our Sentinel policy enforcement engine. Sentinel policies prevent users from doing bad things, *before* they provision to the cloud.** --- -name: why-tfc-7 +name: why-hcp-terraform-7 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement * Single Sign-On ??? -**Terraform Cloud for Business, as well as Terraform Enterprise, also supports single sign-on using your own SAML provider. This allows you to quickly map users into your organization's teams and workspaces so they can become productive right away. We won't be covering SAML or single sign-on in today's workshop.** +**HCP Terraform Plus Tier, as well as Terraform Enterprise, also supports single sign-on using your own SAML provider. This allows you to quickly map users into your organization's teams and workspaces so they can become productive right away. We won't be covering SAML or single sign-on in today's workshop.** --- -name: why-tfc-8 +name: why-hcp-terraform-8 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement * Single Sign-On * Secure API credentials @@ -318,33 +318,33 @@ Terraform Cloud/Enterprise is an application that provides the following feature **Terraform Enterprise can store and encrypt your cloud credentials, passwords or any other sensitive data. These credentials are stored safely inside of a Vault instance that runs inside of TFE.** --- -name: terraform-cloud-enterprise +name: hcp-terraform-enterprise class: compact -# Terraform Cloud or Terraform Enterprise? -**[Terraform Cloud](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. +# HCP Terraform or Terraform Enterprise? +**[HCP Terraform](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. -**[Terraform Cloud for Business](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as Terraform Cloud, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, and the ability to Terraform on-prem resources from the cloud. +**[HCP Terraform Plus Tier](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as HCP Terraform, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, and the ability to Terraform on-prem resources from the cloud. -**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the Terraform Cloud application, or wish to run it in restricted networks behind corporate firewalls. +**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the HCP Terraform application, or wish to run it in restricted networks behind corporate firewalls. -The feature list for these offerings is nearly identical. We will be using Terraform Cloud accounts for our lab exercises today. +The feature list for these offerings is nearly identical. We will be using HCP Terraform accounts for our lab exercises today. ??? -**Just like the adoption story from OSS to Enterprise, Terraform offers the ability to build upon the ingelligence that grows within the team. Terraform Cloud itself is really good for individuals, or small business that need to put some level of automation behind their infrastructure. They usually move to the Business Tier when the number of users gets unwieldy, or when they need to deploy on-prem. Enterprise is really the move if you want full control over your destiny, or if you have some severe security requirements (governments, government contractors, etc.). The way I usually look at this, if you are using an on-prem VCS, chances are you'll need Enterprise. If your pipeline or VCS is hosted, you're probably good with Terraform Cloud for Business.** +**Just like the adoption story from Community Edition to Enterprise, Terraform offers the ability to build upon the ingelligence that grows within the team. HCP Terraform itself is really good for individuals, or small business that need to put some level of automation behind their infrastructure. They usually move to the Plus Tier when the number of users gets unwieldy, or when they need to deploy on-prem. Enterprise is really the move if you want full control over your destiny, or if you have some severe security requirements (governments, government contractors, etc.). The way I usually look at this, if you are using an on-prem VCS, chances are you'll need Enterprise. If your pipeline or VCS is hosted, you're probably good with HCP Terraform Plus Tier.** -Be well versed on the feature list and differences between Terraform Cloud levels (including the Business Tier) and Terraform Enterprise. In particular, remember that if you are running more concurrent builds, or if you need SSO, or on-prem, you are in the Cloud for Business or Enterprise tier automatically. +Be well versed on the feature list and differences between HCP Terraform levels (including the Plus Tier) and Terraform Enterprise. In particular, remember that if you are running more concurrent builds, or if you need SSO, or on-prem, you are in the Cloud Plus Tier or Terraform Enterprise tier automatically. --- name: live-demo class: title, smokescreen, shelf background-image: url(images/live_demo.jpg) # Live Demo -## Terraform Cloud in Action +## HCP Terraform in Action ??? INSTRUCTOR NOTE: You can use the same instruqt track that the students will be using to do this demo. Make sure you've gone through the entire track yourself and have your own organization, fork of the hashicat-azure repo, and sentinel policy in place. Once you have done these steps it's easy to create a new demo: -1. Start your own copy of the Terraform Cloud on Azure track +1. Start your own copy of the HCP Terraform on Azure track 2. Echo out your Azure credentials and set them as environment variables in TFC: ``` echo $Azure_ACCESS_KEY_ID @@ -354,15 +354,15 @@ echo $Azure_SECRET_ACCESS_KEY 4. Make sure you remove the VPC file (vpc.tf) from your hashicat-azure repo. This will make the demo take longer and may break if the regions aren't set up right. 5. Begin your demo dialog: -**This is a brief demo showing off some of the features of Terraform cloud. You'll get to work with all these features during the hands-on labs today.** +**This is a brief demo showing off some of the features of HCP Terraform. You'll get to work with all these features during the hands-on labs today.** **Pretend I'm a brand new developer and I want to spin up a copy of my company's web application that I can use for testing. I have my own fork of the code here on github. This is the hashicat-azure application. Like the name implies, it provides kittens as a service. You give it a placeholder URL, a height, and a width, and you get a cat. Neat huh?** -**Let's hop over to Terraform Cloud and take a look at my workspace. Here you can see the most recent terraform runs and their status, along with the exact git commit hash that led to each run being triggered. All changes are recorded, and only code that passes our sentinel policies is allowed to run.** +**Let's hop over to HCP Terraform and take a look at my workspace. Here you can see the most recent terraform runs and their status, along with the exact git commit hash that led to each run being triggered. All changes are recorded, and only code that passes our sentinel policies is allowed to run.** **Before I build anything I might want to configure some variables to adjust my infrastructure settings. Here you can see some terraform variables, prefix and region. These will determine the names of my resources and the region they will be deployed in.** -**Down bottom you see the Environment Variables. These are system shell variables that are injected into the terraform cloud container at runtime. You can optionally encrypt sensitive environment variables such as these Azure keys. Note that these are write-only. Once you encrypt a variable by marking it sensitive, you won't see it here in plaintext again. These are dynamic Azure credentials that are good for only a few hours. You can paste them in manually or use the API to auto-populate them from HashiCorp Vault.** +**Down bottom you see the Environment Variables. These are system shell variables that are injected into the HCP Terraform container at runtime. You can optionally encrypt sensitive environment variables such as these Azure keys. Note that these are write-only. Once you encrypt a variable by marking it sensitive, you won't see it here in plaintext again. These are dynamic Azure credentials that are good for only a few hours. You can paste them in manually or use the API to auto-populate them from HashiCorp Vault.** **New and advanced users can utilize the GUI to trigger infrastructure builds. Let's do that now by clicking on this Queue Plan button. I'm going to put "new dev environment" down as the reason for the build. Now notice that a new terraform plan has kicked off. This is the dry run. terraform is figuring out if any of the infrastructure already exists from a previous run, and then it will build or change everything to match what's in the code. That is, unless we fail a sentinel policy...** @@ -380,7 +380,7 @@ INSTRUCTOR NOTE: Have your code commented and ready to go like this. That way yo } ``` -**Now if I pop back over to Terraform Cloud you can see that a new run has triggered based on the change I just made. Terraform Cloud watches that master branch for any changes and automatically picks them up. I still have a chance to review the run in the UI here. You can see that my policy check is now passing, which will make the finance people happy, and I can continue building my dev environment.** +**Now if I pop back over to HCP Terraform you can see that a new run has triggered based on the change I just made. HCP Terraform watches that master branch for any changes and automatically picks them up. I still have a chance to review the run in the UI here. You can see that my policy check is now passing, which will make the finance people happy, and I can continue building my dev environment.** **I'll click Confirm & Apply and we'll start building.** @@ -405,10 +405,10 @@ name: review-the-basics class: title, smokescreen, shelf background-image: url(images/terraform_scifi.jpg) # Review the Basics -## A Terraform OSS Refresher +## A Terraform Community Edition Refresher ??? -**This section is a quick review of terraform open source usage.** +**This section is a quick review of terraform Community Edition usage.** --- name: review-basic-terraform-commands @@ -429,7 +429,7 @@ terraform graph # Create a DOT-formatted graph Need a refresher? Try the [Intro to Terraform on Azure](https://instruqt.com/hashicorp/tracks/terraform-intro-azure) lab exercises. ??? -Depending on the maturity of your audience you might take a detour back to the Intro to Terraform track. Ideally everyone in the workshop has already completed this or has equivalent experience with Terraform OSS. +Depending on the maturity of your audience you might take a detour back to the Intro to Terraform track. Ideally everyone in the workshop has already completed this or has equivalent experience with Terraform Community Edition. --- name: what-is-a-workspace @@ -443,7 +443,7 @@ name: what-is-a-workspace ??? -**A Terraform workspace is a managed unit of infrastructure. On your laptop or local workstation, the terraform workspace is simply a directory full of terraform code and variables. This code is also ideally stored in a git repository. In the cloud the workspace takes on some extra roles. In Terraform Cloud and Enterprise your workspace is still where you execute terraform runs but there are extra features like access controls, secure variables and policy management. Terraform is only run from secure docker containers that you control. (There is one exception to this and that is when you run terraform locally, but only store the state in Terraform Cloud). Your local workspace, or copy of a git repo, generally maps 1:1 with your terraform workspace.** +**A Terraform workspace is a managed unit of infrastructure. On your laptop or local workstation, the terraform workspace is simply a directory full of terraform code and variables. This code is also ideally stored in a git repository. In the cloud the workspace takes on some extra roles. In HCP Terraform and Enterprise your workspace is still where you execute terraform runs but there are extra features like access controls, secure variables and policy management. Terraform is only run from secure docker containers that you control. (There is one exception to this and that is when you run terraform locally, but only store the state in HCP Terraform). Your local workspace, or copy of a git repo, generally maps 1:1 with your terraform workspace.** **What should I put in a workspace? We recommend infrastructure that should be managed together as a unit be placed into the same workspace. Who has to manage it, how often does it change, does it have external dependencies that we can't control. Ask these questions. Think about what happens when you run `terraform apply`. You should be able to describe what you just built, and what outputs it provides, who this infrastructure is for, and how to utilize it.** @@ -525,19 +525,19 @@ The local state file has some disadvantages: * No centralized record keeping ??? -**Let's not be the dog at my homework kid. There's no excuse for losing your state file because you can easily store it for free in your Terraform Cloud account.** +**Let's not be the dog at my homework kid. There's no excuse for losing your state file because you can easily store it for free in your HCP Terraform account.** --- -name: tfcloud-remote-state -# Terraform Cloud Remote State -Terraform Cloud Remote State is free and available to all users. The requirements to get it set up and working are below. +name: hcp-terraform-remote-state +# HCP Terraform Remote State +HCP Terraform Remote State is free and available to all users. The requirements to get it set up and working are below. -* Free or paid Terraform Cloud account +* Free or paid HCP Terraform account * A **`.terraformrc`** (Unix/Linux) or **`terraform.rc`** (Windows) config file * User access token stored in your config file * Remote backend config file. We name it **`remote_backend.tf`** for consistency. -**WARNING** - do not copy your Terraform Cloud API token to github! +**WARNING** - do not copy your HCP Terraform API token to github! https://www.terraform.io/docs/backends/types/remote.html @@ -563,7 +563,7 @@ name: lab-exercise-0 name: lab-exercise-1 # 👩‍💻 Lab Exercise: Configure Remote State

-In this lab you'll set up a free Terraform Cloud account and configure your account for remote execution of Terraform commands. +In this lab you'll set up a free HCP Terraform account and configure your account for remote execution of Terraform commands. Your instructor will provide the URL for the first lab environment. @@ -620,7 +620,7 @@ class: img-right-full * Any sensitive text or data ??? -**Terraform Cloud has built in support for encryption and storage of any short string of text. This allows you to safely use these credentials during the provisioning process without exposing them in plaintext or storing them on someone's laptop.** +**HCP Terraform has built in support for encryption and storage of any short string of text. This allows you to safely use these credentials during the provisioning process without exposing them in plaintext or storing them on someone's laptop.** --- name: where-are-your-creds @@ -638,7 +638,7 @@ Config files and environment variables are a better option, but the credentials name: a-better-way-creds # A Better Way to Store Sensitive Data -Terraform Cloud can safely store your credentials and encrypt them for you. You can use this encrypted storage for passwords, TLS Certificates, SSH keys or anything else that should not be lying around in plain text. +HCP Terraform can safely store your credentials and encrypt them for you. You can use this encrypted storage for passwords, TLS Certificates, SSH keys or anything else that should not be lying around in plain text. .center[![:scale 90%](images/azure_encrypted_vars.png)] @@ -649,7 +649,7 @@ Terraform Cloud can safely store your credentials and encrypt them for you. You name: terraform-teams class: title, smokescreen, shelf background-image: url(images/teamwork.png) -# Terraform Cloud Teams +# HCP Terraform Teams ## Role-Based Access Controls (RBAC) ??? @@ -714,19 +714,19 @@ class: img-right Version control systems are applications that allow users to store, track, test, and collaborate on changes to their infrastructure and applications. -Terraform Cloud integrates with most common Version Control Systems. +HCP Terraform integrates with most common Version Control Systems. ??? -**Make sure you don't confuse git (the version control system) with GitHub (a web-based application containing the world's largest collection of git repositories). What are some other flavors of git? Bitbucket, GitLab are both also supported in Terraform Cloud. Today you'll be working with GitHub but you can integrate with any of the major git vendor software.** +**Make sure you don't confuse git (the version control system) with GitHub (a web-based application containing the world's largest collection of git repositories). What are some other flavors of git? Bitbucket, GitLab are both also supported in HCP Terraform. Today you'll be working with GitHub but you can integrate with any of the major git vendor software.** --- -name: tfc-infra-as-code-workflow +name: hcp-terraform-infra-as-code-workflow class: img-left -# VCS Integration with Terraform Cloud +# VCS Integration with HCP Terraform ![:scale 70%](images/git_noobs.png) -Terraform Cloud can directly integrate with source code repos in GitHub Enterprise, Gitlab, and Bitbucket. This allows you to build simple DevOps workflows with code reviews, testing and approvals. +HCP Terraform can directly integrate with source code repos in GitHub Enterprise, Gitlab, and Bitbucket. This allows you to build simple DevOps workflows with code reviews, testing and approvals. https://xkcd.com/1597/ @@ -749,7 +749,7 @@ Each team can contribute or consume Terraform code according to their needs. .small[http://www.commitstrip.com/en/2015/02/02/is-your-company-ready-for-devops/] ??? -**When you store all your terraform code in git repos, you unlock some extra features like user collaboration. This is a funny comic called CommitStrip where dev and ops try to learn to work together. Terraform Cloud helps bring these teams closer in a more productive way.** +**When you store all your terraform code in git repos, you unlock some extra features like user collaboration. This is a funny comic called CommitStrip where dev and ops try to learn to work together. HCP Terraform helps bring these teams closer in a more productive way.** --- name: vcs-driven-workflow @@ -779,7 +779,7 @@ background-image: url(images/security_lasers.jpg) ## Policy Enforcement for Terraform ??? -**Sentinel is the HashiCorp policy enforcement language and it is only available in terraform cloud or enterprise.** +**Sentinel is the HashiCorp policy enforcement language and it is only available in HCP Terraform or Terraform Enterprise.** --- name: what-is-sentinel @@ -851,7 +851,7 @@ class: title ## Modules and API Automation ??? -**This is the final content chapter where we'll cover the private module registry and API automation.** +**This is the final content chapter where we'll cover the Terraform Private Registry and API automation.** --- name: private-module-registry @@ -894,12 +894,12 @@ What if you had to manage dozens or hundreds of modules, with different versions --- name: private-module-registry class: img-right -# Private Module Registry +# Terraform Private Registry ![](images/azure_pmr.png) Terraform modules are reusable packages of Terraform code that you can use to build your infrastructure. -Terraform Cloud includes a Private Module Registry where you can store, version, and distribute modules to your organizations and teams. +HCP Terraform includes a Terraform Private Registry where you can store, version, and distribute modules to your organizations and teams. ??? **This is just like the public module registry but it runs inside your own Terraform Organization where only your users can access it. This way you can share private or confidential code, or even take the public modules and fork them for your own use.** @@ -908,11 +908,11 @@ Terraform Cloud includes a Private Module Registry where you can store, version, name: api-driven-workflows class: title, smokescreen, shelf background-image: url(images/enter_the_matrix.jpg) -# Terraform Cloud API +# HCP Terraform API ## Automate Everything ??? -**This section will give us a small sample of what's possible using the Terraform Cloud API to build automation. APIs provide a clear and well understood method for interacting with Terraform Cloud, even from systems that have no native Terraform support or integrations.** +**This section will give us a small sample of what's possible using the HCP Terraform API to build automation. APIs provide a clear and well understood method for interacting with HCP Terraform, even from systems that have no native Terraform support or integrations.** --- name: whats-an-api @@ -934,8 +934,8 @@ APIs are the default language of the Internet. According to Akamai research 83% **There are APIs for all kinds of stuff! Even Dad Jokes!** --- -name: terraform-cloud-api -# Terraform Cloud API - How It Works +name: hcp-terraform-api +# HCP Terraform API - How It Works ```bash # Create a workspace using the API curl --header "Authorization: Bearer $TOKEN" --header \ @@ -955,7 +955,7 @@ Most programming languages have helper libraries for working with APIs. --- name: api-use-cases -# Terraform Cloud API - Use Cases +# HCP Terraform API - Use Cases * Continuous Integration test pipelines * Connect with workflow management systems @@ -964,13 +964,13 @@ name: api-use-cases * Custom command line scripts for specific needs ??? -**Here are just a few of the things you might build with the Terraform Cloud API.** +**Here are just a few of the things you might build with the HCP Terraform API.** --- name: lab-exercise-4 # 👩‍💻 Lab Exercise: Modules and API Automation

-In this lab we'll cover the Private Module Registry and API Automation with Terraform Cloud. +In this lab we'll cover the Terraform Private Registry and API Automation with HCP Terraform. Continue the lab exercises from where you left off. @@ -995,19 +995,19 @@ name: bonus-lab If you have completed all the workshop content and would like to try the bonus lab, your instructor can provide you with an invite. ??? -This bonus lab can be used with any of the three Terraform Cloud workshops. Create an invite if you'd like to share it with your students. +This bonus lab can be used with any of the three HCP Terraform workshops. Create an invite if you'd like to share it with your students. https://instruqt.com/hashicorp/tracks/terraform-cloud-bonus-lab --- name: additional-resources-tfe # Additional Resources -If you'd like to learn more about Terraform Enterprise or Terraform Cloud visit the links below: +If you'd like to learn more about Terraform Enterprise or HCP Terraform visit the links below: Terraform Enterprise Product Page https://www.hashicorp.com/products/terraform/ -Why Consider Terraform Enterprise Over Open Source? +Why Consider Terraform Enterprise Over Community Edition? https://www.hashicorp.com/resources/why-consider-terraform-enterprise-over-open-source Terraform Azure Provider Documentation diff --git a/docs/slides/azure/index.md b/docs/slides/azure/index.md index e1d319a4..3b91655a 100644 --- a/docs/slides/azure/index.md +++ b/docs/slides/azure/index.md @@ -26,7 +26,7 @@ name: terraform-workshops-slides # Terraform Azure Workshop Slides ### This directory contains slides for Terraform workshops intended for use with Azure. ### Workshops for each cloud are organized by type: - 1. Terraform OSS + 1. Terraform Community Edition 1. Terraform Enterprise ??? diff --git a/docs/slides/azure/terraform-oss/README.md b/docs/slides/azure/terraform-community/README.md similarity index 100% rename from docs/slides/azure/terraform-oss/README.md rename to docs/slides/azure/terraform-community/README.md diff --git a/docs/slides/azure/terraform-oss/images/8bitpipe.png b/docs/slides/azure/terraform-community/images/8bitpipe.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/8bitpipe.png rename to docs/slides/azure/terraform-community/images/8bitpipe.png diff --git a/docs/slides/azure/terraform-oss/images/Config_Hell.jpg b/docs/slides/azure/terraform-community/images/Config_Hell.jpg similarity index 100% rename from docs/slides/azure/terraform-oss/images/Config_Hell.jpg rename to docs/slides/azure/terraform-community/images/Config_Hell.jpg diff --git a/docs/slides/azure/terraform-oss/images/TFE_GUI.png b/docs/slides/azure/terraform-community/images/TFE_GUI.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/TFE_GUI.png rename to docs/slides/azure/terraform-community/images/TFE_GUI.png diff --git a/docs/slides/azure/terraform-oss/images/Terraform_VerticalLogo_FullColor.png b/docs/slides/azure/terraform-community/images/Terraform_VerticalLogo_FullColor.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/Terraform_VerticalLogo_FullColor.png rename to docs/slides/azure/terraform-community/images/Terraform_VerticalLogo_FullColor.png diff --git a/docs/slides/azure/terraform-oss/images/add_a_module.png b/docs/slides/azure/terraform-community/images/add_a_module.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/add_a_module.png rename to docs/slides/azure/terraform-community/images/add_a_module.png diff --git a/docs/slides/azure/terraform-oss/images/add_policy_to_policy_set.png b/docs/slides/azure/terraform-community/images/add_policy_to_policy_set.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/add_policy_to_policy_set.png rename to docs/slides/azure/terraform-community/images/add_policy_to_policy_set.png diff --git a/docs/slides/azure/terraform-oss/images/az_login.png b/docs/slides/azure/terraform-community/images/az_login.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/az_login.png rename to docs/slides/azure/terraform-community/images/az_login.png diff --git a/docs/slides/azure/terraform-oss/images/azure-loves-terraform.png b/docs/slides/azure/terraform-community/images/azure-loves-terraform.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/azure-loves-terraform.png rename to docs/slides/azure/terraform-community/images/azure-loves-terraform.png diff --git a/docs/slides/azure/terraform-oss/images/azure_provision.png b/docs/slides/azure/terraform-community/images/azure_provision.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/azure_provision.png rename to docs/slides/azure/terraform-community/images/azure_provision.png diff --git a/docs/slides/azure/terraform-oss/images/azure_provision_2.png b/docs/slides/azure/terraform-community/images/azure_provision_2.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/azure_provision_2.png rename to docs/slides/azure/terraform-community/images/azure_provision_2.png diff --git a/docs/slides/azure/terraform-oss/images/azure_provision_3.png b/docs/slides/azure/terraform-community/images/azure_provision_3.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/azure_provision_3.png rename to docs/slides/azure/terraform-community/images/azure_provision_3.png diff --git a/docs/slides/azure/terraform-oss/images/azure_tf_code.png b/docs/slides/azure/terraform-community/images/azure_tf_code.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/azure_tf_code.png rename to docs/slides/azure/terraform-community/images/azure_tf_code.png diff --git a/docs/slides/azure/terraform-oss/images/blast_radius_graph_1.png b/docs/slides/azure/terraform-community/images/blast_radius_graph_1.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/blast_radius_graph_1.png rename to docs/slides/azure/terraform-community/images/blast_radius_graph_1.png diff --git a/docs/slides/azure/terraform-oss/images/blast_radius_graph_2.png b/docs/slides/azure/terraform-community/images/blast_radius_graph_2.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/blast_radius_graph_2.png rename to docs/slides/azure/terraform-community/images/blast_radius_graph_2.png diff --git a/docs/slides/azure/terraform-oss/images/blast_radius_graph_3.png b/docs/slides/azure/terraform-community/images/blast_radius_graph_3.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/blast_radius_graph_3.png rename to docs/slides/azure/terraform-community/images/blast_radius_graph_3.png diff --git a/docs/slides/azure/terraform-oss/images/change_default_shell.png b/docs/slides/azure/terraform-community/images/change_default_shell.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/change_default_shell.png rename to docs/slides/azure/terraform-community/images/change_default_shell.png diff --git a/docs/slides/azure/terraform-oss/images/change_to_local.png b/docs/slides/azure/terraform-community/images/change_to_local.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/change_to_local.png rename to docs/slides/azure/terraform-community/images/change_to_local.png diff --git a/docs/slides/azure/terraform-oss/images/choose_org.png b/docs/slides/azure/terraform-community/images/choose_org.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/choose_org.png rename to docs/slides/azure/terraform-community/images/choose_org.png diff --git a/docs/slides/azure/terraform-oss/images/choose_training_org.png b/docs/slides/azure/terraform-community/images/choose_training_org.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/choose_training_org.png rename to docs/slides/azure/terraform-community/images/choose_training_org.png diff --git a/docs/slides/azure/terraform-oss/images/clouds.png b/docs/slides/azure/terraform-community/images/clouds.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/clouds.png rename to docs/slides/azure/terraform-community/images/clouds.png diff --git a/docs/slides/azure/terraform-oss/images/command_palette.png b/docs/slides/azure/terraform-community/images/command_palette.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/command_palette.png rename to docs/slides/azure/terraform-community/images/command_palette.png diff --git a/docs/slides/azure/terraform-oss/images/command_shift_p.png b/docs/slides/azure/terraform-community/images/command_shift_p.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/command_shift_p.png rename to docs/slides/azure/terraform-community/images/command_shift_p.png diff --git a/docs/slides/azure/terraform-oss/images/confirm_destroy.png b/docs/slides/azure/terraform-community/images/confirm_destroy.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/confirm_destroy.png rename to docs/slides/azure/terraform-community/images/confirm_destroy.png diff --git a/docs/slides/azure/terraform-oss/images/cpa.jpg b/docs/slides/azure/terraform-community/images/cpa.jpg similarity index 100% rename from docs/slides/azure/terraform-oss/images/cpa.jpg rename to docs/slides/azure/terraform-community/images/cpa.jpg diff --git a/docs/slides/azure/terraform-oss/images/create_a_new_policy.png b/docs/slides/azure/terraform-community/images/create_a_new_policy.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/create_a_new_policy.png rename to docs/slides/azure/terraform-community/images/create_a_new_policy.png diff --git a/docs/slides/azure/terraform-oss/images/create_a_new_policy_set_gui.png b/docs/slides/azure/terraform-community/images/create_a_new_policy_set_gui.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/create_a_new_policy_set_gui.png rename to docs/slides/azure/terraform-community/images/create_a_new_policy_set_gui.png diff --git a/docs/slides/azure/terraform-oss/images/create_policy_button.png b/docs/slides/azure/terraform-community/images/create_policy_button.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/create_policy_button.png rename to docs/slides/azure/terraform-community/images/create_policy_button.png diff --git a/docs/slides/azure/terraform-oss/images/create_repo_workspace.png b/docs/slides/azure/terraform-community/images/create_repo_workspace.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/create_repo_workspace.png rename to docs/slides/azure/terraform-community/images/create_repo_workspace.png diff --git a/docs/slides/azure/terraform-oss/images/create_workspace_gui.png b/docs/slides/azure/terraform-community/images/create_workspace_gui.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/create_workspace_gui.png rename to docs/slides/azure/terraform-community/images/create_workspace_gui.png diff --git a/docs/slides/azure/terraform-oss/images/destroy_gui.png b/docs/slides/azure/terraform-community/images/destroy_gui.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/destroy_gui.png rename to docs/slides/azure/terraform-community/images/destroy_gui.png diff --git a/docs/slides/azure/terraform-oss/images/edit_this_file_github.png b/docs/slides/azure/terraform-community/images/edit_this_file_github.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/edit_this_file_github.png rename to docs/slides/azure/terraform-community/images/edit_this_file_github.png diff --git a/docs/slides/azure/terraform-oss/images/enable_auto_apply.png b/docs/slides/azure/terraform-community/images/enable_auto_apply.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/enable_auto_apply.png rename to docs/slides/azure/terraform-community/images/enable_auto_apply.png diff --git a/docs/slides/azure/terraform-oss/images/encrypted_vars.png b/docs/slides/azure/terraform-community/images/encrypted_vars.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/encrypted_vars.png rename to docs/slides/azure/terraform-community/images/encrypted_vars.png diff --git a/docs/slides/azure/terraform-oss/images/fork.png b/docs/slides/azure/terraform-community/images/fork.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/fork.png rename to docs/slides/azure/terraform-community/images/fork.png diff --git a/docs/slides/azure/terraform-oss/images/get-started-tfe.png b/docs/slides/azure/terraform-community/images/get-started-tfe.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/get-started-tfe.png rename to docs/slides/azure/terraform-community/images/get-started-tfe.png diff --git a/docs/slides/azure/terraform-oss/images/git_commit_gui.png b/docs/slides/azure/terraform-community/images/git_commit_gui.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/git_commit_gui.png rename to docs/slides/azure/terraform-community/images/git_commit_gui.png diff --git a/docs/slides/azure/terraform-oss/images/git_commit_push.png b/docs/slides/azure/terraform-community/images/git_commit_push.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/git_commit_push.png rename to docs/slides/azure/terraform-community/images/git_commit_push.png diff --git a/docs/slides/azure/terraform-oss/images/git_triggered_run.png b/docs/slides/azure/terraform-community/images/git_triggered_run.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/git_triggered_run.png rename to docs/slides/azure/terraform-community/images/git_triggered_run.png diff --git a/docs/slides/azure/terraform-oss/images/git_workflow_tests.png b/docs/slides/azure/terraform-community/images/git_workflow_tests.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/git_workflow_tests.png rename to docs/slides/azure/terraform-community/images/git_workflow_tests.png diff --git a/docs/slides/azure/terraform-oss/images/hashilogo.png b/docs/slides/azure/terraform-community/images/hashilogo.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/hashilogo.png rename to docs/slides/azure/terraform-community/images/hashilogo.png diff --git a/docs/slides/azure/terraform-oss/images/hashimoo.png b/docs/slides/azure/terraform-community/images/hashimoo.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/hashimoo.png rename to docs/slides/azure/terraform-community/images/hashimoo.png diff --git a/docs/slides/azure/terraform-oss/images/infra_as_code.png b/docs/slides/azure/terraform-community/images/infra_as_code.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/infra_as_code.png rename to docs/slides/azure/terraform-community/images/infra_as_code.png diff --git a/docs/slides/azure/terraform-oss/images/infra_as_code_2.png b/docs/slides/azure/terraform-community/images/infra_as_code_2.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/infra_as_code_2.png rename to docs/slides/azure/terraform-community/images/infra_as_code_2.png diff --git a/docs/slides/azure/terraform-oss/images/infra_tools.png b/docs/slides/azure/terraform-community/images/infra_tools.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/infra_tools.png rename to docs/slides/azure/terraform-community/images/infra_tools.png diff --git a/docs/slides/azure/terraform-oss/images/install_terraform_extension.png b/docs/slides/azure/terraform-community/images/install_terraform_extension.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/install_terraform_extension.png rename to docs/slides/azure/terraform-community/images/install_terraform_extension.png diff --git a/docs/slides/azure/terraform-oss/images/instructor.svg b/docs/slides/azure/terraform-community/images/instructor.svg similarity index 100% rename from docs/slides/azure/terraform-oss/images/instructor.svg rename to docs/slides/azure/terraform-community/images/instructor.svg diff --git a/docs/slides/azure/terraform-oss/images/integrate_github.png b/docs/slides/azure/terraform-community/images/integrate_github.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/integrate_github.png rename to docs/slides/azure/terraform-community/images/integrate_github.png diff --git a/docs/slides/azure/terraform-oss/images/its-dangerous-to-go-alone.png b/docs/slides/azure/terraform-community/images/its-dangerous-to-go-alone.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/its-dangerous-to-go-alone.png rename to docs/slides/azure/terraform-community/images/its-dangerous-to-go-alone.png diff --git a/docs/slides/azure/terraform-oss/images/kitt_scanner.gif b/docs/slides/azure/terraform-community/images/kitt_scanner.gif similarity index 100% rename from docs/slides/azure/terraform-oss/images/kitt_scanner.gif rename to docs/slides/azure/terraform-community/images/kitt_scanner.gif diff --git a/docs/slides/azure/terraform-oss/images/meow_world.png b/docs/slides/azure/terraform-community/images/meow_world.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/meow_world.png rename to docs/slides/azure/terraform-community/images/meow_world.png diff --git a/docs/slides/azure/terraform-oss/images/merge_pull_request.png b/docs/slides/azure/terraform-community/images/merge_pull_request.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/merge_pull_request.png rename to docs/slides/azure/terraform-community/images/merge_pull_request.png diff --git a/docs/slides/azure/terraform-oss/images/microsoft-azure-small.png b/docs/slides/azure/terraform-community/images/microsoft-azure-small.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/microsoft-azure-small.png rename to docs/slides/azure/terraform-community/images/microsoft-azure-small.png diff --git a/docs/slides/azure/terraform-oss/images/microsoft-azure.jpg b/docs/slides/azure/terraform-community/images/microsoft-azure.jpg similarity index 100% rename from docs/slides/azure/terraform-oss/images/microsoft-azure.jpg rename to docs/slides/azure/terraform-community/images/microsoft-azure.jpg diff --git a/docs/slides/azure/terraform-oss/images/microsoft-azure.png b/docs/slides/azure/terraform-community/images/microsoft-azure.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/microsoft-azure.png rename to docs/slides/azure/terraform-community/images/microsoft-azure.png diff --git a/docs/slides/azure/terraform-oss/images/open_terminal.png b/docs/slides/azure/terraform-community/images/open_terminal.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/open_terminal.png rename to docs/slides/azure/terraform-community/images/open_terminal.png diff --git a/docs/slides/azure/terraform-oss/images/organization_access.png b/docs/slides/azure/terraform-community/images/organization_access.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/organization_access.png rename to docs/slides/azure/terraform-community/images/organization_access.png diff --git a/docs/slides/azure/terraform-oss/images/pmr.png b/docs/slides/azure/terraform-community/images/pmr.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/pmr.png rename to docs/slides/azure/terraform-community/images/pmr.png diff --git a/docs/slides/azure/terraform-oss/images/policy_name_and_mode.png b/docs/slides/azure/terraform-community/images/policy_name_and_mode.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/policy_name_and_mode.png rename to docs/slides/azure/terraform-community/images/policy_name_and_mode.png diff --git a/docs/slides/azure/terraform-oss/images/policy_set_settings.png b/docs/slides/azure/terraform-community/images/policy_set_settings.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/policy_set_settings.png rename to docs/slides/azure/terraform-community/images/policy_set_settings.png diff --git a/docs/slides/azure/terraform-oss/images/preview_graph.png b/docs/slides/azure/terraform-community/images/preview_graph.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/preview_graph.png rename to docs/slides/azure/terraform-community/images/preview_graph.png diff --git a/docs/slides/azure/terraform-oss/images/protect_master.png b/docs/slides/azure/terraform-community/images/protect_master.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/protect_master.png rename to docs/slides/azure/terraform-community/images/protect_master.png diff --git a/docs/slides/azure/terraform-oss/images/queue_a_plan.png b/docs/slides/azure/terraform-community/images/queue_a_plan.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/queue_a_plan.png rename to docs/slides/azure/terraform-community/images/queue_a_plan.png diff --git a/docs/slides/azure/terraform-oss/images/queue_destroy_plan.png b/docs/slides/azure/terraform-community/images/queue_destroy_plan.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/queue_destroy_plan.png rename to docs/slides/azure/terraform-community/images/queue_destroy_plan.png diff --git a/docs/slides/azure/terraform-oss/images/rdp_login.png b/docs/slides/azure/terraform-community/images/rdp_login.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/rdp_login.png rename to docs/slides/azure/terraform-community/images/rdp_login.png diff --git a/docs/slides/azure/terraform-oss/images/ready_to_terraform.png b/docs/slides/azure/terraform-community/images/ready_to_terraform.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/ready_to_terraform.png rename to docs/slides/azure/terraform-community/images/ready_to_terraform.png diff --git a/docs/slides/azure/terraform-oss/images/rebuild_lab_environment.png b/docs/slides/azure/terraform-community/images/rebuild_lab_environment.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/rebuild_lab_environment.png rename to docs/slides/azure/terraform-community/images/rebuild_lab_environment.png diff --git a/docs/slides/azure/terraform-oss/images/remote_execution.png b/docs/slides/azure/terraform-community/images/remote_execution.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/remote_execution.png rename to docs/slides/azure/terraform-community/images/remote_execution.png diff --git a/docs/slides/azure/terraform-oss/images/remote_state_free.png b/docs/slides/azure/terraform-community/images/remote_state_free.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/remote_state_free.png rename to docs/slides/azure/terraform-community/images/remote_state_free.png diff --git a/docs/slides/azure/terraform-oss/images/renderer.png b/docs/slides/azure/terraform-community/images/renderer.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/renderer.png rename to docs/slides/azure/terraform-community/images/renderer.png diff --git a/docs/slides/azure/terraform-oss/images/resource_anatomy.png b/docs/slides/azure/terraform-community/images/resource_anatomy.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/resource_anatomy.png rename to docs/slides/azure/terraform-community/images/resource_anatomy.png diff --git a/docs/slides/azure/terraform-oss/images/resource_graph.png b/docs/slides/azure/terraform-community/images/resource_graph.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/resource_graph.png rename to docs/slides/azure/terraform-community/images/resource_graph.png diff --git a/docs/slides/azure/terraform-oss/images/run_setup.png b/docs/slides/azure/terraform-community/images/run_setup.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/run_setup.png rename to docs/slides/azure/terraform-community/images/run_setup.png diff --git a/docs/slides/azure/terraform-oss/images/sandbox.png b/docs/slides/azure/terraform-community/images/sandbox.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/sandbox.png rename to docs/slides/azure/terraform-community/images/sandbox.png diff --git a/docs/slides/azure/terraform-oss/images/select_git_bash.png b/docs/slides/azure/terraform-community/images/select_git_bash.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/select_git_bash.png rename to docs/slides/azure/terraform-community/images/select_git_bash.png diff --git a/docs/slides/azure/terraform-oss/images/select_git_bash_2.png b/docs/slides/azure/terraform-community/images/select_git_bash_2.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/select_git_bash_2.png rename to docs/slides/azure/terraform-community/images/select_git_bash_2.png diff --git a/docs/slides/azure/terraform-oss/images/set_colors_and_icons.png b/docs/slides/azure/terraform-community/images/set_colors_and_icons.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/set_colors_and_icons.png rename to docs/slides/azure/terraform-community/images/set_colors_and_icons.png diff --git a/docs/slides/azure/terraform-oss/images/set_prefix_gui.png b/docs/slides/azure/terraform-community/images/set_prefix_gui.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/set_prefix_gui.png rename to docs/slides/azure/terraform-community/images/set_prefix_gui.png diff --git a/docs/slides/azure/terraform-oss/images/stage_and_commit.png b/docs/slides/azure/terraform-community/images/stage_and_commit.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/stage_and_commit.png rename to docs/slides/azure/terraform-community/images/stage_and_commit.png diff --git a/docs/slides/azure/terraform-oss/images/standard_a1_v2.png b/docs/slides/azure/terraform-community/images/standard_a1_v2.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/standard_a1_v2.png rename to docs/slides/azure/terraform-community/images/standard_a1_v2.png diff --git a/docs/slides/azure/terraform-oss/images/standard_a2.png b/docs/slides/azure/terraform-community/images/standard_a2.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/standard_a2.png rename to docs/slides/azure/terraform-community/images/standard_a2.png diff --git a/docs/slides/azure/terraform-oss/images/state_table_empty.png b/docs/slides/azure/terraform-community/images/state_table_empty.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/state_table_empty.png rename to docs/slides/azure/terraform-community/images/state_table_empty.png diff --git a/docs/slides/azure/terraform-oss/images/state_table_full.png b/docs/slides/azure/terraform-community/images/state_table_full.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/state_table_full.png rename to docs/slides/azure/terraform-community/images/state_table_full.png diff --git a/docs/slides/azure/terraform-oss/images/team_workspace_acls.png b/docs/slides/azure/terraform-community/images/team_workspace_acls.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/team_workspace_acls.png rename to docs/slides/azure/terraform-community/images/team_workspace_acls.png diff --git a/docs/slides/azure/terraform-oss/images/teams_list.png b/docs/slides/azure/terraform-community/images/teams_list.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/teams_list.png rename to docs/slides/azure/terraform-community/images/teams_list.png diff --git a/docs/slides/azure/terraform-oss/images/terraform_config_files.png b/docs/slides/azure/terraform-community/images/terraform_config_files.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/terraform_config_files.png rename to docs/slides/azure/terraform-community/images/terraform_config_files.png diff --git a/docs/slides/azure/terraform-oss/images/tf_cloud_signup.png b/docs/slides/azure/terraform-community/images/tf_cloud_signup.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/tf_cloud_signup.png rename to docs/slides/azure/terraform-community/images/tf_cloud_signup.png diff --git a/docs/slides/azure/terraform-oss/images/tf_cloud_welcome.png b/docs/slides/azure/terraform-community/images/tf_cloud_welcome.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/tf_cloud_welcome.png rename to docs/slides/azure/terraform-community/images/tf_cloud_welcome.png diff --git a/docs/slides/azure/terraform-oss/images/tfaz.png b/docs/slides/azure/terraform-community/images/tfaz.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/tfaz.png rename to docs/slides/azure/terraform-community/images/tfaz.png diff --git a/docs/slides/azure/terraform-oss/images/tfe-vcs.webp b/docs/slides/azure/terraform-community/images/tfe-vcs.webp similarity index 100% rename from docs/slides/azure/terraform-oss/images/tfe-vcs.webp rename to docs/slides/azure/terraform-community/images/tfe-vcs.webp diff --git a/docs/slides/azure/terraform-oss/images/tfelogo.png b/docs/slides/azure/terraform-community/images/tfelogo.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/tfelogo.png rename to docs/slides/azure/terraform-community/images/tfelogo.png diff --git a/docs/slides/azure/terraform-oss/images/uat_branch.png b/docs/slides/azure/terraform-community/images/uat_branch.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/uat_branch.png rename to docs/slides/azure/terraform-community/images/uat_branch.png diff --git a/docs/slides/azure/terraform-oss/images/upandtotheright.jpg b/docs/slides/azure/terraform-community/images/upandtotheright.jpg similarity index 100% rename from docs/slides/azure/terraform-oss/images/upandtotheright.jpg rename to docs/slides/azure/terraform-community/images/upandtotheright.jpg diff --git a/docs/slides/azure/terraform-oss/images/variables_answer.png b/docs/slides/azure/terraform-community/images/variables_answer.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/variables_answer.png rename to docs/slides/azure/terraform-community/images/variables_answer.png diff --git a/docs/slides/azure/terraform-oss/images/vcs_success.png b/docs/slides/azure/terraform-community/images/vcs_success.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/vcs_success.png rename to docs/slides/azure/terraform-community/images/vcs_success.png diff --git a/docs/slides/azure/terraform-oss/images/vsc_tour.png b/docs/slides/azure/terraform-community/images/vsc_tour.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/vsc_tour.png rename to docs/slides/azure/terraform-community/images/vsc_tour.png diff --git a/docs/slides/azure/terraform-oss/images/welcome_arcade.png b/docs/slides/azure/terraform-community/images/welcome_arcade.png similarity index 100% rename from docs/slides/azure/terraform-oss/images/welcome_arcade.png rename to docs/slides/azure/terraform-community/images/welcome_arcade.png diff --git a/docs/slides/azure/terraform-community/index.html b/docs/slides/azure/terraform-community/index.html new file mode 100644 index 00000000..3bd5f6eb --- /dev/null +++ b/docs/slides/azure/terraform-community/index.html @@ -0,0 +1,79 @@ + + + + + + + Introduction to Terraform Community Edition on Azure + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/slides/azure/terraform-oss/index.md b/docs/slides/azure/terraform-community/index.md similarity index 94% rename from docs/slides/azure/terraform-oss/index.md rename to docs/slides/azure/terraform-community/index.md index 02780b48..91c7dee2 100644 --- a/docs/slides/azure/terraform-oss/index.md +++ b/docs/slides/azure/terraform-community/index.md @@ -73,7 +73,7 @@ name: Table-of-Contents 1. Provision and Configure Azure VMs
🔬 **Lab - Provisioning with Terraform**
1. Manage and Change Infrastructure State
-1. Terraform Cloud
+1. HCP Terraform
⚗️ **Lab - Terraform Remote State** @@ -447,12 +447,12 @@ class: title **Now that you have terraform installed and working with Azure, we can do a few dry runs before building real infrastructure. Follow along carefully, copying and pasting the commands on each slide into your shell as we go.** --- -name: what-is-terraform-oss +name: what-is-terraform-community class: img-left # What is Terraform? ![Terraform](images\Terraform_VerticalLogo_FullColor.png) -Terraform is an open source provisioning tool. +Terraform Community Edition is a free, downloadable tool that you interact with on the command line. It lets you provision infrastructure on any cloud provider and manages configuration, plugins, infrastructure, and state. It ships as a single binary which is written in Go. Terraform is cross platform and can run on Linux, Windows, or MacOS. @@ -1111,59 +1111,59 @@ What happens in each scenario? Discuss. name: Chapter-6 class: title # Chapter 6 -## Terraform Cloud +## HCP Terraform --- -name: terraform-cloud +name: hcp-terraform class: img-right -# Terraform Cloud -##### Terraform Cloud is a free to use SaaS application that provides the best workflow for writing and building infrastructure as code with Terraform. -![Terraform Cloud](https://hashicorp.github.io/field-workshops-assets/assets/logos/Terraform_Cloud_Logo_Color_RGB.png) +# HCP Terraform +##### HCP Terraform is a free to use SaaS application that provides the best workflow for writing and building infrastructure as code with Terraform. +![HCP Terraform](https://hashicorp.github.io/field-workshops-assets/assets/logos/Terraform_Cloud_Logo_Color_RGB.png) * State storage and management * Web UI for viewing and approving Terraform runs -* Private module registry +* Terraform Private Registry * Version Control System (VCS) integration * CLI, API or GUI driven actions * Notifications for run events * Full HTTP API for automation --- -name: tfcloud-vs-tfe +name: hcp-terraform-vs-tfe class: compact -# Terraform Cloud or Terraform Enterprise? -**[Terraform Cloud](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. +# HCP Terraform or Terraform Enterprise? +**[HCP Terraform](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. -**[Terraform Cloud for Business](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as Terraform Cloud, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, the abbility to use [Agents](https://www.terraform.io/cloud-docs/agents) to deploy in private environments, and integrate with external tools via [Run Tasks](https://www.terraform.io/cloud-docs/integrations/run-tasks). +**[HCP Terraform Plus Tier](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as HCP Terraform, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, the abbility to use [Agents](https://www.terraform.io/cloud-docs/agents) to deploy in private environments, and integrate with external tools via [Run Tasks](https://www.terraform.io/cloud-docs/integrations/run-tasks). -**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the Terraform Cloud application, or wish to run it in restricted networks behind corporate firewalls. +**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the HCP Terraform application, or wish to run it in restricted networks behind corporate firewalls. -The feature list for these offerings is nearly identical. We will be using Terraform Cloud accounts for our lab exercises today. +The feature list for these offerings is nearly identical. We will be using HCP Terraform accounts for our lab exercises today. --- -name: terraform-cloud-remote-state +name: hcp-terraform-remote-state # Terraform Remote State By default Terraform stores its state file in the workspace directory on your laptop or workstation. This is ok for development and experimentation, but in a production environment you need to protect and store the state file safely. -Terraform has an option to store and secure your state files remotely. Terraform Cloud accounts now offer unlimited state file storage even for open source users. +Terraform has an option to store and secure your state files remotely. HCP Terraform accounts now offer unlimited state file storage even for Community Edition users. -All state files are encrypted (using HashiCorp Vault) and stored securely in your Terraform Cloud account. You'll never have to worry about losing or deleting your state file again. +All state files are encrypted (using HashiCorp Vault) and stored securely in your HCP Terraform account. You'll never have to worry about losing or deleting your state file again. --- name: execution-mode class: compact -# Terraform Cloud Execution Modes +# HCP Terraform Execution Modes **Local Execution** - Terraform commands run on your laptop or workstation and all variables are configured locally. Only the terraform state is stored remotely. -**Remote Execution** - Terraform commands are run in a Terraform Cloud container environment. All variables are stored in the remote workspace. Code can be stored in a Version Control System repository. Limited to 1 concurrent run for free tier users. +**Remote Execution** - Terraform commands are run in a HCP Terraform container environment. All variables are stored in the remote workspace. Code can be stored in a Version Control System repository. Limited to 1 concurrent run for free tier users. -**Agent Execution** *(Enterprise only)* - Terraform Cloud Agents allow Terraform Cloud and Enterprise to communicate with isolated, private, or on-premises infrastructure. The agent architecture is pull-based, so no inbound connectivity is required. Any agent you provision will poll Terraform Cloud or Enterprise for work and carry out execution of that work locally. +**Agent Execution** *(Enterprise only)* - HCP Terraform Agents allow HCP Terraform and Enterprise to communicate with isolated, private, or on-premises infrastructure. The agent architecture is pull-based, so no inbound connectivity is required. Any agent you provision will poll HCP Terraform or Terraform Enterprise for work and carry out execution of that work locally. --- name: lab-exercise-2c -# 👩‍💻 Lab Exercise: Terraform Cloud -In the final part of the second lab we'll create a free Terraform Cloud account and enable remote storage of our state file. +# 👩‍💻 Lab Exercise: HCP Terraform +In the final part of the second lab we'll create a free HCP Terraform account and enable remote storage of our state file. Return to the training lab and continue where you left off. @@ -1185,7 +1185,7 @@ Microsoft Terraform Quickstarts
https://docs.microsoft.com/en-us/azure/terraform/ Terraform with Azure Cloudshell
-https://docs.microsoft.com/en-us/azure/terraform/terraform-cloud-shell +https://docs.microsoft.com/en-us/azure/terraform/hcp-terraform-shell Terraform Azurerm Provider Documentation
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/ diff --git a/docs/slides/gcp/terraform-cloud-v2/fav-icon/android-chrome-192x192.png b/docs/slides/gcp/hcp-terraform-v2/fav-icon/android-chrome-192x192.png similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/fav-icon/android-chrome-192x192.png rename to docs/slides/gcp/hcp-terraform-v2/fav-icon/android-chrome-192x192.png diff --git a/docs/slides/gcp/terraform-cloud-v2/fav-icon/android-chrome-512x512.png b/docs/slides/gcp/hcp-terraform-v2/fav-icon/android-chrome-512x512.png similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/fav-icon/android-chrome-512x512.png rename to docs/slides/gcp/hcp-terraform-v2/fav-icon/android-chrome-512x512.png diff --git a/docs/slides/gcp/terraform-cloud-v2/fav-icon/apple-touch-icon.png b/docs/slides/gcp/hcp-terraform-v2/fav-icon/apple-touch-icon.png similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/fav-icon/apple-touch-icon.png rename to docs/slides/gcp/hcp-terraform-v2/fav-icon/apple-touch-icon.png diff --git a/docs/slides/gcp/terraform-cloud-v2/fav-icon/browserconfig.xml b/docs/slides/gcp/hcp-terraform-v2/fav-icon/browserconfig.xml similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/fav-icon/browserconfig.xml rename to docs/slides/gcp/hcp-terraform-v2/fav-icon/browserconfig.xml diff --git a/docs/slides/gcp/terraform-cloud-v2/fav-icon/favicon-16x16.png b/docs/slides/gcp/hcp-terraform-v2/fav-icon/favicon-16x16.png similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/fav-icon/favicon-16x16.png rename to docs/slides/gcp/hcp-terraform-v2/fav-icon/favicon-16x16.png diff --git a/docs/slides/gcp/terraform-cloud-v2/fav-icon/favicon-32x32.png b/docs/slides/gcp/hcp-terraform-v2/fav-icon/favicon-32x32.png similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/fav-icon/favicon-32x32.png rename to docs/slides/gcp/hcp-terraform-v2/fav-icon/favicon-32x32.png diff --git a/docs/slides/gcp/terraform-cloud-v2/fav-icon/favicon.ico b/docs/slides/gcp/hcp-terraform-v2/fav-icon/favicon.ico similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/fav-icon/favicon.ico rename to docs/slides/gcp/hcp-terraform-v2/fav-icon/favicon.ico diff --git a/docs/slides/gcp/terraform-cloud-v2/fav-icon/icon.svg b/docs/slides/gcp/hcp-terraform-v2/fav-icon/icon.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/fav-icon/icon.svg rename to docs/slides/gcp/hcp-terraform-v2/fav-icon/icon.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/fav-icon/mstile-150x150.png b/docs/slides/gcp/hcp-terraform-v2/fav-icon/mstile-150x150.png similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/fav-icon/mstile-150x150.png rename to docs/slides/gcp/hcp-terraform-v2/fav-icon/mstile-150x150.png diff --git a/docs/slides/gcp/terraform-cloud-v2/fav-icon/safari-pinned-tab.svg b/docs/slides/gcp/hcp-terraform-v2/fav-icon/safari-pinned-tab.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/fav-icon/safari-pinned-tab.svg rename to docs/slides/gcp/hcp-terraform-v2/fav-icon/safari-pinned-tab.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/fav-icon/site.webmanifest b/docs/slides/gcp/hcp-terraform-v2/fav-icon/site.webmanifest similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/fav-icon/site.webmanifest rename to docs/slides/gcp/hcp-terraform-v2/fav-icon/site.webmanifest diff --git a/docs/slides/gcp/terraform-cloud-v2/images/2022_hashiconf_tuesday_089_0499.jpg b/docs/slides/gcp/hcp-terraform-v2/images/2022_hashiconf_tuesday_089_0499.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/2022_hashiconf_tuesday_089_0499.jpg rename to docs/slides/gcp/hcp-terraform-v2/images/2022_hashiconf_tuesday_089_0499.jpg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/HCP_Diagram_OnBlack_Terraform.svg b/docs/slides/gcp/hcp-terraform-v2/images/HCP_Diagram_OnBlack_Terraform.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/HCP_Diagram_OnBlack_Terraform.svg rename to docs/slides/gcp/hcp-terraform-v2/images/HCP_Diagram_OnBlack_Terraform.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/adoption_journey_groups 2.svg b/docs/slides/gcp/hcp-terraform-v2/images/adoption_journey_groups 2.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/adoption_journey_groups 2.svg rename to docs/slides/gcp/hcp-terraform-v2/images/adoption_journey_groups 2.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/adoption_journey_groups.svg b/docs/slides/gcp/hcp-terraform-v2/images/adoption_journey_groups.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/adoption_journey_groups.svg rename to docs/slides/gcp/hcp-terraform-v2/images/adoption_journey_groups.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/adoption_journey_individual.svg b/docs/slides/gcp/hcp-terraform-v2/images/adoption_journey_individual.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/adoption_journey_individual.svg rename to docs/slides/gcp/hcp-terraform-v2/images/adoption_journey_individual.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/adoption_journey_multiple_groups.svg b/docs/slides/gcp/hcp-terraform-v2/images/adoption_journey_multiple_groups.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/adoption_journey_multiple_groups.svg rename to docs/slides/gcp/hcp-terraform-v2/images/adoption_journey_multiple_groups.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/adoption_journey_organization.svg b/docs/slides/gcp/hcp-terraform-v2/images/adoption_journey_organization.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/adoption_journey_organization.svg rename to docs/slides/gcp/hcp-terraform-v2/images/adoption_journey_organization.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/automated-testing.svg b/docs/slides/gcp/hcp-terraform-v2/images/automated-testing.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/automated-testing.svg rename to docs/slides/gcp/hcp-terraform-v2/images/automated-testing.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/code_example.svg b/docs/slides/gcp/hcp-terraform-v2/images/code_example.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/code_example.svg rename to docs/slides/gcp/hcp-terraform-v2/images/code_example.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/collaboration_experience.svg b/docs/slides/gcp/hcp-terraform-v2/images/collaboration_experience.svg similarity index 97% rename from docs/slides/azure/terraform-cloud-v2/images/collaboration_experience.svg rename to docs/slides/gcp/hcp-terraform-v2/images/collaboration_experience.svg index 39a24566..420a6a2a 100644 --- a/docs/slides/azure/terraform-cloud-v2/images/collaboration_experience.svg +++ b/docs/slides/gcp/hcp-terraform-v2/images/collaboration_experience.svg @@ -36,8 +36,8 @@ as-code modules, policies and integration run tasks. - - Use Terraform Cloud to + + Use HCP Terraform to safely store sensitive materials, including Terraform plans and diff --git a/docs/slides/gcp/terraform-cloud-v2/images/contract-testing.svg b/docs/slides/gcp/hcp-terraform-v2/images/contract-testing.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/contract-testing.svg rename to docs/slides/gcp/hcp-terraform-v2/images/contract-testing.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/deployment_variables.svg b/docs/slides/gcp/hcp-terraform-v2/images/deployment_variables.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/deployment_variables.svg rename to docs/slides/gcp/hcp-terraform-v2/images/deployment_variables.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/integration-testing.svg b/docs/slides/gcp/hcp-terraform-v2/images/integration-testing.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/integration-testing.svg rename to docs/slides/gcp/hcp-terraform-v2/images/integration-testing.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/organization_workflow.svg b/docs/slides/gcp/hcp-terraform-v2/images/organization_workflow.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/organization_workflow.svg rename to docs/slides/gcp/hcp-terraform-v2/images/organization_workflow.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/pac_technical_workflow.svg b/docs/slides/gcp/hcp-terraform-v2/images/pac_technical_workflow.svg similarity index 99% rename from docs/slides/gcp/terraform-cloud-v2/images/pac_technical_workflow.svg rename to docs/slides/gcp/hcp-terraform-v2/images/pac_technical_workflow.svg index 91122d29..7cac4b11 100644 --- a/docs/slides/gcp/terraform-cloud-v2/images/pac_technical_workflow.svg +++ b/docs/slides/gcp/hcp-terraform-v2/images/pac_technical_workflow.svg @@ -87,7 +87,7 @@ - + diff --git a/docs/slides/gcp/terraform-cloud-v2/images/part_01.png b/docs/slides/gcp/hcp-terraform-v2/images/part_01.png similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/part_01.png rename to docs/slides/gcp/hcp-terraform-v2/images/part_01.png diff --git a/docs/slides/gcp/terraform-cloud-v2/images/part_02.png b/docs/slides/gcp/hcp-terraform-v2/images/part_02.png similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/part_02.png rename to docs/slides/gcp/hcp-terraform-v2/images/part_02.png diff --git a/docs/slides/gcp/terraform-cloud-v2/images/part_03.png b/docs/slides/gcp/hcp-terraform-v2/images/part_03.png similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/part_03.png rename to docs/slides/gcp/hcp-terraform-v2/images/part_03.png diff --git a/docs/slides/gcp/terraform-cloud-v2/images/part_04.png b/docs/slides/gcp/hcp-terraform-v2/images/part_04.png similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/part_04.png rename to docs/slides/gcp/hcp-terraform-v2/images/part_04.png diff --git a/docs/slides/gcp/terraform-cloud-v2/images/permissions_model.svg b/docs/slides/gcp/hcp-terraform-v2/images/permissions_model.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/permissions_model.svg rename to docs/slides/gcp/hcp-terraform-v2/images/permissions_model.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/pmr_technical_workflow.svg b/docs/slides/gcp/hcp-terraform-v2/images/pmr_technical_workflow.svg similarity index 99% rename from docs/slides/gcp/terraform-cloud-v2/images/pmr_technical_workflow.svg rename to docs/slides/gcp/hcp-terraform-v2/images/pmr_technical_workflow.svg index 1fd824a5..b4dd72ea 100644 --- a/docs/slides/gcp/terraform-cloud-v2/images/pmr_technical_workflow.svg +++ b/docs/slides/gcp/hcp-terraform-v2/images/pmr_technical_workflow.svg @@ -83,7 +83,7 @@ - + diff --git a/docs/slides/gcp/terraform-cloud-v2/images/policy-as-code.svg b/docs/slides/gcp/hcp-terraform-v2/images/policy-as-code.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/policy-as-code.svg rename to docs/slides/gcp/hcp-terraform-v2/images/policy-as-code.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/policy_as_code_workflow.svg b/docs/slides/gcp/hcp-terraform-v2/images/policy_as_code_workflow.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/policy_as_code_workflow.svg rename to docs/slides/gcp/hcp-terraform-v2/images/policy_as_code_workflow.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/projects-and-workspaces.svg b/docs/slides/gcp/hcp-terraform-v2/images/projects-and-workspaces.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/projects-and-workspaces.svg rename to docs/slides/gcp/hcp-terraform-v2/images/projects-and-workspaces.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/sole_practitioner.svg b/docs/slides/gcp/hcp-terraform-v2/images/sole_practitioner.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/sole_practitioner.svg rename to docs/slides/gcp/hcp-terraform-v2/images/sole_practitioner.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/team_collaboration.svg b/docs/slides/gcp/hcp-terraform-v2/images/team_collaboration.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/team_collaboration.svg rename to docs/slides/gcp/hcp-terraform-v2/images/team_collaboration.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/terraform-modules.svg b/docs/slides/gcp/hcp-terraform-v2/images/terraform-modules.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/terraform-modules.svg rename to docs/slides/gcp/hcp-terraform-v2/images/terraform-modules.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/terraform_adoption_journey_yt.png b/docs/slides/gcp/hcp-terraform-v2/images/terraform_adoption_journey_yt.png similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/terraform_adoption_journey_yt.png rename to docs/slides/gcp/hcp-terraform-v2/images/terraform_adoption_journey_yt.png diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_api.svg b/docs/slides/gcp/hcp-terraform-v2/images/terraform_api.svg similarity index 99% rename from docs/slides/korean/aws/terraform-cloud-v2/images/terraform_api.svg rename to docs/slides/gcp/hcp-terraform-v2/images/terraform_api.svg index 6310b0d0..dceb0e6c 100644 --- a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_api.svg +++ b/docs/slides/gcp/hcp-terraform-v2/images/terraform_api.svg @@ -314,8 +314,8 @@ - - Terraform Cloud + + HCP Terraform diff --git a/docs/slides/gcp/terraform-cloud-v2/images/terraform_callout_pattern_dark.svg b/docs/slides/gcp/hcp-terraform-v2/images/terraform_callout_pattern_dark.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/terraform_callout_pattern_dark.svg rename to docs/slides/gcp/hcp-terraform-v2/images/terraform_callout_pattern_dark.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/terraform_callout_pattern_light.svg b/docs/slides/gcp/hcp-terraform-v2/images/terraform_callout_pattern_light.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/terraform_callout_pattern_light.svg rename to docs/slides/gcp/hcp-terraform-v2/images/terraform_callout_pattern_light.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/terraform_cloud.svg b/docs/slides/gcp/hcp-terraform-v2/images/terraform_cloud.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/terraform_cloud.svg rename to docs/slides/gcp/hcp-terraform-v2/images/terraform_cloud.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/terraform_cloud_cicd.svg b/docs/slides/gcp/hcp-terraform-v2/images/terraform_cloud_cicd.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/terraform_cloud_cicd.svg rename to docs/slides/gcp/hcp-terraform-v2/images/terraform_cloud_cicd.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/terraform_cloud_cicd_gcp.svg b/docs/slides/gcp/hcp-terraform-v2/images/terraform_cloud_cicd_gcp.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/terraform_cloud_cicd_gcp.svg rename to docs/slides/gcp/hcp-terraform-v2/images/terraform_cloud_cicd_gcp.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/terraform_modules.svg b/docs/slides/gcp/hcp-terraform-v2/images/terraform_modules.svg similarity index 99% rename from docs/slides/gcp/terraform-cloud-v2/images/terraform_modules.svg rename to docs/slides/gcp/hcp-terraform-v2/images/terraform_modules.svg index 522bb6a4..35a2e690 100644 --- a/docs/slides/gcp/terraform-cloud-v2/images/terraform_modules.svg +++ b/docs/slides/gcp/hcp-terraform-v2/images/terraform_modules.svg @@ -143,7 +143,7 @@ - + diff --git a/docs/slides/gcp/terraform-cloud-v2/images/terraform_registry.svg b/docs/slides/gcp/hcp-terraform-v2/images/terraform_registry.svg similarity index 99% rename from docs/slides/gcp/terraform-cloud-v2/images/terraform_registry.svg rename to docs/slides/gcp/hcp-terraform-v2/images/terraform_registry.svg index d8346a8a..12998d71 100644 --- a/docs/slides/gcp/terraform-cloud-v2/images/terraform_registry.svg +++ b/docs/slides/gcp/hcp-terraform-v2/images/terraform_registry.svg @@ -284,8 +284,8 @@ - - Terraform Cloud + + HCP Terraform diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_workflow.svg b/docs/slides/gcp/hcp-terraform-v2/images/terraform_workflow.svg similarity index 99% rename from docs/slides/korean/aws/terraform-cloud-v2/images/terraform_workflow.svg rename to docs/slides/gcp/hcp-terraform-v2/images/terraform_workflow.svg index 47bf7c14..5e693a7f 100644 --- a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_workflow.svg +++ b/docs/slides/gcp/hcp-terraform-v2/images/terraform_workflow.svg @@ -441,7 +441,7 @@ - Terraform Cloud integrates into + HCP Terraform integrates into workflow by faciliating resources, execution steps and maintenace diff --git a/docs/slides/gcp/terraform-cloud-v2/images/unit-testing.svg b/docs/slides/gcp/hcp-terraform-v2/images/unit-testing.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/unit-testing.svg rename to docs/slides/gcp/hcp-terraform-v2/images/unit-testing.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/vcs_connection_overview.svg b/docs/slides/gcp/hcp-terraform-v2/images/vcs_connection_overview.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/vcs_connection_overview.svg rename to docs/slides/gcp/hcp-terraform-v2/images/vcs_connection_overview.svg diff --git a/docs/slides/gcp/terraform-cloud-v2/images/vcs_workflow_overview.svg b/docs/slides/gcp/hcp-terraform-v2/images/vcs_workflow_overview.svg similarity index 99% rename from docs/slides/gcp/terraform-cloud-v2/images/vcs_workflow_overview.svg rename to docs/slides/gcp/hcp-terraform-v2/images/vcs_workflow_overview.svg index 89a9ce2b..d80d414d 100644 --- a/docs/slides/gcp/terraform-cloud-v2/images/vcs_workflow_overview.svg +++ b/docs/slides/gcp/hcp-terraform-v2/images/vcs_workflow_overview.svg @@ -121,7 +121,7 @@ - + diff --git a/docs/slides/gcp/terraform-cloud-v2/images/workspace-state.svg b/docs/slides/gcp/hcp-terraform-v2/images/workspace-state.svg similarity index 100% rename from docs/slides/gcp/terraform-cloud-v2/images/workspace-state.svg rename to docs/slides/gcp/hcp-terraform-v2/images/workspace-state.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/index.html b/docs/slides/gcp/hcp-terraform-v2/index.html similarity index 99% rename from docs/slides/korean/aws/terraform-cloud-v2/index.html rename to docs/slides/gcp/hcp-terraform-v2/index.html index 5fda69d2..ace3f8c5 100644 --- a/docs/slides/korean/aws/terraform-cloud-v2/index.html +++ b/docs/slides/gcp/hcp-terraform-v2/index.html @@ -7,7 +7,7 @@ - Terraform Cloud on AWS + HCP Terraform on GCP @@ -358,7 +358,7 @@ // want to ignore. The following slides do not active the // lightbox - this is an all-or-nothing approach and can be improved. const ignore_ids = [ - "slide-Intro-to-Terraform-Cloud", + "slide-Intro-to-hcp-terraform", "slide-terraform-adoption-journey", "slide-lab-guidance-01", "slide-lab-guidance-02", diff --git a/docs/slides/gcp/terraform-cloud-v2/index.md b/docs/slides/gcp/hcp-terraform-v2/index.md similarity index 78% rename from docs/slides/gcp/terraform-cloud-v2/index.md rename to docs/slides/gcp/hcp-terraform-v2/index.md index 1e1af235..95a949b5 100644 --- a/docs/slides/gcp/terraform-cloud-v2/index.md +++ b/docs/slides/gcp/hcp-terraform-v2/index.md @@ -1,15 +1,15 @@ -name: Intro-to-Terraform-Cloud +name: Intro-to-hcp-terraform class: center, middle, title-slide, no-footer count: true ![:scale 40%](images/HCP_Diagram_OnBlack_Terraform.svg) -# Terraform Cloud on GCP +# HCP Terraform on GCP ??? -# Terraform Cloud on GCP workshop +# HCP Terraform on GCP workshop ## Getting started -This is a half-day workshop that introduces Terraform Cloud using an GCP-based application for the Instruqt labs. If you're brand new to Terraform you should try the Introduction to Terraform Community Edition on GCP Instruqt track before this one. +This is a half-day workshop that introduces HCP Terraform using an GCP-based application for the Instruqt labs. If you're brand new to Terraform you should try the Introduction to Terraform Community Edition on GCP Instruqt track before this one. -The instructions on how to conduct a workshop are in the standard [instructor's guide](https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_terraform_cloud_INSTRUCTOR_GUIDE.md). +The instructions on how to conduct a workshop are in the standard [instructor's guide](https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_hcp_terraform_INSTRUCTOR_GUIDE.md). ## Navigation @@ -65,9 +65,9 @@ Standardize infrastructure across your provisioning processes using your private 2. If your audience is less than 20 people you have the option to quickly go through the room and ask everyone to introduce themselves if they wish to participate. ## Goals for the workshop -1. Launch a deployment to GCP using Terraform Cloud using VCS workflows +1. Launch a deployment to GCP using HCP Terraform using VCS workflows 2. Explore management and configuration options with team permissions and deployment policies -3. Test the Private Module Registry and some API functions +3. Test the Terraform Private Registry and some API functions --- name: Table-of-Contents @@ -77,7 +77,7 @@ class: col-2, top, minimal-list, minimal-toc **1- Infrastructure Automation** * Terraform Adoption Journey * Terraform Editions -* Terraform Cloud +* HCP Terraform
@@ -96,7 +96,7 @@ class: col-2, top, minimal-list, minimal-toc
**4- Terraform Modules & API** -* Private Module Registry +* Terraform Private Registry * API Driven Workflows * CI/CD Integration @@ -129,7 +129,7 @@ class: table-exercises

Part 1

  • Getting Started - Explore the Lab
  • -
  • Terraform Cloud Setup
  • +
  • HCP Terraform Setup
  • Safekeeping your Terraform State
  • Quiz 1: Terraform Remote State
@@ -138,7 +138,7 @@ class: table-exercises

Part 2

  • Workspace variables
  • -
  • Working with Teams in Terraform Cloud
  • +
  • Working with Teams in HCP Terraform
  • Quiz 2: Secure Variables
@@ -156,9 +156,9 @@ class: table-exercises

Part 4

    -
  • Private Module Registry
  • +
  • Terraform Private Registry
  • API Driven Workflows
  • -
  • Quiz 4: Private Module Registry
  • +
  • Quiz 4: Terraform Private Registry
@@ -184,12 +184,12 @@ class: table-exercises name: participant-requirements class: col-3, header-adjust, minimal-list # Participant Requirements -### Terraform Cloud -- Terraform Cloud account (free) +### HCP Terraform +- HCP Terraform account (free) - Terraform "___Plus Tier___" Trial -- Terraform Cloud personal access token +- HCP Terraform personal access token ### GitHub - Personal account @@ -232,11 +232,11 @@ This chapter is organized in three sections: 2. Terraform Editions - - Understand Terraform Community Edition and the differences between Community Edition and Cloud and Enterprise + - Understand Terraform Community Edition and the differences between Community Edition, HCP Terraform, and Terraform Enterprise -3. Benefits of using Terraform Cloud +3. Benefits of using HCP Terraform - - Hightlight the key benefits of using Terraform Cloud to + - Hightlight the key benefits of using HCP Terraform to - Build infrastructure, - Standardize best practices, and @@ -401,14 +401,14 @@ class: col-3, header-adjust, header-adjust-minimal-list * Manually pull and commit the most up-to-date version to perform Terraform operations * Use and publish public modules as infrastructure templates -### Terraform Cloud -* Integrate Terraform Cloud into your existing workflows +### HCP Terraform +* Integrate HCP Terraform into your existing workflows * Ensure that only approved teams can access, edit, and provision infrastructure * Publish configuration modules in a private registry to define approved infrastructure patterns * Enforce best practices and security rules with policy as code framework ### Terraform Enterprise -* Set up a private instance of Terraform Cloud with dedicated support from HashiCorp +* Set up a private instance of HCP Terraform with dedicated support from HashiCorp * Accommodate advanced security and compliance requirements ??? @@ -420,19 +420,19 @@ class: col-3, header-adjust, header-adjust-minimal-list - Terraform contains everything you need to configure, plan and deploy -## Terraform Cloud -- Terraform Cloud is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments with Terraform +## HCP Terraform +- HCP Terraform is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments with Terraform -- Terraform Cloud provides features to manage user access, assign team permissions, automate integrations, host private resources, enforce policies, conduct audit, etc. +- HCP Terraform provides features to manage user access, assign team permissions, automate integrations, host private resources, enforce policies, conduct audit, etc. ## Terraform Enteprise -- Terraform Enterprise is private instance of Terraform Cloud deployed in a private environment with dedicated support from HashiCorp. +- Terraform Enterprise is private instance of HCP Terraform deployed in a private environment with dedicated support from HashiCorp. - Terraform Enterprise appeals to security conscious organizations that must accommodate advanced security and compliance requirements. --- -name: terraform-cloud +name: hcp-terraform class: col-2, header-adjust, minimal-list -# Terraform Cloud +# HCP Terraform ### Single control plane for provisioning * Fully-managed, infrastructure-as-code cloud service @@ -443,21 +443,21 @@ class: col-2, header-adjust, minimal-list * Enterprise features to provide advanced security, compliance and governance -![Terraform Cloud](images/terraform_cloud.svg) +![HCP Terraform](images/terraform_cloud.svg) ??? -# Terraform Cloud +# HCP Terraform -## Why Terraform Cloud? +## Why HCP Terraform? -- Terraform Cloud enables infrastructure automation for provisioning, compliance, and management of any cloud, datacenter, and service. +- HCP Terraform enables infrastructure automation for provisioning, compliance, and management of any cloud, datacenter, and service. -- Terraform Cloud provides infrastructure automation as a service, is free to get started, and has an in-place upgrade to paid option. +- HCP Terraform provides infrastructure automation as a service, is free to get started, and has an in-place upgrade to paid option. -- Terraform Cloud is not the same as Terraform Community Edition. Terraform Cloud is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. +- HCP Terraform is not the same as Terraform Community Edition. HCP Terraform is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. --- -name: terraform-cloud-build +name: hcp-terraform-build class: col-2, header-adjust, minimal-paragraph # Build infrastructure remotely with your team @@ -477,11 +477,11 @@ Review and comment on plans before executing any change to infrastructure # Build infrastructure remotely with your team - This slide is about **`team collaboration`** across an organization. -- Terraform Cloud provides a number of features for teams to collaborate with a common purpose. +- HCP Terraform provides a number of features for teams to collaborate with a common purpose. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a story that fits your narrative. For example: -1. **Remote state storage**: Remove a vulnerable part of the process by storing the deployment state in Terraform Cloud, where it is stored in an encrypted format at rest. +1. **Remote state storage**: Remove a vulnerable part of the process by storing the deployment state in HCP Terraform, where it is stored in an encrypted format at rest. 2. **Flexible workflows**: Allow practitioners to use the apprach that works best for their situation. @@ -490,7 +490,7 @@ Review and comment on plans before executing any change to infrastructure 4. **Collaborate on infrastructure changes**: Each team is responsible for their domain of expertise. --- -name: terraform-cloud-standard +name: hcp-terraform-standard class: col-3, header-adjust, minimal-list # Standardize best practices ### Private registry @@ -506,7 +506,7 @@ class: col-3, header-adjust, minimal-list # Standardize best practices - This slide is about **`business calibration`** when adopting a service for deployment automation. -- Terraform Cloud introduces workflow features for teams to support typical enterprise requirements. +- HCP Terraform introduces workflow features for teams to support typical enterprise requirements. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a point that fits your narrative. For example: @@ -517,14 +517,14 @@ class: col-3, header-adjust, minimal-list 3. **Policy as code**: Remove risk with standard deployments, avoiding common misconfigurations, maintaining security standards and confirming compliance requirements. --- -name: terraform-cloud-cicd +name: hcp-terraform-cicd class: col-2, header-adjust, minimal-paragraph # Integrating into your CI/CD pipelines ###CI/CD integration Integrate Terraform runs into your existing toolchain for improved automation ###API-driven Operations -Build Terraform Cloud into your existing automation workflows +Build HCP Terraform into your existing automation workflows ###Concurrent runs Increase your team’s velocity by adding concurrent runs to your plan @@ -535,17 +535,17 @@ Execute Terraform runs from behind your firewall or connect to other private res # Standardize best practices - This slide is about **`process optimization`** in service delivery. -- Terraform Cloud integrates in various forms to enhance existing service delivery models. +- HCP Terraform integrates in various forms to enhance existing service delivery models. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a point that fits your narrative. For example: -1. **CI/CD integration**: Inject automation into your service delivery practice, where Terraform Cloud works alongside your service management requests and fullfilment channels. +1. **CI/CD integration**: Inject automation into your service delivery practice, where HCP Terraform works alongside your service management requests and fullfilment channels. 2. **Concurrent runs**: Accelerate delivery and control the rate of deployments; support seasonal, high-intensity service delivery workloads. -3. **API-driven Operations**: Support an API-first methodology and align with your existing service management practices. Terraform Cloud offers multiple API-driven methods to complement the chain of operations in existing automation workflows. +3. **API-driven Operations**: Support an API-first methodology and align with your existing service management practices. HCP Terraform offers multiple API-driven methods to complement the chain of operations in existing automation workflows. -4. **Private datacenter connectivity**: Extend Terraform Cloud features and workflow steps to private networks that include Cloud and traditional datacenter environments. +4. **Private datacenter connectivity**: Extend HCP Terraform features and workflow steps to private networks that include Cloud and traditional datacenter environments. --- name: lab-guidance-01 @@ -559,14 +559,14 @@ class: col-2, adjust-minimal-sub-list * Set up Code Editor * Try out Terraform commands -1. Terraform Cloud Setup - * Sign-up or log in to Terraform Cloud +1. HCP Terraform Setup + * Sign-up or log in to HCP Terraform * Create a Plus Tier trial organization - * Generate a personal Terraform Cloud token + * Generate a personal HCP Terraform token 1. Safekeeping Your Terraform State * Deploy a working app environment in GCP - * Use Terraform Cloud to manage Terraform state + * Use HCP Terraform to manage Terraform state - Quiz 1 - Terraform Remote State ??? @@ -607,14 +607,14 @@ class: review, no-footer 1. The adoption journey of infrastructure-as-code with Terraform includes phases of maturity for individuals, groups, and organizations -2. Terraform Cloud is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments +2. HCP Terraform is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments ??? # Chapter 1 review 1. The adoption patterns we see, both among our large-scale users as well as individual contributors, involve multiple adaptive stages. The central idea remains uniform in that automation should be standardized as shared practice, and that governance guidelines are needed to support emerging requirements. -2. Terraform Cloud is not the same as Terraform Community Edition. Terraform Cloud is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. We use Terraform Cloud to manage the lifecyle of infrastructure deployemnts using Terraform [Community]. +2. HCP Terraform is not the same as Terraform Community Edition. HCP Terraform is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. We use HCP Terraform to manage the lifecyle of infrastructure deployemnts using Terraform [Community]. --- name: Access-Control class: title, no-footer @@ -628,9 +628,9 @@ class: title, no-footer This chapter is organized in three sections: 1. The Core Terraform Workflow - - Review the benefits of the Core Terraform Workflow with Terraform Cloud + - Review the benefits of the Core Terraform Workflow with HCP Terraform -2. Shared Resources in Terraform Cloud +2. Shared Resources in HCP Terraform - Projects and Workspaces - Deployment State @@ -638,7 +638,7 @@ This chapter is organized in three sections: 3. Team Collaboration - - Hightlight how teams access shared resources in Terraform Cloud + - Hightlight how teams access shared resources in HCP Terraform - How to apply the resources in a typical project lifecycle **INSTRUCTOR NOTE**: Remind the audience the topics above are showcased in the lab portion. @@ -697,28 +697,28 @@ class: col-3, header-adjust, header-adjust-minimal-list ![:scale 40%](images/adoption_journey_individual.svg) --- -name: core-terraform-workflow-with-tfc +name: core-terraform-workflow-with-hcp-terraform class: col-3, header-adjust, header-adjust-minimal-list -# The Core Terraform Workflow and Terraform Cloud +# The Core Terraform Workflow and HCP Terraform ### Write * Author infrastructure as code and maintain in VCS * Team members work on authoring config until it is ready to propose changes via a pull request -* Terraform Cloud secures state, input variables, and authorized access +* HCP Terraform secures state, input variables, and authorized access
### Plan * Automated, speculative plans review changes before applying so team members can quickly analyze the full plan details -* Terraform Cloud estimates monthly costs of deployment -* Terraform Cloud evaluates policies against the plan to determine compliance with policy-as-code logic +* HCP Terraform estimates monthly costs of deployment +* HCP Terraform evaluates policies against the plan to determine compliance with policy-as-code logic ### Apply * Team members trigger __apply__ directives via CLI, API or VCS change control -* Authorized Terraform Cloud users can approve or reject deployments -* Terraform Cloud can integrate third-party tools and services to manage cost, security, and compliance; Or, to enhance your workflow with custom logic +* Authorized HCP Terraform users can approve or reject deployments +* HCP Terraform can integrate third-party tools and services to manage cost, security, and compliance; Or, to enhance your workflow with custom logic ??? -# The Core Terraform Workflow and Terraform Cloud +# The Core Terraform Workflow and HCP Terraform - There are still only three stages on the Core Terraform Workflow, but there are significant improvements in the approach to manage deployments. For instance: @@ -732,13 +732,13 @@ class: col-3, header-adjust, header-adjust-minimal-list ![:scale 40%](images/adoption_journey_multiple_groups.svg) --- -name: tfc-workspaces +name: hcp-terraform-workspaces class: col-2, minimal-list # Projects and Workspaces -- Terraform Cloud organizes infrastructure collections with projects and workspaces that align to teams +- HCP Terraform organizes infrastructure collections with projects and workspaces that align to teams -- A project is a logical grouping of Terraform Cloud workspaces +- A project is a logical grouping of HCP Terraform workspaces - Workspaces contain everything Terraform needs to manage a given collection of infrastructure, and separate workspaces function like completely separate working entities @@ -755,19 +755,19 @@ class: col-2, minimal-list - Grouping deployment types by department - Grouping deployment types by team -- Workspaces fit into Projects to execute on the actual deployments. Each workspace follows logic for execution and access rules, policies, resources, integrations, etc. are inherent from the project or Terraform Cloud organization. +- Workspaces fit into Projects to execute on the actual deployments. Each workspace follows logic for execution and access rules, policies, resources, integrations, etc. are inherent from the project or HCP Terraform organization. --- -name: tfc-state +name: hcp-terraform-state class: col-2, minimal-list # Deployment State -- Terraform Cloud retains historical state versions, available for analysis of infrastructure changes over time +- HCP Terraform retains historical state versions, available for analysis of infrastructure changes over time - Authorized users can download and manipulate state to manually import, taint, move, or rename existing resources to match a drift in configuration - Authorized users can roll back to a previous state version with the UI -- Terraform Cloud uses state to measure drift with automated Health Assessments +- HCP Terraform uses state to measure drift with automated Health Assessments ![Browser](images/workspace-state.svg) ??? @@ -780,13 +780,13 @@ class: col-2, minimal-list - All state information is fully encrypted at rest, where each object is encrypted with a unique encryption key. --- -name: tfc-variables +name: hcp-terraform-variables class: col-2, minimal-list # Deployment Variables -- Terraform Cloud supports a global scope with **variable sets**. These can be exposed globaly or to select workspaces +- HCP Terraform supports a global scope with **variable sets**. These can be exposed globaly or to select workspaces -- Terraform Cloud workspaces use local variables - may override variable sets +- HCP Terraform workspaces use local variables - may override variable sets - Variable subsets include @@ -798,7 +798,7 @@ class: col-2, minimal-list
-![Terraform Cloud Variables](images/deployment_variables.svg) +![HCP Terraform Variables](images/deployment_variables.svg) ??? # Deployment Variables @@ -812,29 +812,29 @@ class: col-2, minimal-list - Things that are configured during the deployment. Consider, the internal ID or a Cloud VPC, the ARN of a security group, the URL or a storage bucket. These can be more applicable to workspace variables. --- -name: tfc-user-permissions +name: hcp-terraform-user-permissions class: col-2, minimal-list # Permissions Model -- Users must belong to a team with appropriate grant permissions to perform actions in Terraform Cloud +- Users must belong to a team with appropriate grant permissions to perform actions in HCP Terraform - The permissions model splits into organization-level and workspace-level permissions - Organization owners can grant teams permissions to manage policies, projects and workspaces, VCS settings, private registry providers and modules, and policy overrides across an organization -![Terraform Cloud Permissions Model](images/permissions_model.svg) +![HCP Terraform Permissions Model](images/permissions_model.svg) ??? # Permissions Model -- The permissions model splits into into organization-level and workspace-level permissions. This is the best combination to align administrators, producers and consumers to manage, create and consume resources via Terraform Cloud. +- The permissions model splits into into organization-level and workspace-level permissions. This is the best combination to align administrators, producers and consumers to manage, create and consume resources via HCP Terraform. -- The organization-level permissions use an `Implicit-Deny` - which means Terraform Cloud administration is subject to assignment. In this model, teams fucntion based on their permissions and membership. +- The organization-level permissions use an `Implicit-Deny` - which means HCP Terraform administration is subject to assignment. In this model, teams fucntion based on their permissions and membership. -- The workspace-level permissions have `Implied Permissions` - where Terraform Cloud provides most common functions. Under this model permissions imply other permissions; for example, permission to queue plans also grants permission to read runs. +- The workspace-level permissions have `Implied Permissions` - where HCP Terraform provides most common functions. Under this model permissions imply other permissions; for example, permission to queue plans also grants permission to read runs. -- Q: What complements the permissions model? A: The alignment of Terraform Cloud teams with external teams via single-sign-on (SSO). +- Q: What complements the permissions model? A: The alignment of HCP Terraform teams with external teams via single-sign-on (SSO). --- -name: tfc-team-collaboration +name: hcp-terraform-team-collaboration class: col-2, header-adjust-minimal-list # Team collaboration There are three main elements to the Terraform collaboration experience: @@ -842,11 +842,11 @@ There are three main elements to the Terraform collaboration experience: - **Centralized plans and applies**: Safely run Terraform plans and applies in one location where collaborators can review and make decisions together - **State management**: Store, secure, lock, and version Terraform state files -![Terraform Cloud Permissions Model](images/collaboration_experience.svg) +![HCP Terraform Permissions Model](images/collaboration_experience.svg) ??? # Team collaboration -- The structure of the Möbius strip visual reflects a familiar way to describe a lifecycle process. There are many examples of that idea, and our intent is to explain where Terraform Cloud provides value. +- The structure of the Möbius strip visual reflects a familiar way to describe a lifecycle process. There are many examples of that idea, and our intent is to explain where HCP Terraform provides value. - These concepts likely overlap with existing frameworks and that is why integration resonates with sophisticated environments. @@ -866,10 +866,10 @@ class: col-2, adjust-minimal-sub-list * Explore Variable Sets * Compare workspace variables -1. Working with Teams in Terraform Cloud +1. Working with Teams in HCP Terraform * Create Organization Teams * Assign Workspace Permissions to Teams - * Invite Terraform Cloud users to join Teams + * Invite HCP Terraform users to join Teams - Quiz 2 - Secure Variables @@ -893,16 +893,16 @@ name: chapter-2-review class: review, no-footer # Chapter 2 review -1. Terraform Cloud permissions model splits into organization and workspace levels +1. HCP Terraform permissions model splits into organization and workspace levels -2. Resource administration in Terraform Cloud defaults to an implicit deny-all model, and teams require global, project or workspace assignments +2. Resource administration in HCP Terraform defaults to an implicit deny-all model, and teams require global, project or workspace assignments ??? # Chapter 2 review -1. When teams are intent in formalizing their approach to automated infrastructure deployment with Terraform, there need to be fundamental principals to support a responsible use of Terraform Cloud. The permissions model is a core principle to support governance and responsible use of IaC automation. Without a permissions model, teams operated based on different opinions without self-supervision. +1. When teams are intent in formalizing their approach to automated infrastructure deployment with Terraform, there need to be fundamental principals to support a responsible use of HCP Terraform. The permissions model is a core principle to support governance and responsible use of IaC automation. Without a permissions model, teams operated based on different opinions without self-supervision. -2. When teams have different responsibilities, the platform instrumentation should allow for effective changes at a group level to support roles, not individual identities. Having an implicit `deny-all` for the Terraform Cloud organization, and `implied permissions` for teams and workspaces accelerates the effective purpose of IaC automation. +2. When teams have different responsibilities, the platform instrumentation should allow for effective changes at a group level to support roles, not individual identities. Having an implicit `deny-all` for the HCP Terraform organization, and `implied permissions` for teams and workspaces accelerates the effective purpose of IaC automation. --- name: VCS-and-Governance @@ -937,46 +937,46 @@ This chapter is organized in three sections: **INSTRUCTOR NOTE**: Remind the audience that the hands-on portions of the lab demonstrate the topics above. --- -name: tfc-vcs-workflow +name: hcp-terraform-vcs-workflow class: col-2, minimal-list # VCS Connections -- Access a list of repositories and link to your private module registry, policy sets and workspaces in Terraform Cloud +- Access a list of repositories and link to your Terraform Private Registry, policy sets and workspaces in HCP Terraform -- Terraform Cloud downloads the contents of a repository based on workflow triggers +- HCP Terraform downloads the contents of a repository based on workflow triggers -- Terraform Cloud supports Azure DevOps, BitBucket, GitHub, and GitLab +- HCP Terraform supports Azure DevOps, BitBucket, GitHub, and GitLab ![VCS Workflow Overview](images/vcs_workflow_overview.svg) ??? # VCS Connections -- Terraform Cloud uses VCS connection to link directly to assets in repos +- HCP Terraform uses VCS connection to link directly to assets in repos - VCS connections are configured once and used for three specific types of assets: - 1. Terraform Modules to list in the private Terraform Cloud Registry + 1. Terraform Modules to list in the Terraform Private Registry 2. Policy collections to align with Policy Sets 3. Terraform deployments in a 1:1 relationship with Workspaces -- It is important to remember that Terraform Cloud Worspaces can use up to three types of workflows to trigger a run: 1- `CLI`, 2- `VCS` and 3- `API`. Using VCS satisfies one of these workflow patterns. +- It is important to remember that HCP Terraform Worspaces can use up to three types of workflows to trigger a run: 1- `CLI`, 2- `VCS` and 3- `API`. Using VCS satisfies one of these workflow patterns. --- -name: tfc-vcs-connection +name: hcp-terraform-vcs-connection class: col-2, minimal-list # VCS Workflow -- Workspaces register webhooks with your VCS provider, and Terraform Cloud gets notified of new commits to a branch +- Workspaces register webhooks with your VCS provider, and HCP Terraform gets notified of new commits to a branch -- With VCS integration, Terraform Cloud can automatically initiate a run on a dedicated Terraform Cloud worker +- With VCS integration, HCP Terraform can automatically initiate a run on a dedicated HCP Terraform worker -- Terraform Cloud makes code review easier by automatically predicting how pull requests affect infrastructure with speculative plans +- HCP Terraform makes code review easier by automatically predicting how pull requests affect infrastructure with speculative plans ![VCS Connection Overview](images/vcs_connection_overview.svg) ??? # VCS Workflow -- A VCS connection is established at the administrative level for the VCS provider and Terraform Cloud. +- A VCS connection is established at the administrative level for the VCS provider and HCP Terraform. - From the illustration: @@ -984,24 +984,24 @@ class: col-2, minimal-list 2. Notifications are triggered by pull requests and merges. - 3. The Webhook notifies the associated Terraform Cloud workspace. + 3. The Webhook notifies the associated HCP Terraform workspace. - 4. Terraform Cloud securely retrieves the IaC collection to a secure location in Terraform Cloud. The location is not exposed outside of Terraform Cloud. + 4. HCP Terraform securely retrieves the IaC collection to a secure location in HCP Terraform. The location is not exposed outside of HCP Terraform. - 5. With a pull request, Terraform Cloud runs a speculative plan. + 5. With a pull request, HCP Terraform runs a speculative plan. 6. The results are processed back to the VCS pull request for further processing. 7. With a successful plan, an other validing tests, the pull request is merged. - 8. With an authorized VCS merge, Terraform Cloud initiates a new run and completes the entire set of steps to deploy the environment. + 8. With an authorized VCS merge, HCP Terraform initiates a new run and completes the entire set of steps to deploy the environment. --- -name: tfc-policy-as-code +name: hcp-terraform-policy-as-code class: col-2, minimal-list, constrain-image # Policy As Code -- Terraform Cloud enforces rules with policies written with HashiCorp Sentinel or Open Policy Agent (OPA) +- HCP Terraform enforces rules with policies written with HashiCorp Sentinel or Open Policy Agent (OPA) - Policies are expressed as code and grouped into policy sets @@ -1040,7 +1040,7 @@ The categories above are not exhaustive and there are many other optional catego >> A development group should not deploy a fleet of VMs, any with 8-32 cores and/or 16-64GB memory, on a Friday afternoon past 3PM. --- -name: tfc-policy-as-code-validation +name: hcp-terraform-policy-as-code-validation class: col-2, minimal-list # Automated Policy Validation @@ -1079,7 +1079,7 @@ class: col-2, minimal-list 4. When a policy check fails, the assigned enforcement level determines whether a user with authority can override. --- -name: tfc-vcs-automation +name: hcp-terraform-vcs-automation class: col-3, header-adjust, header-adjust-minimal-paragraph # Automated Testing @@ -1109,7 +1109,7 @@ class: col-3, header-adjust, header-adjust-minimal-paragraph - **Unit testing** looks at expected values in the Terraform plan. -- **Contract testing** compares infrastructure state. Highlight that Terraform Cloud allows state sharing between workspaces to explore key informational data points. +- **Contract testing** compares infrastructure state. Highlight that HCP Terraform allows state sharing between workspaces to explore key informational data points. - **Integration testing** compares ___real___ resources and their interaction. These often include functional, policy and security domains. You can introduce `Run Tasks` as the vehicle to perform this type of testing. @@ -1155,7 +1155,7 @@ class: col-2, adjust-minimal-sub-list **INSTRUCTOR NOTES**: - This is the longest lab portion of the workshop. -- It is possibly the most challenging part for some participants as they have to use GitHub in combination with Terraform Cloud. +- It is possibly the most challenging part for some participants as they have to use GitHub in combination with HCP Terraform. - It is important to remind your audience that the lab is available for 5 hours. - If you have extended the Instruqt Invite beyond the workshop time, you can emphasize. @@ -1164,15 +1164,15 @@ name: chapter-3-review class: review, no-footer # Chapter 3 review -1. Terraform Cloud supports CLI, VCS and API workflows, adapting to different code-management practices +1. HCP Terraform supports CLI, VCS and API workflows, adapting to different code-management practices -2. Terraform Cloud enables testing and validation with policy-as-code, and sustains maintenance with deployment health-checks and alerting +2. HCP Terraform enables testing and validation with policy-as-code, and sustains maintenance with deployment health-checks and alerting ??? # Chapter 3 review -1. Terraform execution is driven by different priorities and the workflows in Terraform Cloud are adaptive. VCS-driven workflows are important for groups that are focused specifically in Infrastructure-as-Code delivery. VCS-driven workflows shorten the knowledge gap between newhires and veterans because they use a common set of defined practices; and VCS-driven workflows flattens the adoption curve for consumers because not everyone needs to learn Terraform. +1. Terraform execution is driven by different priorities and the workflows in HCP Terraform are adaptive. VCS-driven workflows are important for groups that are focused specifically in Infrastructure-as-Code delivery. VCS-driven workflows shorten the knowledge gap between newhires and veterans because they use a common set of defined practices; and VCS-driven workflows flattens the adoption curve for consumers because not everyone needs to learn Terraform. -2. Policy validation is increasingly necessary for all aspect of \[Work\]-as-Code practices. In our case, we truly believe that there should not be ___#YOLO-driven development!___ when dealing with infrastructure deployments. Terraform Cloud provides deployment health-checks and alerting mechanisms to provide continual coverage of emerging changes in infrastructure deployments. +2. Policy validation is increasingly necessary for all aspect of \[Work\]-as-Code practices. In our case, we truly believe that there should not be ___#YOLO-driven development!___ when dealing with infrastructure deployments. HCP Terraform provides deployment health-checks and alerting mechanisms to provide continual coverage of emerging changes in infrastructure deployments. --- name: Modules-and-API class: title, no-footer @@ -1188,13 +1188,13 @@ This chapter is organized in three sections: - Why is the Public Regitry important? - What is the value of Terraform modules? - - The advantage of the Terraform Cloud Private Module Registry (PMR) + - The advantage of the HCP Terraform Private Registry 2. Business Process Models - Trusted Orchestrator - VCS coordination - - Terraform Cloud + - HCP Terraform 3. API-driven workflows @@ -1222,7 +1222,7 @@ class: col-2, minimal-list - The progression of the Terraform journey into teams naturally leads to Terraform modules. These are like templates that teams often customize and use in deployments. -- HashiCorp is comoditazing this centralized registry and extending it to Policy-as-Code and Run Tasks. **Policy-As-Code** are libraries of policies that can be used within Terraform Cloud. **Run Tasks** are third-party integrations to tools and services to manage cost, security, compliance and more. +- HashiCorp is comoditazing this centralized registry and extending it to Policy-as-Code and Run Tasks. **Policy-As-Code** are libraries of policies that can be used within HCP Terraform. **Run Tasks** are third-party integrations to tools and services to manage cost, security, compliance and more. --- name: terraform-modules @@ -1233,7 +1233,7 @@ class: col-2, minimal-list - Producer groups create curated modules as standard, templated offerings with configurable properties -- Modules are maintained in VCS repositories and published to a private registry in Terraform Cloud +- Modules are maintained in VCS repositories and published to a private registry in HCP Terraform ![Terraform Modules](images/terraform_modules.svg) ??? @@ -1244,39 +1244,39 @@ class: col-2, minimal-list - Modules in the Terraform Registry are free to use, and Terraform can download them automatically with an appropriate source and version in a module call block. --- -name: tfc-private-registry +name: hcp-terraform-private-registry class: col-2, minimal-list -# Private Module Registry +# Terraform Private Registry -- Terraform Cloud includes a private registry where teams can set up modules and providers from private VCS repositories +- HCP Terraform includes a private registry where teams can set up modules and providers from private VCS repositories - Many organizations use modules, providers, or policies that cannot or do not need to be publicly available -- Practitioners can copy modules from the public Terraform Registry, customize a private version, and publish to their Private Module Registry in Terraform Cloud +- Practitioners can copy modules from the public Terraform Registry, customize a private version, and publish to their Terraform Private Registry in HCP Terraform ![PMR Workflow](images/pmr_technical_workflow.svg) ??? -# Private Module Registry -- In Terraform Cloud, modules can be privatized to support the idea of a safe sandbox. +# Terraform Private Registry +- In HCP Terraform, modules can be privatized to support the idea of a safe sandbox. - The further a module is configured, the least number of choices consumers need to make to automate their deployments. -- Private modules can referenced arbitrarily, but access to the resource follows the Terraform Cloud permissions model - meaning only teams with access privileges are able to access the module in the private registry, and execution of the code is only possible within a workspace in the same Terraform Cloud organization. +- Private modules can referenced arbitrarily, but access to the resource follows the HCP Terraform permissions model - meaning only teams with access privileges are able to access the module in the private registry, and execution of the code is only possible within a workspace in the same HCP Terraform organization. **INSTRUCTOR NOTE**: -> You can bring up the idea of the Configuration Designer in Terraform Cloud - which leads to no-code provisioning. +> You can bring up the idea of the Configuration Designer in HCP Terraform - which leads to no-code provisioning. > No-code provisioning lets users deploy infrastructure in modules without writing any Terraform configuration, which makes your standards even easier to comply with, and removes the dependency on infrastructure teams or ticketing systems to give developers their required resources. --- -name: tfc-api +name: hcp-terraform-api class: col-2, minimal-list # Terraform API -- Terraform Cloud supports a rich HTTP API to perform most operations, replacing UI directives and CLI commands +- HCP Terraform supports a rich HTTP API to perform most operations, replacing UI directives and CLI commands -- The TFC Terraform Provider is a practical API implementation for automating Terraform Cloud managment with Terraform (HCL) configuration code +- The TFC Terraform Provider is a practical API implementation for automating HCP Terraform managment with Terraform (HCL) configuration code - The Terraform CDK supports the following: @@ -1294,20 +1294,20 @@ class: col-2, minimal-list # Terraform API - Mature IaC practices evolve to delegate tasks through automation. Terraform can be fully operated via API allowing organizations to easily integrate it into their existing deployment processes. -- Terraform Cloud supports multiple instrumentation technologies to implemented automated provisioning. The idea is to support adequate technology frameworks that support a service management practice. +- HCP Terraform supports multiple instrumentation technologies to implemented automated provisioning. The idea is to support adequate technology frameworks that support a service management practice. -- As a whole, the Terraform community provides testing frameworks, pipeline utilities, programming libraries, scripted templates, and repeatable examples to implement Terraform. What is relevant to emphasize is that all of these are 100% compatible with Terraform Cloud, and the time and effort to accomdate those resources is minimal. +- As a whole, the Terraform community provides testing frameworks, pipeline utilities, programming libraries, scripted templates, and repeatable examples to implement Terraform. What is relevant to emphasize is that all of these are 100% compatible with HCP Terraform, and the time and effort to accomdate those resources is minimal. - ->> The real value is the utility of the Terraform echo system and the benefits of Terraform Cloud combined. In blunt words, technology is not a barrier... teams need to commit to the adoption journey. +>> The real value is the utility of the Terraform echo system and the benefits of HCP Terraform combined. In blunt words, technology is not a barrier... teams need to commit to the adoption journey. --- -name: tfc-api-workflows +name: hcp-terraform-api-workflows class: col-2, minimal-list # Service Management -- Terraform Cloud operations can be entirely managed via API, allowing organizations to integrate automated deployments in their existing business processes easily +- HCP Terraform operations can be entirely managed via API, allowing organizations to integrate automated deployments in their existing business processes easily - Trusted orchestrators use the Terraform API to procure resources and coordinate runtime operations @@ -1316,22 +1316,22 @@ class: col-2, minimal-list ![Terraform API](images/terraform_workflow.svg) ??? # Service Management -- In context of service management, the most visible value of Terraform Cloud is the ability to integrate resources, workflow and support capabilites seamlessly. +- In context of service management, the most visible value of HCP Terraform is the ability to integrate resources, workflow and support capabilites seamlessly. -- Terraform Cloud is a cloud service and every functional area is designed with the intention to hand-off to a different one. +- HCP Terraform is a cloud service and every functional area is designed with the intention to hand-off to a different one. -- In the diagram, the main highlight is the HashiCorp accent in pink, which symbolizes the functional areas where Terraform Cloud operates within the service workflow. +- In the diagram, the main highlight is the HashiCorp accent in pink, which symbolizes the functional areas where HCP Terraform operates within the service workflow. -- The illustration is simplified and incomplete as there are many other steps in a formal service management process. As in the illustration of the [Möbius strip](#tfc-team-collaboration), there are many examples of a process idea, and our intent is to explain where Terraform Cloud provides value on day-one. +- The illustration is simplified and incomplete as there are many other steps in a formal service management process. As in the illustration of the [Möbius strip](#hcp-terraform-team-collaboration), there are many examples of a process idea, and our intent is to explain where HCP Terraform provides value on day-one. --- -name: tfc-api-cicd +name: hcp-terraform-api-cicd class: center_p # CICD Integration -Terraform Cloud integrates into your existing CI/CD pipelines, IT service management interfaces, and version control system processes. +HCP Terraform integrates into your existing CI/CD pipelines, IT service management interfaces, and version control system processes. -![Terraform Cloud CIDC](images/terraform_cloud_cicd.svg) +![HCP Terraform CIDC](images/terraform_cloud_cicd.svg) ??? # CICD Integration - The illustration showcases the type of service layers involved in a CI/CD process. Here is a quick breakdown of each from left to right: @@ -1342,7 +1342,7 @@ Terraform Cloud integrates into your existing CI/CD pipelines, IT service manage | ServiceNow | | IT Service management agent that handles requests and triggers work | | Jenkins | | Trusted orchestrator to provide step-by-step functions to deliver the infrastructure | | GitHub | | VCS to manage the lifecycle of IaC, Modules and PaC | -| Terraform Cloud | | Cloud service to manage the lifecyle of an IaC deployment using Terraform | +| HCP Terraform | | Cloud service to manage the lifecyle of an IaC deployment using Terraform | | GCP | | Target environment | > **NOTABLY MISSING** is a secrets management service to safeguard secrets and to manage the lifecyle of those secrets. @@ -1355,7 +1355,7 @@ Terraform Cloud integrates into your existing CI/CD pipelines, IT service manage > | :--------------------: | --- | :------: | --- | :----------: | --- | :----: | > | Korn
C
Bourne | | BladeLogic
Opsware
VMware | | Ansible
Chef
Puppet
Terraform | | Terraform
ARM templates
CloudFormation
GC Deployment Manager | --> -- The overall infrastructure automation space is not new and there have been multiple generations of promising implementation solutions. The true realization of IaC had not happened until Terraform settled as the de facto solution. Terraform Cloud is a next-generation service to support that realization moving forward. +- The overall infrastructure automation space is not new and there have been multiple generations of promising implementation solutions. The true realization of IaC had not happened until Terraform settled as the de facto solution. HCP Terraform is a next-generation service to support that realization moving forward. - It important to highlight the innovative approach from HashiCorp in the IaC space since 2012. @@ -1364,10 +1364,10 @@ name: lab-guidance-04 class: col-2, adjust-minimal-sub-list # Workshop - Part Four -1. Private Module Registry +1. Terraform Private Registry * Implement a Terraform module from the [Terraform Registry](https://registry.terraform.io) * Clone a Terraform Registry module to your private VCS - * Implement a module from your Private Module Registry + * Implement a module from your Terraform Private Registry 1. API Driven Workflows * Test core HTTP API methods @@ -1375,7 +1375,7 @@ class: col-2, adjust-minimal-sub-list * Explore API wrappers concepts * Use continuous integration with GitHub Actions -- Quiz 4 - Private Module Registry +- Quiz 4 - Terraform Private Registry - Clean up @@ -1403,7 +1403,7 @@ class: col-2, adjust-minimal-sub-list - The __Clean up__ challenge removes the following: - GCP deployment of the Hashicat app - - Terraform Cloud configurations + - HCP Terraform configurations - GitHub repo of `hashicat-app` - The __Clean up__ challenge does not remove the cloned module from the Terraform Registry. @@ -1414,13 +1414,13 @@ class: review, no-footer 1. The Private Registry establishes a service catalogue of infrastructure deployments and options for no-code -2. Terraform Cloud supports rich API options that adapt to your existing service model workflows and integrate agnostically into your delivery pipelines +2. HCP Terraform supports rich API options that adapt to your existing service model workflows and integrate agnostically into your delivery pipelines ??? # Chapter 4 review -1. The Public Terraform Registry and the Private Module Registry (PMR) serve a similar function purpose. The main difference is that the PMR is designed to support privacy and security controls. +1. The Public Terraform Registry and the Terraform Private Registry serve a similar function purpose. The main difference is that the PMR is designed to support privacy and security controls. -2. When using Terraform Cloud, stake-holders should expect to maximize the use of automation to support service management processes via service delivery pipelines. The Terraform Cloud API promotes an API-first approach and it contains a vast array of instrumentation options to satisfy most use cases. +2. When using HCP Terraform, stake-holders should expect to maximize the use of automation to support service management processes via service delivery pipelines. The HCP Terraform API promotes an API-first approach and it contains a vast array of instrumentation options to satisfy most use cases. --- name: additional-resources class: header-adjust, minimal @@ -1430,7 +1430,7 @@ Learn at your own pace in one place with reference docs, step by step tutorials, ### HashiCorp Community Join our forum or a user group to engage and learn from the broader community. `https://www.hashicorp.com/community` ### HashiCorp Forum -Terraform, Terraform Cloud, Terraform Enterprise, and CDK for Terraform use cases, questions, and best practices discussions. `https://discuss.hashicorp.com` +Terraform, HCP Terraform, Terraform Enterprise, and CDK for Terraform use cases, questions, and best practices discussions. `https://discuss.hashicorp.com` ??? # Additional Resources diff --git a/docs/slides/gcp/terraform-cloud/images/Terraform_VerticalLogo_FullColor.png b/docs/slides/gcp/hcp-terraform/images/Terraform_VerticalLogo_FullColor.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/Terraform_VerticalLogo_FullColor.png rename to docs/slides/gcp/hcp-terraform/images/Terraform_VerticalLogo_FullColor.png diff --git a/docs/slides/gcp/terraform-cloud/images/add_a_module.png b/docs/slides/gcp/hcp-terraform/images/add_a_module.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/add_a_module.png rename to docs/slides/gcp/hcp-terraform/images/add_a_module.png diff --git a/docs/slides/gcp/terraform-cloud/images/aws_add_a_module.png b/docs/slides/gcp/hcp-terraform/images/aws_add_a_module.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/aws_add_a_module.png rename to docs/slides/gcp/hcp-terraform/images/aws_add_a_module.png diff --git a/docs/slides/gcp/terraform-cloud/images/aws_add_policy_to_policy_set.png b/docs/slides/gcp/hcp-terraform/images/aws_add_policy_to_policy_set.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/aws_add_policy_to_policy_set.png rename to docs/slides/gcp/hcp-terraform/images/aws_add_policy_to_policy_set.png diff --git a/docs/slides/gcp/terraform-cloud/images/aws_confirm_destroy.png b/docs/slides/gcp/hcp-terraform/images/aws_confirm_destroy.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/aws_confirm_destroy.png rename to docs/slides/gcp/hcp-terraform/images/aws_confirm_destroy.png diff --git a/docs/slides/gcp/terraform-cloud/images/aws_pmr.png b/docs/slides/gcp/hcp-terraform/images/aws_pmr.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/aws_pmr.png rename to docs/slides/gcp/hcp-terraform/images/aws_pmr.png diff --git a/docs/slides/gcp/terraform-cloud/images/aws_policy_name_and_mode.png b/docs/slides/gcp/hcp-terraform/images/aws_policy_name_and_mode.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/aws_policy_name_and_mode.png rename to docs/slides/gcp/hcp-terraform/images/aws_policy_name_and_mode.png diff --git a/docs/slides/gcp/terraform-cloud/images/aws_policy_set_settings.png b/docs/slides/gcp/hcp-terraform/images/aws_policy_set_settings.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/aws_policy_set_settings.png rename to docs/slides/gcp/hcp-terraform/images/aws_policy_set_settings.png diff --git a/docs/slides/gcp/terraform-cloud/images/change_to_local.png b/docs/slides/gcp/hcp-terraform/images/change_to_local.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/change_to_local.png rename to docs/slides/gcp/hcp-terraform/images/change_to_local.png diff --git a/docs/slides/gcp/terraform-cloud/images/checklist.jpg b/docs/slides/gcp/hcp-terraform/images/checklist.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/checklist.jpg rename to docs/slides/gcp/hcp-terraform/images/checklist.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/choose_an_org.png b/docs/slides/gcp/hcp-terraform/images/choose_an_org.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/choose_an_org.png rename to docs/slides/gcp/hcp-terraform/images/choose_an_org.png diff --git a/docs/slides/gcp/terraform-cloud/images/choose_org.png b/docs/slides/gcp/hcp-terraform/images/choose_org.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/choose_org.png rename to docs/slides/gcp/hcp-terraform/images/choose_org.png diff --git a/docs/slides/gcp/terraform-cloud/images/choose_training_org.png b/docs/slides/gcp/hcp-terraform/images/choose_training_org.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/choose_training_org.png rename to docs/slides/gcp/hcp-terraform/images/choose_training_org.png diff --git a/docs/slides/gcp/terraform-cloud/images/cloud_overview_gcp.png b/docs/slides/gcp/hcp-terraform/images/cloud_overview_gcp.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/cloud_overview_gcp.png rename to docs/slides/gcp/hcp-terraform/images/cloud_overview_gcp.png diff --git a/docs/slides/gcp/terraform-cloud/images/cloud_overview_generic.png b/docs/slides/gcp/hcp-terraform/images/cloud_overview_generic.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/cloud_overview_generic.png rename to docs/slides/gcp/hcp-terraform/images/cloud_overview_generic.png diff --git a/docs/slides/gcp/terraform-cloud/images/code_example.png b/docs/slides/gcp/hcp-terraform/images/code_example.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/code_example.png rename to docs/slides/gcp/hcp-terraform/images/code_example.png diff --git a/docs/slides/gcp/terraform-cloud/images/commitstrip_devops.jpg b/docs/slides/gcp/hcp-terraform/images/commitstrip_devops.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/commitstrip_devops.jpg rename to docs/slides/gcp/hcp-terraform/images/commitstrip_devops.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/create_a_new_policy.png b/docs/slides/gcp/hcp-terraform/images/create_a_new_policy.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/create_a_new_policy.png rename to docs/slides/gcp/hcp-terraform/images/create_a_new_policy.png diff --git a/docs/slides/gcp/terraform-cloud/images/create_a_new_policy_set_gui.png b/docs/slides/gcp/hcp-terraform/images/create_a_new_policy_set_gui.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/create_a_new_policy_set_gui.png rename to docs/slides/gcp/hcp-terraform/images/create_a_new_policy_set_gui.png diff --git a/docs/slides/gcp/terraform-cloud/images/create_policy_button.png b/docs/slides/gcp/hcp-terraform/images/create_policy_button.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/create_policy_button.png rename to docs/slides/gcp/hcp-terraform/images/create_policy_button.png diff --git a/docs/slides/gcp/terraform-cloud/images/create_repo_workspace.png b/docs/slides/gcp/hcp-terraform/images/create_repo_workspace.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/create_repo_workspace.png rename to docs/slides/gcp/hcp-terraform/images/create_repo_workspace.png diff --git a/docs/slides/gcp/terraform-cloud/images/create_workspace_gui.png b/docs/slides/gcp/hcp-terraform/images/create_workspace_gui.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/create_workspace_gui.png rename to docs/slides/gcp/hcp-terraform/images/create_workspace_gui.png diff --git a/docs/slides/gcp/terraform-cloud/images/create_workspace_gui2.png b/docs/slides/gcp/hcp-terraform/images/create_workspace_gui2.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/create_workspace_gui2.png rename to docs/slides/gcp/hcp-terraform/images/create_workspace_gui2.png diff --git a/docs/slides/gcp/terraform-cloud/images/destroy_gui.png b/docs/slides/gcp/hcp-terraform/images/destroy_gui.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/destroy_gui.png rename to docs/slides/gcp/hcp-terraform/images/destroy_gui.png diff --git a/docs/slides/gcp/terraform-cloud/images/distributed_vcs.png b/docs/slides/gcp/hcp-terraform/images/distributed_vcs.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/distributed_vcs.png rename to docs/slides/gcp/hcp-terraform/images/distributed_vcs.png diff --git a/docs/slides/gcp/terraform-cloud/images/dog_homework.jpg b/docs/slides/gcp/hcp-terraform/images/dog_homework.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/dog_homework.jpg rename to docs/slides/gcp/hcp-terraform/images/dog_homework.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/enable_auto_apply.png b/docs/slides/gcp/hcp-terraform/images/enable_auto_apply.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/enable_auto_apply.png rename to docs/slides/gcp/hcp-terraform/images/enable_auto_apply.png diff --git a/docs/slides/gcp/terraform-cloud/images/encryption.jpg b/docs/slides/gcp/hcp-terraform/images/encryption.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/encryption.jpg rename to docs/slides/gcp/hcp-terraform/images/encryption.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/enter_the_matrix.jpg b/docs/slides/gcp/hcp-terraform/images/enter_the_matrix.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/enter_the_matrix.jpg rename to docs/slides/gcp/hcp-terraform/images/enter_the_matrix.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/fork.png b/docs/slides/gcp/hcp-terraform/images/fork.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/fork.png rename to docs/slides/gcp/hcp-terraform/images/fork.png diff --git a/docs/slides/gcp/terraform-cloud/images/gcp_encrypted_vars.png b/docs/slides/gcp/hcp-terraform/images/gcp_encrypted_vars.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/gcp_encrypted_vars.png rename to docs/slides/gcp/hcp-terraform/images/gcp_encrypted_vars.png diff --git a/docs/slides/gcp/terraform-cloud/images/gcp_network_module.png b/docs/slides/gcp/hcp-terraform/images/gcp_network_module.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/gcp_network_module.png rename to docs/slides/gcp/hcp-terraform/images/gcp_network_module.png diff --git a/docs/slides/gcp/terraform-cloud/images/gcp_pmr.png b/docs/slides/gcp/hcp-terraform/images/gcp_pmr.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/gcp_pmr.png rename to docs/slides/gcp/hcp-terraform/images/gcp_pmr.png diff --git a/docs/slides/gcp/terraform-cloud/images/get-started-tfe.png b/docs/slides/gcp/hcp-terraform/images/get-started-tfe.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/get-started-tfe.png rename to docs/slides/gcp/hcp-terraform/images/get-started-tfe.png diff --git a/docs/slides/gcp/terraform-cloud/images/git_commit_log.png b/docs/slides/gcp/hcp-terraform/images/git_commit_log.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/git_commit_log.png rename to docs/slides/gcp/hcp-terraform/images/git_commit_log.png diff --git a/docs/slides/gcp/terraform-cloud/images/git_log.png b/docs/slides/gcp/hcp-terraform/images/git_log.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/git_log.png rename to docs/slides/gcp/hcp-terraform/images/git_log.png diff --git a/docs/slides/gcp/terraform-cloud/images/git_noobs.png b/docs/slides/gcp/hcp-terraform/images/git_noobs.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/git_noobs.png rename to docs/slides/gcp/hcp-terraform/images/git_noobs.png diff --git a/docs/slides/gcp/terraform-cloud/images/git_triggered_run.png b/docs/slides/gcp/hcp-terraform/images/git_triggered_run.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/git_triggered_run.png rename to docs/slides/gcp/hcp-terraform/images/git_triggered_run.png diff --git a/docs/slides/gcp/terraform-cloud/images/git_workflow_tests.png b/docs/slides/gcp/hcp-terraform/images/git_workflow_tests.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/git_workflow_tests.png rename to docs/slides/gcp/hcp-terraform/images/git_workflow_tests.png diff --git a/docs/slides/gcp/terraform-cloud/images/hashimoo.png b/docs/slides/gcp/hcp-terraform/images/hashimoo.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/hashimoo.png rename to docs/slides/gcp/hcp-terraform/images/hashimoo.png diff --git a/docs/slides/gcp/terraform-cloud/images/integrate_github.png b/docs/slides/gcp/hcp-terraform/images/integrate_github.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/integrate_github.png rename to docs/slides/gcp/hcp-terraform/images/integrate_github.png diff --git a/docs/slides/gcp/terraform-cloud/images/kitt_scanner.gif b/docs/slides/gcp/hcp-terraform/images/kitt_scanner.gif similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/kitt_scanner.gif rename to docs/slides/gcp/hcp-terraform/images/kitt_scanner.gif diff --git a/docs/slides/gcp/terraform-cloud/images/lego_wallpaper.jpg b/docs/slides/gcp/hcp-terraform/images/lego_wallpaper.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/lego_wallpaper.jpg rename to docs/slides/gcp/hcp-terraform/images/lego_wallpaper.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/live_demo.jpg b/docs/slides/gcp/hcp-terraform/images/live_demo.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/live_demo.jpg rename to docs/slides/gcp/hcp-terraform/images/live_demo.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/mars_terraform.jpg b/docs/slides/gcp/hcp-terraform/images/mars_terraform.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/mars_terraform.jpg rename to docs/slides/gcp/hcp-terraform/images/mars_terraform.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/marscolony.jpg b/docs/slides/gcp/hcp-terraform/images/marscolony.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/marscolony.jpg rename to docs/slides/gcp/hcp-terraform/images/marscolony.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/meow_world.png b/docs/slides/gcp/hcp-terraform/images/meow_world.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/meow_world.png rename to docs/slides/gcp/hcp-terraform/images/meow_world.png diff --git a/docs/slides/gcp/terraform-cloud/images/merge_pull_request.png b/docs/slides/gcp/hcp-terraform/images/merge_pull_request.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/merge_pull_request.png rename to docs/slides/gcp/hcp-terraform/images/merge_pull_request.png diff --git a/docs/slides/gcp/terraform-cloud/images/policy_workspaces.png b/docs/slides/gcp/hcp-terraform/images/policy_workspaces.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/policy_workspaces.png rename to docs/slides/gcp/hcp-terraform/images/policy_workspaces.png diff --git a/docs/slides/gcp/terraform-cloud/images/protect_master.png b/docs/slides/gcp/hcp-terraform/images/protect_master.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/protect_master.png rename to docs/slides/gcp/hcp-terraform/images/protect_master.png diff --git a/docs/slides/gcp/terraform-cloud/images/queue_a_plan.png b/docs/slides/gcp/hcp-terraform/images/queue_a_plan.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/queue_a_plan.png rename to docs/slides/gcp/hcp-terraform/images/queue_a_plan.png diff --git a/docs/slides/gcp/terraform-cloud/images/queue_destroy_plan.png b/docs/slides/gcp/hcp-terraform/images/queue_destroy_plan.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/queue_destroy_plan.png rename to docs/slides/gcp/hcp-terraform/images/queue_destroy_plan.png diff --git a/docs/slides/gcp/terraform-cloud/images/rebuild_lab_environment.png b/docs/slides/gcp/hcp-terraform/images/rebuild_lab_environment.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/rebuild_lab_environment.png rename to docs/slides/gcp/hcp-terraform/images/rebuild_lab_environment.png diff --git a/docs/slides/gcp/terraform-cloud/images/remote_execution.png b/docs/slides/gcp/hcp-terraform/images/remote_execution.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/remote_execution.png rename to docs/slides/gcp/hcp-terraform/images/remote_execution.png diff --git a/docs/slides/gcp/terraform-cloud/images/remote_state_free.png b/docs/slides/gcp/hcp-terraform/images/remote_state_free.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/remote_state_free.png rename to docs/slides/gcp/hcp-terraform/images/remote_state_free.png diff --git a/docs/slides/gcp/terraform-cloud/images/sandbox.png b/docs/slides/gcp/hcp-terraform/images/sandbox.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/sandbox.png rename to docs/slides/gcp/hcp-terraform/images/sandbox.png diff --git a/docs/slides/gcp/terraform-cloud/images/secure_lock.jpg b/docs/slides/gcp/hcp-terraform/images/secure_lock.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/secure_lock.jpg rename to docs/slides/gcp/hcp-terraform/images/secure_lock.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/security_lasers.jpg b/docs/slides/gcp/hcp-terraform/images/security_lasers.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/security_lasers.jpg rename to docs/slides/gcp/hcp-terraform/images/security_lasers.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/select_default_shell.png b/docs/slides/gcp/hcp-terraform/images/select_default_shell.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/select_default_shell.png rename to docs/slides/gcp/hcp-terraform/images/select_default_shell.png diff --git a/docs/slides/gcp/terraform-cloud/images/select_git_bash.png b/docs/slides/gcp/hcp-terraform/images/select_git_bash.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/select_git_bash.png rename to docs/slides/gcp/hcp-terraform/images/select_git_bash.png diff --git a/docs/slides/gcp/terraform-cloud/images/select_git_bash_2.png b/docs/slides/gcp/hcp-terraform/images/select_git_bash_2.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/select_git_bash_2.png rename to docs/slides/gcp/hcp-terraform/images/select_git_bash_2.png diff --git a/docs/slides/gcp/terraform-cloud/images/self_service.png b/docs/slides/gcp/hcp-terraform/images/self_service.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/self_service.png rename to docs/slides/gcp/hcp-terraform/images/self_service.png diff --git a/docs/slides/gcp/terraform-cloud/images/set_prefix_gui.png b/docs/slides/gcp/hcp-terraform/images/set_prefix_gui.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/set_prefix_gui.png rename to docs/slides/gcp/hcp-terraform/images/set_prefix_gui.png diff --git a/docs/slides/gcp/terraform-cloud/images/t2micro_instance_type.png b/docs/slides/gcp/hcp-terraform/images/t2micro_instance_type.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/t2micro_instance_type.png rename to docs/slides/gcp/hcp-terraform/images/t2micro_instance_type.png diff --git a/docs/slides/gcp/terraform-cloud/images/team_workspace_acls.png b/docs/slides/gcp/hcp-terraform/images/team_workspace_acls.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/team_workspace_acls.png rename to docs/slides/gcp/hcp-terraform/images/team_workspace_acls.png diff --git a/docs/slides/gcp/terraform-cloud/images/teams_emoji.png b/docs/slides/gcp/hcp-terraform/images/teams_emoji.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/teams_emoji.png rename to docs/slides/gcp/hcp-terraform/images/teams_emoji.png diff --git a/docs/slides/gcp/terraform-cloud/images/teams_gui.png b/docs/slides/gcp/hcp-terraform/images/teams_gui.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/teams_gui.png rename to docs/slides/gcp/hcp-terraform/images/teams_gui.png diff --git a/docs/slides/gcp/terraform-cloud/images/teams_list.png b/docs/slides/gcp/hcp-terraform/images/teams_list.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/teams_list.png rename to docs/slides/gcp/hcp-terraform/images/teams_list.png diff --git a/docs/slides/gcp/terraform-cloud/images/teamwork.png b/docs/slides/gcp/hcp-terraform/images/teamwork.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/teamwork.png rename to docs/slides/gcp/hcp-terraform/images/teamwork.png diff --git a/docs/slides/gcp/terraform-cloud/images/terraform_on_prem.png b/docs/slides/gcp/hcp-terraform/images/terraform_on_prem.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/terraform_on_prem.png rename to docs/slides/gcp/hcp-terraform/images/terraform_on_prem.png diff --git a/docs/slides/gcp/terraform-cloud/images/terraform_scifi.jpg b/docs/slides/gcp/hcp-terraform/images/terraform_scifi.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/terraform_scifi.jpg rename to docs/slides/gcp/hcp-terraform/images/terraform_scifi.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/tf_cloud_signup.png b/docs/slides/gcp/hcp-terraform/images/tf_cloud_signup.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/tf_cloud_signup.png rename to docs/slides/gcp/hcp-terraform/images/tf_cloud_signup.png diff --git a/docs/slides/gcp/terraform-cloud/images/tf_cloud_welcome.png b/docs/slides/gcp/hcp-terraform/images/tf_cloud_welcome.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/tf_cloud_welcome.png rename to docs/slides/gcp/hcp-terraform/images/tf_cloud_welcome.png diff --git a/docs/slides/gcp/terraform-cloud/images/tf_gcp.png b/docs/slides/gcp/hcp-terraform/images/tf_gcp.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/tf_gcp.png rename to docs/slides/gcp/hcp-terraform/images/tf_gcp.png diff --git a/docs/slides/gcp/terraform-cloud/images/tfc-gui.png b/docs/slides/gcp/hcp-terraform/images/tfc-gui.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/tfc-gui.png rename to docs/slides/gcp/hcp-terraform/images/tfc-gui.png diff --git a/docs/slides/gcp/terraform-cloud/images/tfelogo.png b/docs/slides/gcp/hcp-terraform/images/tfelogo.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/tfelogo.png rename to docs/slides/gcp/hcp-terraform/images/tfelogo.png diff --git a/docs/slides/gcp/terraform-cloud/images/the_huddle.jpg b/docs/slides/gcp/hcp-terraform/images/the_huddle.jpg similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/the_huddle.jpg rename to docs/slides/gcp/hcp-terraform/images/the_huddle.jpg diff --git a/docs/slides/gcp/terraform-cloud/images/uat_branch.png b/docs/slides/gcp/hcp-terraform/images/uat_branch.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/uat_branch.png rename to docs/slides/gcp/hcp-terraform/images/uat_branch.png diff --git a/docs/slides/gcp/terraform-cloud/images/variables_answer.png b/docs/slides/gcp/hcp-terraform/images/variables_answer.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/variables_answer.png rename to docs/slides/gcp/hcp-terraform/images/variables_answer.png diff --git a/docs/slides/gcp/terraform-cloud/images/vcs_success.png b/docs/slides/gcp/hcp-terraform/images/vcs_success.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/vcs_success.png rename to docs/slides/gcp/hcp-terraform/images/vcs_success.png diff --git a/docs/slides/gcp/terraform-cloud/images/welcome_arcade.png b/docs/slides/gcp/hcp-terraform/images/welcome_arcade.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/welcome_arcade.png rename to docs/slides/gcp/hcp-terraform/images/welcome_arcade.png diff --git a/docs/slides/gcp/terraform-cloud/images/workspaces_gui.png b/docs/slides/gcp/hcp-terraform/images/workspaces_gui.png similarity index 100% rename from docs/slides/gcp/terraform-cloud/images/workspaces_gui.png rename to docs/slides/gcp/hcp-terraform/images/workspaces_gui.png diff --git a/docs/slides/azure/terraform-cloud/index.html b/docs/slides/gcp/hcp-terraform/index.html similarity index 98% rename from docs/slides/azure/terraform-cloud/index.html rename to docs/slides/gcp/hcp-terraform/index.html index 63b62c26..c829328b 100644 --- a/docs/slides/azure/terraform-cloud/index.html +++ b/docs/slides/gcp/hcp-terraform/index.html @@ -7,7 +7,7 @@ - Terraform Cloud on Azure + HCP Terraform on GCP diff --git a/docs/slides/gcp/terraform-cloud/index.md b/docs/slides/gcp/hcp-terraform/index.md similarity index 77% rename from docs/slides/gcp/terraform-cloud/index.md rename to docs/slides/gcp/hcp-terraform/index.md index f3ee8079..427c1f85 100644 --- a/docs/slides/gcp/terraform-cloud/index.md +++ b/docs/slides/gcp/hcp-terraform/index.md @@ -1,19 +1,19 @@ -name: Intro-to-Terraform-Cloud +name: Intro-to-hcp-terraform class: center,middle,title-slide count: false

![:scale 60%](images/tf_gcp.png)
-# Terraform Cloud on GCP +# HCP Terraform on GCP ??? -**Welcome to the Terraform Cloud on GCP workshop. This is a one day workshop that introduces free and paid features of Terraform Cloud (also Enterprise) using an GCP-based application for the tech labs. If you're brand new to Terraform you should try the Introduction to Terraform OSS on GCP Instruqt track before this one.** +**Welcome to the HCP Terraform on GCP workshop. This is a one day workshop that introduces free and paid features of HCP Terraform (also Enterprise) using an GCP-based application for the tech labs. If you're brand new to Terraform you should try the Introduction to Terraform Community Edition on GCP Instruqt track before this one.** -**Terraform Cloud and Terraform Enterprise have almost identical feature sets so we'll be using Terraform Cloud as our training environment today.** +**HCP Terraform and Terraform Enterprise have almost identical feature sets so we'll be using HCP Terraform as our training environment today.** -INSTRUCTOR GUIDE LINK: https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_terraform_cloud_INSTRUCTOR_GUIDE.md +INSTRUCTOR GUIDE LINK: https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_hcp_terraform_INSTRUCTOR_GUIDE.md -INSTRUCTOR NOTE: Welcome to Terraform Cloud on GCP. This slide deck is written entirely in Markdown language, which means you can make edits or additions then submit a pull request to add your changes to the main branch. To make edits to the slide deck simply fork this repository, edit the Markdown file(s), and submit a pull request with your changes. You can easily test a local copy of the slide deck with this python one-liner: +INSTRUCTOR NOTE: Welcome to HCP Terraform on GCP. This slide deck is written entirely in Markdown language, which means you can make edits or additions then submit a pull request to add your changes to the main branch. To make edits to the slide deck simply fork this repository, edit the Markdown file(s), and submit a pull request with your changes. You can easily test a local copy of the slide deck with this python one-liner: ``` python -m SimpleHTTPServer @@ -58,7 +58,7 @@ If your audience is less than 25 people you can quickly go through the room and Now introduce yourself, tell a story, give the audience something to think about. If you don't have a story borrow someone else's: https://www.youtube.com/watch?v=h970ZBgKINg --- -name: tfc-link-to-slide-deck +name: hcp-terraform-link-to-slide-deck # The Slide Deck


.center[ @@ -76,8 +76,8 @@ class: col-2 # Table of Contents
-1. OSS to Cloud/Enterprise
-🌥️ Terraform Cloud Overview
+1. Community Edition to HCP/Enterprise
+🌥️ HCP Terraform Overview
👨🏽‍🏫 Review the Basics
🔗 Configure Remote State

@@ -91,7 +91,7 @@ class: col-2 👮 Sentinel Policy Enforcement

4. Terraform Modules & API
-⚙️ Private Module Registry
+⚙️ Terraform Private Registry
🏗️ API Driven Workflows

5. Extra Resources
@@ -109,10 +109,10 @@ name: TFE-Chapter-1 class: title # Chapter 1 -## Terraform OSS, Cloud and Enterprise +## Terraform Community Edition, HCP Terraform, and Terraform Enterprise ??? -**In the first chapter we'll cover Terraform open source and some of the differences between OSS and Cloud and Enterprise.** +**In the first chapter we'll cover Terraform Community Edition and some of the differences between Community Edition, HCP Terraform, and Terraform Enterprise.** --- name: terraform-user-journey @@ -156,7 +156,7 @@ name: multi-platform-compliance Terraform also integrates with on premise VMs or platform services. ??? -**Terraform Cloud and Enterprise can be used to build VMs in your data center, or GCP instances in the cloud, or both. You won't have to maintain two sets of tools to build on your hybrid cloud platforms.** +**HCP Terraform and Enterprise can be used to build VMs in your data center, or GCP instances in the cloud, or both. You won't have to maintain two sets of tools to build on your hybrid cloud platforms.** --- name: self-service-infra @@ -169,11 +169,11 @@ name: self-service-infra Enable users to build what they need without running up a huge bill or putting your organization at risk. ??? -**Terraform Cloud encourages safe provisioning via reusable modules and policy enforcement. Now users can build exactly what they need to do their jobs without breaking things or putting your organization at risk. A slow and cumbersome approval process is no longer required because the automation enforces best practices without manual code reviews.** +**HCP Terraform encourages safe provisioning via reusable modules and policy enforcement. Now users can build exactly what they need to do their jobs without breaking things or putting your organization at risk. A slow and cumbersome approval process is no longer required because the automation enforces best practices without manual code reviews.** --- -name: terraform-cloud-what-is-it -# Terraform Cloud - The Big Picture +name: hcp-terraform-what-is-it +# HCP Terraform - The Big Picture .center[ ![:scale 90%](images/cloud_overview_gcp.png) @@ -182,34 +182,34 @@ name: terraform-cloud-what-is-it ??? **This slide shows the end state of our workshop. Over on the left our infrastructure folks have created some reusable modules that the rest of our users can implement in their own terraform code. These modules ensure that infrastructure components like networks and VMs get built correctly every time, and they also make it easy for the user to build the "right stuff" on their own.** -**In the next stage our user is writing terraform code and checking it into a Version Control System. This ensures that each and every change meant for production is recorded and reviewed. This is so important. It requires discipline and cooperation from all of your devops and infrastructure admins. When new code is committed to the master branch it triggers a plan in Terraform Cloud (or Enterprise)** +**In the next stage our user is writing terraform code and checking it into a Version Control System. This ensures that each and every change meant for production is recorded and reviewed. This is so important. It requires discipline and cooperation from all of your devops and infrastructure admins. When new code is committed to the master branch it triggers a plan in HCP Terraform (or Terraform Enterprise)** -**Think of Terraform Cloud as a remote execution and state management platform for Terraform. Now you're not running terraform on your laptop like it's the wild west of cloud provisioning; instead all terraform runs happen in secure docker containers that run on our SaaS platform, or in your own data center. This allows you to encrypt and secure all your API keys, variables, and terraform state files. Access is granted only to authorized users.** +**Think of HCP Terraform as a remote execution and state management platform for Terraform. Now you're not running terraform on your laptop like it's the wild west of cloud provisioning; instead all terraform runs happen in secure docker containers that run on our SaaS platform, or in your own data center. This allows you to encrypt and secure all your API keys, variables, and terraform state files. Access is granted only to authorized users.** **All your terraform state files are safely stored and encrypted on the server side. Any time you need to make a change to any of your infrastructure, Terraform knows the last state it was in and can build incrementally based on what has changed. Need to add more instances to a cluster? No problem, terraform can do that for you without a complete tear-down and rebuild.** **Before every terraform apply, you can run Sentinel policy checks against the proposed infrastructure plan to catch any policy violations. For example you might not want the devs creating super XL instances that cost a lot of money to run. You can write a simple rule that restricts developer workspaces to only using m3.medium sized instances, unless they get special permission for more.** -**Role-based access controls allow different types of users to interact with Terraform cloud according to their level of access. You might have super admins who can control everything in the organization, then regular users who can run terraform but only in dev environments. Another group might be able to push changes to production, while some users may have read-only access. Terraform Cloud/Enterprise is a true multi-tenant application.** +**Role-based access controls allow different types of users to interact with HCP Terraform according to their level of access. You might have super admins who can control everything in the organization, then regular users who can run terraform but only in dev environments. Another group might be able to push changes to production, while some users may have read-only access. HCP Terraform/Terraform Enterprise is a true multi-tenant application.** --- -name: why-tfc-1 +name: why-hcp-terraform-1 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: ??? -**Let's go through a quick bullet list of Terraform Cloud features and why they matter.** +**Let's go through a quick bullet list of HCP Terraform features and why they matter.** --- -name: why-tfc-2 +name: why-hcp-terraform-2 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS @@ -217,12 +217,12 @@ Terraform Cloud/Enterprise is an application that provides the following feature **As your organization begins to standardize on Terraform, you'll have different types of users. Most of you will become terraform experts, but there may be others who just want to build things. They can use the terraform code that folks like you have written. To make this process easy, we have a web application. You log on, click a button, and out pops your infrastructure.** --- -name: why-tfc-3 +name: why-hcp-terraform-3 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows @@ -233,83 +233,83 @@ Terraform Cloud/Enterprise is an application that provides the following feature **APIs are the building blocks of any modern cloud automation system. By using standard, well defined APIs you ensure that your infrastructure pipelines will be ready to adapt to any future changes.** --- -name: why-tfc-4 +name: why-hcp-terraform-4 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management ??? -**Terraform enterprise also provides safe and secure storage for your state files. Instead of having that important state file stored on someone's laptop, now it is safely stored in the Terraform Cloud application. Only those who need access to the state file can see it, and it is protected from being overwritten or corrupted.** +**Terraform enterprise also provides safe and secure storage for your state files. Instead of having that important state file stored on someone's laptop, now it is safely stored in the HCP Terraform application. Only those who need access to the state file can see it, and it is protected from being overwritten or corrupted.** --- -name: why-tfc-5 +name: why-hcp-terraform-5 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry ??? -**Eventually you'll have a library of Terraform code that you might like to share and publish for other users and teams in your company. The private module registry makes this easy. You build reusable modules that build infrastructure according to standards, and then publish them for your users. This can help with enforcing security policies and build standards.** +**Eventually you'll have a library of Terraform code that you might like to share and publish for other users and teams in your company. The Terraform Private Registry makes this easy. You build reusable modules that build infrastructure according to standards, and then publish them for your users. This can help with enforcing security policies and build standards.** --- -name: why-tfc-6 +name: why-hcp-terraform-6 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement ??? **TFE also comes with a policy enforcement engine that can ensure that your users don't build things they shouldn't build, or configure them in the wrong way. For example, you might wish to prevent users from opening network ports to the internet, or from building too many virtual machines. All of these types of rules can be expressed using our Sentinel policy enforcement engine. Sentinel policies prevent users from doing bad things, *before* they provision to the cloud.** --- -name: why-tfc-7 +name: why-hcp-terraform-7 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement * Single Sign-On ??? -**Terraform Cloud for Business, as well as Terraform Enterprise, also supports single sign-on using your own SAML provider. This allows you to quickly map users into your organization's teams and workspaces so they can become productive right away. We won't be covering SAML or single sign-on in today's workshop.** +**HCP Terraform Plus Tier, as well as Terraform Enterprise, also supports single sign-on using your own SAML provider. This allows you to quickly map users into your organization's teams and workspaces so they can become productive right away. We won't be covering SAML or single sign-on in today's workshop.** --- -name: why-tfc-8 +name: why-hcp-terraform-8 class: img-right -# Terraform Cloud +# HCP Terraform ![](images/tfc-gui.png) -Terraform Cloud/Enterprise is an application that provides the following features: +HCP Terraform/Terraform Enterprise is an application that provides the following features: * UI integration with VCS * API driven workflows * Central state management -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement * Single Sign-On * Secure API credentials @@ -318,33 +318,33 @@ Terraform Cloud/Enterprise is an application that provides the following feature **Terraform Enterprise can store and encrypt your cloud credentials, passwords or any other sensitive data. These credentials are stored safely inside of a Vault instance that runs inside of TFE.** --- -name: terraform-cloud-enterprise +name: hcp-terraform-enterprise class: compact -# Terraform Cloud or Terraform Enterprise? -**[Terraform Cloud](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. +# HCP Terraform or Terraform Enterprise? +**[HCP Terraform](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. -**[Terraform Cloud for Business](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as Terraform Cloud, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, and the ability to Terraform on-prem resources from the cloud. +**[HCP Terraform Plus Tier](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as HCP Terraform, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, and the ability to Terraform on-prem resources from the cloud. -**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the Terraform Cloud application, or wish to run it in restricted networks behind corporate firewalls. +**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the HCP Terraform application, or wish to run it in restricted networks behind corporate firewalls. -The feature list for these offerings is nearly identical. We will be using Terraform Cloud accounts for our lab exercises today. +The feature list for these offerings is nearly identical. We will be using HCP Terraform accounts for our lab exercises today. ??? -**Just like the adoption story from OSS to Enterprise, Terraform offers the ability to build upon the ingelligence that grows within the team. Terraform Cloud itself is really good for individuals, or small business that need to put some level of automation behind their infrastructure. They usually move to the Business Tier when the number of users gets unwieldy, or when they need to deploy on-prem. Enterprise is really the move if you want full control over your destiny, or if you have some severe security requirements (governments, government contractors, etc.). The way I usually look at this, if you are using an on-prem VCS, chances are you'll need Enterprise. If your pipeline or VCS is hosted, you're probably good with Terraform Cloud for Business.** +**Just like the adoption story from Community Edition to Enterprise, Terraform offers the ability to build upon the ingelligence that grows within the team. HCP Terraform itself is really good for individuals, or small business that need to put some level of automation behind their infrastructure. They usually move to the Plus Tier when the number of users gets unwieldy, or when they need to deploy on-prem. Enterprise is really the move if you want full control over your destiny, or if you have some severe security requirements (governments, government contractors, etc.). The way I usually look at this, if you are using an on-prem VCS, chances are you'll need Enterprise. If your pipeline or VCS is hosted, you're probably good with HCP Terraform Plus Tier.** -Be well versed on the feature list and differences between Terraform Cloud levels (including the Business Tier) and Terraform Enterprise. In particular, remember that if you are running more concurrent builds, or if you need SSO, or on-prem, you are in the Cloud for Business or Enterprise tier automatically. +Be well versed on the feature list and differences between HCP Terraform levels (including the Plus Tier) and Terraform Enterprise. In particular, remember that if you are running more concurrent builds, or if you need SSO, or on-prem, you are in the Cloud Plus Tier or Terraform Enterprise tier automatically. --- name: live-demo class: title, smokescreen, shelf background-image: url(images/live_demo.jpg) # Live Demo -## Terraform Cloud in Action +## HCP Terraform in Action ??? INSTRUCTOR NOTE: You can use the same instruqt track that the students will be using to do this demo. Make sure you've gone through the entire track yourself and have your own organization, fork of the hashicat-gcp repo, and sentinel policy in place. Once you have done these steps it's easy to create a new demo: -1. Start your own copy of the Terraform Cloud on GCP track +1. Start your own copy of the HCP Terraform on GCP track 2. Echo out your GCP credentials and set them as environment variables in TFC: ``` echo $GOOGLE_CREDENTIALS @@ -353,15 +353,15 @@ echo $GOOGLE_CREDENTIALS 4. Make sure you remove the VPC file (vpc.tf) from your hashicat-gcp repo. This will make the demo take longer and may break if the regions aren't set up right. 5. Begin your demo dialog: -**This is a brief demo showing off some of the features of Terraform cloud. You'll get to work with all these features during the hands-on labs today.** +**This is a brief demo showing off some of the features of HCP Terraform. You'll get to work with all these features during the hands-on labs today.** **Pretend I'm a brand new developer and I want to spin up a copy of my company's web application that I can use for testing. I have my own fork of the code here on github. This is the hashicat-gcp application. Like the name implies, it provides kittens as a service. You give it a placeholder URL, a height, and a width, and you get a cat. Neat huh?** -**Let's hop over to Terraform Cloud and take a look at my workspace. Here you can see the most recent terraform runs and their status, along with the exact git commit hash that led to each run being triggered. All changes are recorded, and only code that passes our sentinel policies is allowed to run.** +**Let's hop over to HCP Terraform and take a look at my workspace. Here you can see the most recent terraform runs and their status, along with the exact git commit hash that led to each run being triggered. All changes are recorded, and only code that passes our sentinel policies is allowed to run.** **Before I build anything I might want to configure some variables to adjust my infrastructure settings. Here you can see some terraform variables, prefix and region. These will determine the names of my resources and the region they will be deployed in.** -**Down bottom you see the Environment Variables. These are system shell variables that are injected into the terraform cloud container at runtime. You can optionally encrypt sensitive environment variables such as these GCP keys. Note that these are write-only. Once you encrypt a variable by marking it sensitive, you won't see it here in plaintext again. These are dynamic GCP credentials that are good for only a few hours. You can paste them in manually or use the API to auto-populate them from HashiCorp Vault.** +**Down bottom you see the Environment Variables. These are system shell variables that are injected into the HCP Terraform container at runtime. You can optionally encrypt sensitive environment variables such as these GCP keys. Note that these are write-only. Once you encrypt a variable by marking it sensitive, you won't see it here in plaintext again. These are dynamic GCP credentials that are good for only a few hours. You can paste them in manually or use the API to auto-populate them from HashiCorp Vault.** **New and advanced users can utilize the GUI to trigger infrastructure builds. Let's do that now by clicking on this Queue Plan button. I'm going to put "new dev environment" down as the reason for the build. Now notice that a new terraform plan has kicked off. This is the dry run. terraform is figuring out if any of the infrastructure already exists from a previous run, and then it will build or change everything to match what's in the code. That is, unless we fail a sentinel policy...** @@ -379,7 +379,7 @@ INSTRUCTOR NOTE: Have your code commented and ready to go like this. That way yo } ``` -**Now if I pop back over to Terraform Cloud you can see that a new run has triggered based on the change I just made. Terraform Cloud watches that master branch for any changes and automatically picks them up. I still have a chance to review the run in the UI here. You can see that my policy check is now passing, which will make the finance people happy, and I can continue building my dev environment.** +**Now if I pop back over to HCP Terraform you can see that a new run has triggered based on the change I just made. HCP Terraform watches that master branch for any changes and automatically picks them up. I still have a chance to review the run in the UI here. You can see that my policy check is now passing, which will make the finance people happy, and I can continue building my dev environment.** **I'll click Confirm & Apply and we'll start building.** @@ -404,10 +404,10 @@ name: review-the-basics class: title, smokescreen, shelf background-image: url(images/terraform_scifi.jpg) # Review the Basics -## A Terraform OSS Refresher +## A Terraform Community Edition Refresher ??? -**This section is a quick review of terraform open source usage.** +**This section is a quick review of terraform Community Edition usage.** --- name: review-basic-terraform-commands @@ -426,7 +426,7 @@ terraform graph # Create a DOT-formatted graph ``` ??? -Depending on the maturity of your audience you might take a detour back to the Intro to Terraform track. Ideally everyone in the workshop has already completed this or has equivalent experience with Terraform OSS. +Depending on the maturity of your audience you might take a detour back to the Intro to Terraform track. Ideally everyone in the workshop has already completed this or has equivalent experience with Terraform Community Edition. --- name: what-is-a-workspace @@ -440,7 +440,7 @@ name: what-is-a-workspace ??? -**A Terraform workspace is a managed unit of infrastructure. On your laptop or local workstation, the terraform workspace is simply a directory full of terraform code and variables. This code is also ideally stored in a git repository. In the cloud the workspace takes on some extra roles. In Terraform Cloud and Enterprise your workspace is still where you execute terraform runs but there are extra features like access controls, secure variables and policy management. Terraform is only run from secure docker containers that you control. (There is one exception to this and that is when you run terraform locally, but only store the state in Terraform Cloud). Your local workspace, or copy of a git repo, generally maps 1:1 with your terraform workspace.** +**A Terraform workspace is a managed unit of infrastructure. On your laptop or local workstation, the terraform workspace is simply a directory full of terraform code and variables. This code is also ideally stored in a git repository. In the cloud the workspace takes on some extra roles. In HCP Terraform and Enterprise your workspace is still where you execute terraform runs but there are extra features like access controls, secure variables and policy management. Terraform is only run from secure docker containers that you control. (There is one exception to this and that is when you run terraform locally, but only store the state in HCP Terraform). Your local workspace, or copy of a git repo, generally maps 1:1 with your terraform workspace.** **What should I put in a workspace? We recommend infrastructure that should be managed together as a unit be placed into the same workspace. Who has to manage it, how often does it change, does it have external dependencies that we can't control. Ask these questions. Think about what happens when you run `terraform apply`. You should be able to describe what you just built, and what outputs it provides, who this infrastructure is for, and how to utilize it.** @@ -522,19 +522,19 @@ The local state file has some disadvantages: * No centralized record keeping ??? -**Let's not be the dog at my homework kid. There's no excuse for losing your state file because you can easily store it for free in your Terraform Cloud account.** +**Let's not be the dog at my homework kid. There's no excuse for losing your state file because you can easily store it for free in your HCP Terraform account.** --- -name: tfcloud-remote-state -# Terraform Cloud Remote State -Terraform Cloud Remote State is free and available to all users. The requirements to get it set up and working are below. +name: hcp-terraform-remote-state +# HCP Terraform Remote State +HCP Terraform Remote State is free and available to all users. The requirements to get it set up and working are below. -* Free or paid Terraform Cloud account +* Free or paid HCP Terraform account * A **`.terraformrc`** (Unix/Linux) or **`terraform.rc`** (Windows) config file * User access token stored in your config file * Remote backend config file. We name it **`remote_backend.tf`** for consistency. -**WARNING** - do not copy your Terraform Cloud API token to github! +**WARNING** - do not copy your HCP Terraform API token to github! https://www.terraform.io/docs/backends/types/remote.html @@ -560,7 +560,7 @@ name: lab-exercise-0 name: lab-exercise-1 # 👩‍💻 Lab Exercise: Configure Remote State

-In this lab you'll set up a free Terraform Cloud account and configure your account for remote execution of Terraform commands. +In this lab you'll set up a free HCP Terraform account and configure your account for remote execution of Terraform commands. Your instructor will provide the URL for the first lab environment. @@ -617,7 +617,7 @@ class: img-right-full * Any sensitive text or data ??? -**Terraform Cloud has built in support for encryption and storage of any short string of text. This allows you to safely use these credentials during the provisioning process without exposing them in plaintext or storing them on someone's laptop.** +**HCP Terraform has built in support for encryption and storage of any short string of text. This allows you to safely use these credentials during the provisioning process without exposing them in plaintext or storing them on someone's laptop.** --- name: where-are-your-creds @@ -635,7 +635,7 @@ Config files and environment variables are a better option, but the credentials name: a-better-way-creds # A Better Way to Store Sensitive Data -Terraform Cloud can safely store your credentials and encrypt them for you. You can use this encrypted storage for passwords, TLS Certificates, SSH keys or anything else that should not be lying around in plain text. +HCP Terraform can safely store your credentials and encrypt them for you. You can use this encrypted storage for passwords, TLS Certificates, SSH keys or anything else that should not be lying around in plain text. .center[![:scale 100%](images/gcp_encrypted_vars.png)] @@ -646,7 +646,7 @@ Terraform Cloud can safely store your credentials and encrypt them for you. You name: terraform-teams class: title, smokescreen, shelf background-image: url(images/teamwork.png) -# Terraform Cloud Teams +# HCP Terraform Teams ## Role-Based Access Controls (RBAC) ??? @@ -711,19 +711,19 @@ class: img-right Version control systems are applications that allow users to store, track, test, and collaborate on changes to their infrastructure and applications. -Terraform Cloud integrates with most common Version Control Systems. +HCP Terraform integrates with most common Version Control Systems. ??? -**Make sure you don't confuse git (the version control system) with GitHub (a web-based application containing the world's largest collection of git repositories). What are some other flavors of git? Bitbucket, GitLab are both also supported in Terraform Cloud. Today you'll be working with GitHub but you can integrate with any of the major git vendor software.** +**Make sure you don't confuse git (the version control system) with GitHub (a web-based application containing the world's largest collection of git repositories). What are some other flavors of git? Bitbucket, GitLab are both also supported in HCP Terraform. Today you'll be working with GitHub but you can integrate with any of the major git vendor software.** --- -name: tfc-infra-as-code-workflow +name: hcp-terraform-infra-as-code-workflow class: img-left -# VCS Integration with Terraform Cloud +# VCS Integration with HCP Terraform ![:scale 70%](images/git_noobs.png) -Terraform Cloud can directly integrate with source code repos in GitHub Enterprise, Gitlab, and Bitbucket. This allows you to build simple DevOps workflows with code reviews, testing and approvals. +HCP Terraform can directly integrate with source code repos in GitHub Enterprise, Gitlab, and Bitbucket. This allows you to build simple DevOps workflows with code reviews, testing and approvals. https://xkcd.com/1597/ @@ -746,7 +746,7 @@ Each team can contribute or consume Terraform code according to their needs. .small[http://www.commitstrip.com/en/2015/02/02/is-your-company-ready-for-devops/] ??? -**When you store all your terraform code in git repos, you unlock some extra features like user collaboration. This is a funny comic called CommitStrip where dev and ops try to learn to work together. Terraform Cloud helps bring these teams closer in a more productive way.** +**When you store all your terraform code in git repos, you unlock some extra features like user collaboration. This is a funny comic called CommitStrip where dev and ops try to learn to work together. HCP Terraform helps bring these teams closer in a more productive way.** --- name: vcs-driven-workflow @@ -776,7 +776,7 @@ background-image: url(images/security_lasers.jpg) ## Policy Enforcement for Terraform ??? -**Sentinel is the HashiCorp policy enforcement language and it is only available in terraform cloud or enterprise.** +**Sentinel is the HashiCorp policy enforcement language and it is only available in HCP Terraform or Terraform Enterprise.** --- name: what-is-sentinel @@ -849,7 +849,7 @@ class: title ## Modules and API Automation ??? -**This is the final content chapter where we'll cover the private module registry and API automation.** +**This is the final content chapter where we'll cover the Terraform Private Registry and API automation.** --- name: private-module-registry @@ -892,12 +892,12 @@ What if you had to manage dozens or hundreds of modules, with different versions --- name: private-module-registry class: img-right -# Private Module Registry +# Terraform Private Registry ![](images/gcp_pmr.png) Terraform modules are reusable packages of Terraform code that you can use to build your infrastructure. -Terraform Cloud includes a Private Module Registry where you can store, version, and distribute modules to your organizations and teams. +HCP Terraform includes a Terraform Private Registry where you can store, version, and distribute modules to your organizations and teams. ??? **This is just like the public module registry but it runs inside your own Terraform Organization where only your users can access it. This way you can share private or confidential code, or even take the public modules and fork them for your own use.** @@ -906,11 +906,11 @@ Terraform Cloud includes a Private Module Registry where you can store, version, name: api-driven-workflows class: title, smokescreen, shelf background-image: url(images/enter_the_matrix.jpg) -# Terraform Cloud API +# HCP Terraform API ## Automate Everything ??? -**This section will give us a small sample of what's possible using the Terraform Cloud API to build automation. APIs provide a clear and well understood method for interacting with Terraform Cloud, even from systems that have no native Terraform support or integrations.** +**This section will give us a small sample of what's possible using the HCP Terraform API to build automation. APIs provide a clear and well understood method for interacting with HCP Terraform, even from systems that have no native Terraform support or integrations.** --- name: whats-an-api @@ -932,8 +932,8 @@ APIs are the default language of the Internet. According to Akamai research 83% **There are APIs for all kinds of stuff! Even Dad Jokes!** --- -name: terraform-cloud-api -# Terraform Cloud API - How It Works +name: hcp-terraform-api +# HCP Terraform API - How It Works ```bash # Create a workspace using the API curl --header "Authorization: Bearer $TOKEN" --header \ @@ -953,7 +953,7 @@ Most programming languages have helper libraries for working with APIs. --- name: api-use-cases -# Terraform Cloud API - Use Cases +# HCP Terraform API - Use Cases * Continuous Integration test pipelines * Connect with workflow management systems @@ -962,13 +962,13 @@ name: api-use-cases * Custom command line scripts for specific needs ??? -**Here are just a few of the things you might build with the Terraform Cloud API.** +**Here are just a few of the things you might build with the HCP Terraform API.** --- name: lab-exercise-4 # 👩‍💻 Lab Exercise: Modules and API Automation

-In this lab we'll cover the Private Module Registry and API Automation with Terraform Cloud. +In this lab we'll cover the Terraform Private Registry and API Automation with HCP Terraform. Continue the lab exercises from where you left off. @@ -993,19 +993,19 @@ name: bonus-lab If you have completed all the workshop content and would like to try the bonus lab, your instructor can provide you with an invite. ??? -This bonus lab can be used with any of the three Terraform Cloud workshops. Create an invite if you'd like to share it with your students. +This bonus lab can be used with any of the three HCP Terraform workshops. Create an invite if you'd like to share it with your students. https://instruqt.com/hashicorp/tracks/terraform-cloud-bonus-lab --- name: additional-resources-tfe # Additional Resources -If you'd like to learn more about Terraform Enterprise or Terraform Cloud visit the links below: +If you'd like to learn more about Terraform Enterprise or HCP Terraform visit the links below: Terraform Enterprise Product Page https://www.hashicorp.com/products/terraform/ -Why Consider Terraform Enterprise Over Open Source? +Why Consider Terraform Enterprise Over Community Edition? https://www.hashicorp.com/resources/why-consider-terraform-enterprise-over-open-source Terraform GCP Provider Documentation diff --git a/docs/slides/gcp/index.md b/docs/slides/gcp/index.md index 64f0d487..a7717d83 100644 --- a/docs/slides/gcp/index.md +++ b/docs/slides/gcp/index.md @@ -26,7 +26,7 @@ name: terraform-workshops-slides # Terraform GCP Workshop Slides ### This directory contains slides for Terraform workshops intended for use with GCP. ### Workshops for each cloud are organized by type: - 1. Terraform OSS + 1. Terraform Community Edition 1. Terraform Enterprise ??? diff --git a/docs/slides/gcp/terraform-cloud/index.html b/docs/slides/gcp/terraform-cloud/index.html deleted file mode 100644 index 6759bfe5..00000000 --- a/docs/slides/gcp/terraform-cloud/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - Terraform Cloud on Google Cloud Platform - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/slides/gcp/terraform-oss/images/1password_terraform.png b/docs/slides/gcp/terraform-community/images/1password_terraform.png similarity index 100% rename from docs/slides/gcp/terraform-oss/images/1password_terraform.png rename to docs/slides/gcp/terraform-community/images/1password_terraform.png diff --git a/docs/slides/gcp/terraform-oss/images/Config_Hell.jpg b/docs/slides/gcp/terraform-community/images/Config_Hell.jpg similarity index 100% rename from docs/slides/gcp/terraform-oss/images/Config_Hell.jpg rename to docs/slides/gcp/terraform-community/images/Config_Hell.jpg diff --git a/docs/slides/gcp/terraform-oss/images/Terraform_VerticalLogo_FullColor.png b/docs/slides/gcp/terraform-community/images/Terraform_VerticalLogo_FullColor.png similarity index 100% rename from docs/slides/gcp/terraform-oss/images/Terraform_VerticalLogo_FullColor.png rename to docs/slides/gcp/terraform-community/images/Terraform_VerticalLogo_FullColor.png diff --git a/docs/slides/gcp/terraform-oss/images/blast_radius_graph_1.png b/docs/slides/gcp/terraform-community/images/blast_radius_graph_1.png similarity index 100% rename from docs/slides/gcp/terraform-oss/images/blast_radius_graph_1.png rename to docs/slides/gcp/terraform-community/images/blast_radius_graph_1.png diff --git a/docs/slides/gcp/terraform-oss/images/clouds.png b/docs/slides/gcp/terraform-community/images/clouds.png similarity index 100% rename from docs/slides/gcp/terraform-oss/images/clouds.png rename to docs/slides/gcp/terraform-community/images/clouds.png diff --git a/docs/slides/gcp/terraform-oss/images/cpa.jpg b/docs/slides/gcp/terraform-community/images/cpa.jpg similarity index 100% rename from docs/slides/gcp/terraform-oss/images/cpa.jpg rename to docs/slides/gcp/terraform-community/images/cpa.jpg diff --git a/docs/slides/gcp/terraform-oss/images/gcp_provision.png b/docs/slides/gcp/terraform-community/images/gcp_provision.png similarity index 100% rename from docs/slides/gcp/terraform-oss/images/gcp_provision.png rename to docs/slides/gcp/terraform-community/images/gcp_provision.png diff --git a/docs/slides/gcp/terraform-oss/images/gcp_provision_2.png b/docs/slides/gcp/terraform-community/images/gcp_provision_2.png similarity index 100% rename from docs/slides/gcp/terraform-oss/images/gcp_provision_2.png rename to docs/slides/gcp/terraform-community/images/gcp_provision_2.png diff --git a/docs/slides/gcp/terraform-oss/images/infra_tools.png b/docs/slides/gcp/terraform-community/images/infra_tools.png similarity index 100% rename from docs/slides/gcp/terraform-oss/images/infra_tools.png rename to docs/slides/gcp/terraform-community/images/infra_tools.png diff --git a/docs/slides/gcp/terraform-oss/images/lockup_cloud_main.png b/docs/slides/gcp/terraform-community/images/lockup_cloud_main.png similarity index 100% rename from docs/slides/gcp/terraform-oss/images/lockup_cloud_main.png rename to docs/slides/gcp/terraform-community/images/lockup_cloud_main.png diff --git a/docs/slides/gcp/terraform-oss/images/tf_gcp.png b/docs/slides/gcp/terraform-community/images/tf_gcp.png similarity index 100% rename from docs/slides/gcp/terraform-oss/images/tf_gcp.png rename to docs/slides/gcp/terraform-community/images/tf_gcp.png diff --git a/docs/slides/azure/terraform-oss/index.html b/docs/slides/gcp/terraform-community/index.html similarity index 97% rename from docs/slides/azure/terraform-oss/index.html rename to docs/slides/gcp/terraform-community/index.html index fe7ea71e..cb38720c 100644 --- a/docs/slides/azure/terraform-oss/index.html +++ b/docs/slides/gcp/terraform-community/index.html @@ -7,7 +7,7 @@ - Introduction to Terraform OSS on Azure + Introduction to Terraform Community Edition on GCP diff --git a/docs/slides/gcp/terraform-oss/index.md b/docs/slides/gcp/terraform-community/index.md similarity index 94% rename from docs/slides/gcp/terraform-oss/index.md rename to docs/slides/gcp/terraform-community/index.md index 414e1ee9..e6f990dd 100644 --- a/docs/slides/gcp/terraform-oss/index.md +++ b/docs/slides/gcp/terraform-community/index.md @@ -73,7 +73,7 @@ name: Table-of-Contents 1. Provision and Configure Google Compute Instances
🔬 **Lab - Provisioning with Terraform**
1. Manage and Change Infrastructure State
-1. Terraform Cloud
+1. HCP Terraform
⚗️ **Lab - Terraform Remote State** @@ -421,12 +421,12 @@ class: title **Now that you have terraform installed and working with GCP, we can do a few dry runs before building real infrastructure. Follow along carefully, copying and pasting the commands on each slide into your shell as we go.** --- -name: what-is-terraform-oss +name: what-is-terraform-community class: img-left # What is Terraform? ![Terraform](images\Terraform_VerticalLogo_FullColor.png) -Terraform is an open source provisioning tool. +Terraform Community Edition is a free, downloadable tool that you interact with on the command line. It lets you provision infrastructure on any cloud provider and manages configuration, plugins, infrastructure, and state. It ships as a single binary which is written in Go. Terraform is cross platform and can run on Linux, Windows, or MacOS. @@ -1093,59 +1093,59 @@ What happens in each scenario? Discuss. name: Chapter-6 class: title # Chapter 6 -## Terraform Cloud +## HCP Terraform --- -name: terraform-cloud +name: hcp-terraform class: img-right -# Terraform Cloud -##### Terraform Cloud is a free to use SaaS application that provides the best workflow for writing and building infrastructure as code with Terraform. -![Terraform Cloud](https://hashicorp.github.io/field-workshops-assets/assets/logos/Terraform_Cloud_Logo_Color_RGB.png) +# HCP Terraform +##### HCP Terraform is a free to use SaaS application that provides the best workflow for writing and building infrastructure as code with Terraform. +![HCP Terraform](https://hashicorp.github.io/field-workshops-assets/assets/logos/Terraform_Cloud_Logo_Color_RGB.png) * State storage and management * Web UI for viewing and approving Terraform runs -* Private module registry +* Terraform Private Registry * Version Control System (VCS) integration * CLI, API or GUI driven actions * Notifications for run events * Full HTTP API for automation --- -name: tfcloud-vs-tfe +name: hcp-terraform-vs-tfe class: compact -# Terraform Cloud or Terraform Enterprise? -**[Terraform Cloud](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. +# HCP Terraform or Terraform Enterprise? +**[HCP Terraform](https://app.terraform.io/signup)** is a hosted application that provides features like remote state management, API driven runs, policy management and more. Many users prefer a cloud-based SaaS solution because they don't want to maintain the infrastructure to run it. -**[Terraform Cloud for Business](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as Terraform Cloud, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, the abbility to use [Agents](https://www.terraform.io/cloud-docs/agents) to deploy in private environments, and integrate with external tools via [Run Tasks](https://www.terraform.io/cloud-docs/integrations/run-tasks). +**[HCP Terraform Plus Tier](https://www.hashicorp.com/contact-sales/terraform)** utilizes the same hosted environment as HCP Terraform, but you get the features more applicable to larger teams. Single Sign-on, Audit Logging, the abbility to use [Agents](https://www.terraform.io/cloud-docs/agents) to deploy in private environments, and integrate with external tools via [Run Tasks](https://www.terraform.io/cloud-docs/integrations/run-tasks). -**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the Terraform Cloud application, or wish to run it in restricted networks behind corporate firewalls. +**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** is the same application, but it runs in your own cloud environment or data center. Some users require more control over the HCP Terraform application, or wish to run it in restricted networks behind corporate firewalls. -The feature list for these offerings is nearly identical. We will be using Terraform Cloud accounts for our lab exercises today. +The feature list for these offerings is nearly identical. We will be using HCP Terraform accounts for our lab exercises today. --- -name: terraform-cloud-remote-state +name: hcp-terraform-remote-state # Terraform Remote State By default Terraform stores its state file in the workspace directory on your laptop or workstation. This is ok for development and experimentation, but in a production environment you need to protect and store the state file safely. -Terraform has an option to store and secure your state files remotely. Terraform Cloud accounts now offer unlimited state file storage even for open source users. +Terraform has an option to store and secure your state files remotely. HCP Terraform accounts now offer unlimited state file storage even for Community Edition users. -All state files are encrypted (using HashiCorp Vault) and stored securely in your Terraform Cloud account. You'll never have to worry about losing or deleting your state file again. +All state files are encrypted (using HashiCorp Vault) and stored securely in your HCP Terraform account. You'll never have to worry about losing or deleting your state file again. --- name: execution-mode class: compact -# Terraform Cloud Execution Modes +# HCP Terraform Execution Modes **Local Execution** - Terraform commands run on your laptop or workstation and all variables are configured locally. Only the terraform state is stored remotely. -**Remote Execution** - Terraform commands are run in a Terraform Cloud container environment. All variables are stored in the remote workspace. Code can be stored in a Version Control System repository. Limited to 1 concurrent run for free tier users. +**Remote Execution** - Terraform commands are run in a HCP Terraform container environment. All variables are stored in the remote workspace. Code can be stored in a Version Control System repository. Limited to 1 concurrent run for free tier users. -**Agent Execution** *(Enterprise only)* - Terraform Cloud Agents allow Terraform Cloud and Enterprise to communicate with isolated, private, or on-premises infrastructure. The agent architecture is pull-based, so no inbound connectivity is required. Any agent you provision will poll Terraform Cloud or Enterprise for work and carry out execution of that work locally. +**Agent Execution** *(Enterprise only)* - HCP Terraform Agents allow HCP Terraform and Enterprise to communicate with isolated, private, or on-premises infrastructure. The agent architecture is pull-based, so no inbound connectivity is required. Any agent you provision will poll HCP Terraform or Terraform Enterprise for work and carry out execution of that work locally. --- name: lab-exercise-2c -# 👩‍💻 Lab Exercise: Terraform Cloud -In the final part of the second lab we'll create a free Terraform Cloud account and enable remote storage of our state file. +# 👩‍💻 Lab Exercise: HCP Terraform +In the final part of the second lab we'll create a free HCP Terraform account and enable remote storage of our state file. Return to the training lab and continue where you left off. diff --git a/docs/slides/index.md b/docs/slides/index.md index c27ce0f1..2e92e889 100644 --- a/docs/slides/index.md +++ b/docs/slides/index.md @@ -29,7 +29,7 @@ name: terraform-workshops-slides ### This directory contains slides for Sentinel workshops. * They are organized by cloud. * Workshops for each cloud are organized by type: - 1. Terraform OSS + 1. Terraform Community Edition 1. Terraform Enterprise ??? @@ -49,9 +49,9 @@ You can also indent one kind of list under another as done in this slide. To ma name:workshop-slides # Viewing Workshop Slides #### You can view workshop slides with URLs like these: -* https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/index.html -* https://hashicorp.github.io/field-workshops-terraform/slides/azure/terraform-oss/index.html -* https://hashicorp.github.io/field-workshops-terraform/slides/gcp/terraform-oss/index.html +* https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/index.html +* https://hashicorp.github.io/field-workshops-terraform/slides/azure/terraform-community/index.html +* https://hashicorp.github.io/field-workshops-terraform/slides/gcp/terraform-community/index.html * https://hashicorp.github.io/field-workshops-terraform/slides/sentinel/index.html ??? diff --git a/docs/slides/korean/aws/terraform-cloud-v2/fav-icon/android-chrome-192x192.png b/docs/slides/korean/aws/hcp-terraform-v2/fav-icon/android-chrome-192x192.png similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/fav-icon/android-chrome-192x192.png rename to docs/slides/korean/aws/hcp-terraform-v2/fav-icon/android-chrome-192x192.png diff --git a/docs/slides/korean/aws/terraform-cloud-v2/fav-icon/android-chrome-512x512.png b/docs/slides/korean/aws/hcp-terraform-v2/fav-icon/android-chrome-512x512.png similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/fav-icon/android-chrome-512x512.png rename to docs/slides/korean/aws/hcp-terraform-v2/fav-icon/android-chrome-512x512.png diff --git a/docs/slides/korean/aws/terraform-cloud-v2/fav-icon/apple-touch-icon.png b/docs/slides/korean/aws/hcp-terraform-v2/fav-icon/apple-touch-icon.png similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/fav-icon/apple-touch-icon.png rename to docs/slides/korean/aws/hcp-terraform-v2/fav-icon/apple-touch-icon.png diff --git a/docs/slides/korean/aws/terraform-cloud-v2/fav-icon/browserconfig.xml b/docs/slides/korean/aws/hcp-terraform-v2/fav-icon/browserconfig.xml similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/fav-icon/browserconfig.xml rename to docs/slides/korean/aws/hcp-terraform-v2/fav-icon/browserconfig.xml diff --git a/docs/slides/korean/aws/terraform-cloud-v2/fav-icon/favicon-16x16.png b/docs/slides/korean/aws/hcp-terraform-v2/fav-icon/favicon-16x16.png similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/fav-icon/favicon-16x16.png rename to docs/slides/korean/aws/hcp-terraform-v2/fav-icon/favicon-16x16.png diff --git a/docs/slides/korean/aws/terraform-cloud-v2/fav-icon/favicon-32x32.png b/docs/slides/korean/aws/hcp-terraform-v2/fav-icon/favicon-32x32.png similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/fav-icon/favicon-32x32.png rename to docs/slides/korean/aws/hcp-terraform-v2/fav-icon/favicon-32x32.png diff --git a/docs/slides/korean/aws/terraform-cloud-v2/fav-icon/favicon.ico b/docs/slides/korean/aws/hcp-terraform-v2/fav-icon/favicon.ico similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/fav-icon/favicon.ico rename to docs/slides/korean/aws/hcp-terraform-v2/fav-icon/favicon.ico diff --git a/docs/slides/korean/aws/terraform-cloud-v2/fav-icon/icon.svg b/docs/slides/korean/aws/hcp-terraform-v2/fav-icon/icon.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/fav-icon/icon.svg rename to docs/slides/korean/aws/hcp-terraform-v2/fav-icon/icon.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/fav-icon/mstile-150x150.png b/docs/slides/korean/aws/hcp-terraform-v2/fav-icon/mstile-150x150.png similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/fav-icon/mstile-150x150.png rename to docs/slides/korean/aws/hcp-terraform-v2/fav-icon/mstile-150x150.png diff --git a/docs/slides/korean/aws/terraform-cloud-v2/fav-icon/safari-pinned-tab.svg b/docs/slides/korean/aws/hcp-terraform-v2/fav-icon/safari-pinned-tab.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/fav-icon/safari-pinned-tab.svg rename to docs/slides/korean/aws/hcp-terraform-v2/fav-icon/safari-pinned-tab.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/fav-icon/site.webmanifest b/docs/slides/korean/aws/hcp-terraform-v2/fav-icon/site.webmanifest similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/fav-icon/site.webmanifest rename to docs/slides/korean/aws/hcp-terraform-v2/fav-icon/site.webmanifest diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/2022_hashiconf_tuesday_089_0499.jpg b/docs/slides/korean/aws/hcp-terraform-v2/images/2022_hashiconf_tuesday_089_0499.jpg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/2022_hashiconf_tuesday_089_0499.jpg rename to docs/slides/korean/aws/hcp-terraform-v2/images/2022_hashiconf_tuesday_089_0499.jpg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/HCP_Diagram_OnBlack_Terraform.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/HCP_Diagram_OnBlack_Terraform.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/HCP_Diagram_OnBlack_Terraform.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/HCP_Diagram_OnBlack_Terraform.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/adoption_journey_groups.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/adoption_journey_groups.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/adoption_journey_groups.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/adoption_journey_groups.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/adoption_journey_individual.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/adoption_journey_individual.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/adoption_journey_individual.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/adoption_journey_individual.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/adoption_journey_multiple_groups.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/adoption_journey_multiple_groups.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/adoption_journey_multiple_groups.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/adoption_journey_multiple_groups.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/adoption_journey_organization.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/adoption_journey_organization.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/adoption_journey_organization.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/adoption_journey_organization.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/automated-testing.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/automated-testing.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/automated-testing.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/automated-testing.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/code_example.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/code_example.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/code_example.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/code_example.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/collaboration_experience.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/collaboration_experience.svg similarity index 97% rename from docs/slides/korean/aws/terraform-cloud-v2/images/collaboration_experience.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/collaboration_experience.svg index 39a24566..420a6a2a 100644 --- a/docs/slides/korean/aws/terraform-cloud-v2/images/collaboration_experience.svg +++ b/docs/slides/korean/aws/hcp-terraform-v2/images/collaboration_experience.svg @@ -36,8 +36,8 @@ as-code modules, policies and integration run tasks. - - Use Terraform Cloud to + + Use HCP Terraform to safely store sensitive materials, including Terraform plans and diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/contract-testing.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/contract-testing.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/contract-testing.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/contract-testing.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/deployment_variables.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/deployment_variables.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/deployment_variables.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/deployment_variables.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/integration-testing.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/integration-testing.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/integration-testing.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/integration-testing.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/organization_workflow.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/organization_workflow.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/organization_workflow.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/organization_workflow.svg diff --git a/docs/slides/azure/terraform-cloud-v2/images/pac_technical_workflow.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/pac_technical_workflow.svg similarity index 99% rename from docs/slides/azure/terraform-cloud-v2/images/pac_technical_workflow.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/pac_technical_workflow.svg index 91122d29..7cac4b11 100644 --- a/docs/slides/azure/terraform-cloud-v2/images/pac_technical_workflow.svg +++ b/docs/slides/korean/aws/hcp-terraform-v2/images/pac_technical_workflow.svg @@ -87,7 +87,7 @@ - + diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/part_01.png b/docs/slides/korean/aws/hcp-terraform-v2/images/part_01.png similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/part_01.png rename to docs/slides/korean/aws/hcp-terraform-v2/images/part_01.png diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/part_02.png b/docs/slides/korean/aws/hcp-terraform-v2/images/part_02.png similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/part_02.png rename to docs/slides/korean/aws/hcp-terraform-v2/images/part_02.png diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/part_03.png b/docs/slides/korean/aws/hcp-terraform-v2/images/part_03.png similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/part_03.png rename to docs/slides/korean/aws/hcp-terraform-v2/images/part_03.png diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/part_04.png b/docs/slides/korean/aws/hcp-terraform-v2/images/part_04.png similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/part_04.png rename to docs/slides/korean/aws/hcp-terraform-v2/images/part_04.png diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/permissions_model.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/permissions_model.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/permissions_model.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/permissions_model.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/pmr_technical_workflow.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/pmr_technical_workflow.svg similarity index 99% rename from docs/slides/korean/aws/terraform-cloud-v2/images/pmr_technical_workflow.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/pmr_technical_workflow.svg index d940f87a..e1ee191a 100644 --- a/docs/slides/korean/aws/terraform-cloud-v2/images/pmr_technical_workflow.svg +++ b/docs/slides/korean/aws/hcp-terraform-v2/images/pmr_technical_workflow.svg @@ -87,7 +87,7 @@ - + diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/policy-as-code.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/policy-as-code.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/policy-as-code.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/policy-as-code.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/policy_as_code_workflow.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/policy_as_code_workflow.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/policy_as_code_workflow.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/policy_as_code_workflow.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/projects-and-workspaces.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/projects-and-workspaces.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/projects-and-workspaces.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/projects-and-workspaces.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/sole_practitioner.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/sole_practitioner.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/sole_practitioner.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/sole_practitioner.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/team_collaboration.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/team_collaboration.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/team_collaboration.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/team_collaboration.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform-modules.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform-modules.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/terraform-modules.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/terraform-modules.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_adoption_journey_yt.png b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_adoption_journey_yt.png similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/terraform_adoption_journey_yt.png rename to docs/slides/korean/aws/hcp-terraform-v2/images/terraform_adoption_journey_yt.png diff --git a/docs/slides/azure/terraform-cloud-v2/images/terraform_api.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_api.svg similarity index 99% rename from docs/slides/azure/terraform-cloud-v2/images/terraform_api.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/terraform_api.svg index 6310b0d0..dceb0e6c 100644 --- a/docs/slides/azure/terraform-cloud-v2/images/terraform_api.svg +++ b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_api.svg @@ -314,8 +314,8 @@ - - Terraform Cloud + + HCP Terraform diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_callout_pattern_dark.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_callout_pattern_dark.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/terraform_callout_pattern_dark.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/terraform_callout_pattern_dark.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_callout_pattern_light.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_callout_pattern_light.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/terraform_callout_pattern_light.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/terraform_callout_pattern_light.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_cloud.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_cloud.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/terraform_cloud.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/terraform_cloud.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_cloud_cicd.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_cloud_cicd.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/terraform_cloud_cicd.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/terraform_cloud_cicd.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/terraform_modules.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_modules.svg similarity index 99% rename from docs/slides/aws/terraform-cloud-v2/images/terraform_modules.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/terraform_modules.svg index 36245c04..74c89d4b 100644 --- a/docs/slides/aws/terraform-cloud-v2/images/terraform_modules.svg +++ b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_modules.svg @@ -128,7 +128,7 @@ - + diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_registry.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_registry.svg similarity index 99% rename from docs/slides/korean/aws/terraform-cloud-v2/images/terraform_registry.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/terraform_registry.svg index fb472500..21f64290 100644 --- a/docs/slides/korean/aws/terraform-cloud-v2/images/terraform_registry.svg +++ b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_registry.svg @@ -268,8 +268,8 @@ - - Terraform Cloud + + HCP Terraform diff --git a/docs/slides/azure/terraform-cloud-v2/images/terraform_workflow.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_workflow.svg similarity index 99% rename from docs/slides/azure/terraform-cloud-v2/images/terraform_workflow.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/terraform_workflow.svg index 47bf7c14..5e693a7f 100644 --- a/docs/slides/azure/terraform-cloud-v2/images/terraform_workflow.svg +++ b/docs/slides/korean/aws/hcp-terraform-v2/images/terraform_workflow.svg @@ -441,7 +441,7 @@ - Terraform Cloud integrates into + HCP Terraform integrates into workflow by faciliating resources, execution steps and maintenace diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/unit-testing.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/unit-testing.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/unit-testing.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/unit-testing.svg diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/vcs_connection_overview.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/vcs_connection_overview.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/vcs_connection_overview.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/vcs_connection_overview.svg diff --git a/docs/slides/aws/terraform-cloud-v2/images/vcs_workflow_overview.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/vcs_workflow_overview.svg similarity index 99% rename from docs/slides/aws/terraform-cloud-v2/images/vcs_workflow_overview.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/vcs_workflow_overview.svg index aa52adb0..3a7fe98e 100644 --- a/docs/slides/aws/terraform-cloud-v2/images/vcs_workflow_overview.svg +++ b/docs/slides/korean/aws/hcp-terraform-v2/images/vcs_workflow_overview.svg @@ -121,7 +121,7 @@ - + diff --git a/docs/slides/korean/aws/terraform-cloud-v2/images/workspace-state.svg b/docs/slides/korean/aws/hcp-terraform-v2/images/workspace-state.svg similarity index 100% rename from docs/slides/korean/aws/terraform-cloud-v2/images/workspace-state.svg rename to docs/slides/korean/aws/hcp-terraform-v2/images/workspace-state.svg diff --git a/docs/slides/azure/terraform-cloud-v2/index.html b/docs/slides/korean/aws/hcp-terraform-v2/index.html similarity index 99% rename from docs/slides/azure/terraform-cloud-v2/index.html rename to docs/slides/korean/aws/hcp-terraform-v2/index.html index 5d47cf13..cb778b33 100644 --- a/docs/slides/azure/terraform-cloud-v2/index.html +++ b/docs/slides/korean/aws/hcp-terraform-v2/index.html @@ -7,7 +7,7 @@ - Terraform Cloud on Azure + HCP Terraform on AWS @@ -358,7 +358,7 @@ // want to ignore. The following slides do not active the // lightbox - this is an all-or-nothing approach and can be improved. const ignore_ids = [ - "slide-Intro-to-Terraform-Cloud", + "slide-Intro-to-hcp-terraform", "slide-terraform-adoption-journey", "slide-lab-guidance-01", "slide-lab-guidance-02", diff --git a/docs/slides/korean/aws/terraform-cloud-v2/index.md b/docs/slides/korean/aws/hcp-terraform-v2/index.md similarity index 77% rename from docs/slides/korean/aws/terraform-cloud-v2/index.md rename to docs/slides/korean/aws/hcp-terraform-v2/index.md index bedbc359..02bdc8f5 100644 --- a/docs/slides/korean/aws/terraform-cloud-v2/index.md +++ b/docs/slides/korean/aws/hcp-terraform-v2/index.md @@ -1,16 +1,16 @@ -name: Intro-to-Terraform-Cloud +name: Intro-to-hcp-terraform class: center, middle, title-slide, no-footer count: true ![:scale 40%](images/HCP_Diagram_OnBlack_Terraform.svg) -# Terraform Cloud on AWS +# HCP Terraform on AWS ??? -# Terraform Cloud on AWS workshop +# HCP Terraform on AWS workshop ## Getting started -반나절 동안 진행되는 이 워크샵은 Instruqt 실습을 위해 AWS 기반 애플리케이션을 사용하여 Terraform Cloud를 소개합니다. Terraform을 처음 사용하시는 분은 이 세션에 앞서 AWS Instruqt의 Terraform OSS 소개 트랙을 먼저 수강해 보시기 바랍니다. +반나절 동안 진행되는 이 워크샵은 Instruqt 실습을 위해 AWS 기반 애플리케이션을 사용하여 HCP Terraform를 소개합니다. Terraform을 처음 사용하시는 분은 이 세션에 앞서 AWS Instruqt의 Terraform Community Edition 소개 트랙을 먼저 수강해 보시기 바랍니다. -워크샵 진행 방법에 대한 지침은 표준 [instructor's guide](https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_terraform_cloud_INSTRUCTOR_GUIDE.md).에 나와 있습니다. +워크샵 진행 방법에 대한 지침은 표준 [instructor's guide](https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_hcp_terraform_INSTRUCTOR_GUIDE.md).에 나와 있습니다. ## Navigation @@ -66,9 +66,9 @@ Terraform에서 관리하는 모든 리소스에서 권한 및 거버넌스 기 2. If your audience is less than 20 people you have the option to quickly go through the room and ask everyone to introduce themselves if they wish to participate. ## 워크샵의 목표 -1. Launch a deployment to AWS using Terraform Cloud using VCS workflows +1. Launch a deployment to AWS using HCP Terraform using VCS workflows 2. Explore management and configuration options with team permissions and deployment policies -3. Test the Private Module Registry and some API functions +3. Test the Terraform Private Registry and some API functions --- name: Table-of-Contents @@ -78,7 +78,7 @@ class: col-2, top, minimal-list, minimal-toc **1- 인프라 자동화** * Terraform Adoption Journey * Terraform Editions -* Terraform Cloud +* HCP Terraform
@@ -97,7 +97,7 @@ class: col-2, top, minimal-list, minimal-toc
**4- Terraform 모듈 & API** -* Private Module Registry +* Terraform Private Registry * API Driven Workflows * CI/CD Integration @@ -130,7 +130,7 @@ class: table-exercises

파트 1

  • 시작하기 - 실습 살펴보기
  • -
  • Terraform Cloud 설정
  • +
  • HCP Terraform 설정
  • Terraform State 안전하게 보관하기
  • Quiz 1: Terraform Remote State
@@ -139,7 +139,7 @@ class: table-exercises

파트 2

  • 워크스페이스 변수
  • -
  • Terraform Cloud에서 팀과 작업하기
  • +
  • HCP Terraform에서 팀과 작업하기
  • Quiz 2: Secure Variables
@@ -160,7 +160,7 @@ class: table-exercises
  • 프라이빗 모듈 저장소(Registry)
  • API 기반의(Driven) 워크플로우
  • -
  • Quiz 4: Private Module Registry
  • +
  • Quiz 4: Terraform Private Registry
@@ -186,12 +186,12 @@ class: table-exercises name: participant-requirements class: col-3, header-adjust, minimal-list # 참석자 요구 사항 -### Terraform Cloud -- Terraform Cloud 계정 (free) +### HCP Terraform +- HCP Terraform 계정 (free) - Terraform "___Team & Governance Plan___" Trial -- Terraform Cloud 개인 액세스(Personal Access) 토큰 +- HCP Terraform 개인 액세스(Personal Access) 토큰 ### GitHub - 개인 계정 @@ -234,11 +234,11 @@ This chapter is organized in three sections: 2. Terraform Editions - - Understand Terraform OSS and the differences between OSS and Cloud and Enterprise + - Understand Terraform Community Edition and the differences between Community Edition, HCP Terraform, and Terraform Enterprise -3. Benefits of using Terraform Cloud +3. Benefits of using HCP Terraform - - Hightlight the key benefits of using Terraform Cloud to + - Hightlight the key benefits of using HCP Terraform to - Build infrastructure, - Standardize best practices, and @@ -397,44 +397,44 @@ name: terraform-editions class: col-3, header-adjust, header-adjust-minimal-list # Terraform Editions -### Terraform Open Source +### Terraform Community Edition * 인프라를 코드로 적용하고 표준 구성 언어 사용 * 버전 관리 시스템에 구성 파일 저장 * 최신 버전을 수동으로 가져와서 커밋하여 Terraform 작업 수행 * 인프라 템플릿으로 퍼블릭 모듈 사용 및 게시 -### Terraform Cloud -* 기존 워크플로우에 Terraform Cloud 통합 +### HCP Terraform +* 기존 워크플로우에 HCP Terraform 통합 * 승인된 팀만 인프라에 액세스, 편집 및 프로비저닝할 수 있도록 보장 * 승인된 인프라 패턴을 정의하기 위해 비공개 레지스트리에 구성 모듈 게시 * Policy as Code 프레임워크를 사용하여 모범 사례 및 보안 규칙 적용 ### Terraform Enterprise -* HashiCorp 전문 지원을 통해 Terraform Cloud의 프라이빗 인스턴스를 설정 +* HashiCorp 전문 지원을 통해 HCP Terraform의 프라이빗 인스턴스를 설정 * 고급 보안 및 규정 준수 요구 사항 수용 ??? # Terraform Editions -## Terraform OSS +## Terraform Community Edition - A.K.A. Terraform - Terraform is a sophisticated technology used to deploy infrastructure - Terraform contains everything you need to configure, plan and deploy -## Terraform Cloud -- Terraform Cloud is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments with Terraform +## HCP Terraform +- HCP Terraform is a SOC2-compliant cloud service to manage the lifecycle of infrastructure deployments with Terraform -- Terraform Cloud provides features to manage user access, assign team permissions, automate integrations, host private resources, enforce policies, conduct audit, etc. +- HCP Terraform provides features to manage user access, assign team permissions, automate integrations, host private resources, enforce policies, conduct audit, etc. ## Terraform Enteprise -- Terraform Enterprise is private instance of Terraform Cloud deployed in a private environment with dedicated support from HashiCorp. +- Terraform Enterprise is private instance of HCP Terraform deployed in a private environment with dedicated support from HashiCorp. - Terraform Enterprise appeals to security conscious organizations that must accommodate advanced security and compliance requirements. --- -name: terraform-cloud +name: hcp-terraform class: col-2, header-adjust, minimal-list -# Terraform Cloud +# HCP Terraform ### 프로비저닝을 위한 단일 컨트롤 플레인 * 완전 관리형(Fully-managed), 코드형 인프라(infrastructure-as-code) 클라우드 서비스 @@ -445,24 +445,24 @@ class: col-2, header-adjust, minimal-list * 고급 보안, 규정 준수 및 거버넌스를 제공하는 엔터프라이즈 기능 -![Terraform Cloud](images/terraform_cloud.svg) +![HCP Terraform](images/terraform_cloud.svg) ??? -# Terraform Cloud +# HCP Terraform -## Why Terraform Cloud? +## Why HCP Terraform? -- Terraform Cloud는 모든 클라우드, 데이터센터 및 서비스의 프로비저닝, 규정 준수 및 관리를 위한 인프라 자동화를 지원합니다. -Terraform Cloud enables infrastructure automation for provisioning, compliance, and management of any cloud, datacenter, and service. +- HCP Terraform는 모든 클라우드, 데이터센터 및 서비스의 프로비저닝, 규정 준수 및 관리를 위한 인프라 자동화를 지원합니다. +HCP Terraform enables infrastructure automation for provisioning, compliance, and management of any cloud, datacenter, and service. -- Terraform Cloud provides infrastructure automation as a service, is free to get started, and has an in-place upgrade to paid option. -Terraform Cloud는 인프라 자동화를 서비스로 제공하며, 무료로 시작할 수 있고, 제자리에서(in-place) 유료로 업그레이드할 수 있는 옵션이 있습니다. +- HCP Terraform provides infrastructure automation as a service, is free to get started, and has an in-place upgrade to paid option. +HCP Terraform는 인프라 자동화를 서비스로 제공하며, 무료로 시작할 수 있고, 제자리에서(in-place) 유료로 업그레이드할 수 있는 옵션이 있습니다. -- Terraform Cloud is not the same as Terraform OSS. Terraform Cloud is a cloud service, and Terraform OSS is the technology used to provision infrastructure. -Terraform Cloud는 Terraform OSS와 동일하지 않습니다. Terraform Cloud는 클라우드 서비스이며, Terraform OSS는 인프라를 프로비저닝하는 데 사용되는 기술입니다. +- HCP Terraform is not the same as Terraform Community Edition. HCP Terraform is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. +HCP Terraform는 Terraform Community Edition와 동일하지 않습니다. HCP Terraform는 클라우드 서비스이며, Terraform Community Edition는 인프라를 프로비저닝하는 데 사용되는 기술입니다. --- -name: terraform-cloud-build +name: hcp-terraform-build class: col-2, header-adjust, minimal-paragraph # Build infrastructure remotely with your team @@ -482,11 +482,11 @@ CLI, UI, 버전 제어 또는 API에서 Terraform을 실행할 수 있습니다. # Build infrastructure remotely with your team - This slide is about **`team collaboration`** across an organization. -- Terraform Cloud provides a number of features for teams to collaborate with a common purpose. +- HCP Terraform provides a number of features for teams to collaborate with a common purpose. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a story that fits your narrative. For example: -1. **Remote state storage**: Remove a vulnerable part of the process by storing the deployment state in Terraform Cloud, where it is stored in an encrypted format at rest. +1. **Remote state storage**: Remove a vulnerable part of the process by storing the deployment state in HCP Terraform, where it is stored in an encrypted format at rest. 2. **Flexible workflows**: Allow practitioners to use the apprach that works best for their situation. @@ -495,7 +495,7 @@ CLI, UI, 버전 제어 또는 API에서 Terraform을 실행할 수 있습니다. 4. **Collaborate on infrastructure changes**: Each team is responsible for their domain of expertise. --- -name: terraform-cloud-standard +name: hcp-terraform-standard class: col-2, header-adjust, minimal-paragraph # Standardize best practices ###프라이빗 레지스트리 @@ -514,7 +514,7 @@ Sentinel 또는 3rd party 도구로 실행되는 모든 Terraform에 대한 보 # Standardize best practices - This slide is about **`business calibration`** when adopting a service for deployment automation. -- Terraform Cloud introduces workflow features for teams to support typical enterprise requirements. +- HCP Terraform introduces workflow features for teams to support typical enterprise requirements. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a point that fits your narrative. For example: @@ -527,14 +527,14 @@ Sentinel 또는 3rd party 도구로 실행되는 모든 Terraform에 대한 보 4. **Policy as code**: Remove risk with standard deployments, avoiding common misconfigurations, maintaining security standards and confirming compliance requirements. --- -name: terraform-cloud-cicd +name: hcp-terraform-cicd class: col-2, header-adjust, minimal-paragraph # Integrating into your CI/CD pipelines ###CI/CD 통합 테라폼 실행(runs)을 기존 툴체인에 통합하여 자동화를 개선합니다. ###API 기반 작업 -기존 자동화 워크플로에 Terraform Cloud를 빌드합니다. +기존 자동화 워크플로에 HCP Terraform를 빌드합니다. ###동시 실행 계획(plan)에 동시(concurrent) 실행(runs)을 추가하여 팀의 속도를 높입니다. @@ -545,17 +545,17 @@ class: col-2, header-adjust, minimal-paragraph # Standardize best practices - This slide is about **`process optimization`** in service delivery. -- Terraform Cloud integrates in various forms to enhance existing service delivery models. +- HCP Terraform integrates in various forms to enhance existing service delivery models. **INSTRUCTOR NOTE**: Please do not read the bullets. Instead, choose a point that fits your narrative. For example: -1. **CI/CD integration**: Inject automation into your service delivery practice, where Terraform Cloud works alongside your service management requests and fullfilment channels. +1. **CI/CD integration**: Inject automation into your service delivery practice, where HCP Terraform works alongside your service management requests and fullfilment channels. 2. **Concurrent runs**: Accelerate delivery and control the rate of deployments; support seasonal, high-intensity service delivery workloads. -3. **API-driven Operations**: Support an API-first methodology and align with your existing service management practices. Terraform Cloud offers multiple API-driven methods to complement the chain of operations in existing automation workflows. +3. **API-driven Operations**: Support an API-first methodology and align with your existing service management practices. HCP Terraform offers multiple API-driven methods to complement the chain of operations in existing automation workflows. -4. **Private datacenter connectivity**: Extend Terraform Cloud features and workflow steps to private networks that include Cloud and traditional datacenter environments. +4. **Private datacenter connectivity**: Extend HCP Terraform features and workflow steps to private networks that include Cloud and traditional datacenter environments. --- name: lab-guidance-01 @@ -570,13 +570,13 @@ class: col-2, adjust-minimal-sub-list * Terraform 명령 사용해 보기 2. Terraform 클라우드 설정 - * Terraform Cloud에 가입 또는 로그인 + * HCP Terraform에 가입 또는 로그인 * 팀 & 거버넌스 평가판으로 업그레이드 - * 개인용 Terraform Cloud 토큰 생성 + * 개인용 HCP Terraform 토큰 생성 3. Terraform State 보호 * AWS에서 작동하는 앱 환경 배포 - * Terraform Cloud를 사용하여 Terraform State 관리 + * HCP Terraform를 사용하여 Terraform State 관리 - Quiz 1 - Terraform Remote State ??? @@ -617,14 +617,14 @@ class: review, no-footer 1. Terraform을 사용한 코드형 인프라의 도입 여정에는 개인, 그룹 및 조직의 성숙 단계가 포함됩니다. -2. Terraform Cloud는 인프라 배포의 수명 주기를 관리하는 SOC2 호환 클라우드 서비스입니다. +2. HCP Terraform는 인프라 배포의 수명 주기를 관리하는 SOC2 호환 클라우드 서비스입니다. ??? # Chapter 1 review 1. The adoption patterns we see, both among our large-scale users as well as individual contributors, involve multiple adaptive stages. The central idea remains uniform in that automation should be standardized as shared practice, and that governance guidelines are needed to support emerging requirements. -2. Terraform Cloud is not the same as Terraform OSS. Terraform Cloud is a cloud service, and Terraform OSS is the technology used to provision infrastructure. We use Terraform Cloud to manage the lifecyle of infrastructure deployemnts using Terraform [OSS]. +2. HCP Terraform is not the same as Terraform Community Edition. HCP Terraform is a cloud service, and Terraform Community Edition is the technology used to provision infrastructure. We use HCP Terraform to manage the lifecyle of infrastructure deployemnts using Terraform [Community Edition]. --- name: Access-Control class: title, no-footer @@ -638,9 +638,9 @@ class: title, no-footer This chapter is organized in three sections: 1. The Core Terraform Workflow - - Review the benefits of the Core Terraform Workflow with Terraform Cloud + - Review the benefits of the Core Terraform Workflow with HCP Terraform -2. Shared Resources in Terraform Cloud +2. Shared Resources in HCP Terraform - Projects and Workspaces - Deployment State @@ -648,7 +648,7 @@ This chapter is organized in three sections: 3. Team Collaboration - - Hightlight how teams access shared resources in Terraform Cloud + - Hightlight how teams access shared resources in HCP Terraform - How to apply the resources in a typical project lifecycle **INSTRUCTOR NOTE**: Remind the audience the topics above are showcased in the lab portion. @@ -707,28 +707,28 @@ class: col-3, header-adjust, header-adjust-minimal-list ![:scale 40%](images/adoption_journey_individual.svg) --- -name: core-terraform-workflow-with-tfc +name: core-terraform-workflow-with-hcp-terraform class: col-3, header-adjust, header-adjust-minimal-list -# The Core Terraform Workflow and Terraform Cloud +# The Core Terraform Workflow and HCP Terraform ### Write * 인프라를 코드로(IaC) 작성하고 VCS에서 유지 관리 * 팀원들은 풀 리퀘스트(PR)를 통해 변경 사항을 제안할 준비가 될 때까지 구성 작성 작업을 수행 -* Terraform Cloud는 안전한 상태관리(State), 입력 변수 및 승인된 액세스를 제공 +* HCP Terraform는 안전한 상태관리(State), 입력 변수 및 승인된 액세스를 제공
### Plan * 자동화된 예측(speculative) 계획(plans)은 적용하기 전에 변경 사항을 검토하므로 팀원이 전체 계획 세부 정보를 빠르게 분석할 수 있음 -* Terraform Cloud는 월별 배포 비용을 예측할 수 있음 -* Terraform Cloud는 계획에 대해 정책을 평가하여 코드형 정책(policy-as-code) 로직의 준수 여부를 판단 +* HCP Terraform는 월별 배포 비용을 예측할 수 있음 +* HCP Terraform는 계획에 대해 정책을 평가하여 코드형 정책(policy-as-code) 로직의 준수 여부를 판단 ### Apply * 팀 구성원은 CLI, API 또는 VCS 변경 제어를 통해 __apply__ 지시문(directives)을 트리거 -* 권한이 부여된 Terraform Cloud 사용자는 배포를 승인하거나 거부할 수 있음 -* Terraform Cloud는 3rd Party 도구와 서비스를 통합하여 비용, 보안 및 규정 준수를 관리하거나 사용자 정의 로직으로 워크플로우를 개선할 수 있음 +* 권한이 부여된 HCP Terraform 사용자는 배포를 승인하거나 거부할 수 있음 +* HCP Terraform는 3rd Party 도구와 서비스를 통합하여 비용, 보안 및 규정 준수를 관리하거나 사용자 정의 로직으로 워크플로우를 개선할 수 있음 ??? -# The Core Terraform Workflow and Terraform Cloud +# The Core Terraform Workflow and HCP Terraform - There are still only three stages on the Core Terraform Workflow, but there are significant improvements in the approach to manage deployments. For instance: @@ -742,13 +742,13 @@ class: col-3, header-adjust, header-adjust-minimal-list ![:scale 40%](images/adoption_journey_multiple_groups.svg) --- -name: tfc-workspaces +name: hcp-terraform-workspaces class: col-2, minimal-list # Projects and Workspaces -- Terraform Cloud는 팀에 맞는 프로젝트 및 워크스페이스로 인프라 컬렉션을 구성 +- HCP Terraform는 팀에 맞는 프로젝트 및 워크스페이스로 인프라 컬렉션을 구성 -- 프로젝트(Project)는 Terraform Cloud 워크스페이스의 논리적 그룹 +- 프로젝트(Project)는 HCP Terraform 워크스페이스의 논리적 그룹 - 워크스페이스에는 지정된 인프라 모음(collection)을 관리하는 데 필요한 모든 것이 포함되며, 별도의 워크스페이스는 완전히 별개의(separate) 작업 개체처럼 작동합니다. @@ -765,13 +765,13 @@ class: col-2, minimal-list - Grouping deployment types by department - Grouping deployment types by team -- Workspaces fit into Projects to execute on the actual deployments. Each workspace follows logic for execution and access rules, policies, resources, integrations, etc. are inherent from the project or Terraform Cloud organization. +- Workspaces fit into Projects to execute on the actual deployments. Each workspace follows logic for execution and access rules, policies, resources, integrations, etc. are inherent from the project or HCP Terraform organization. --- -name: tfc-state +name: hcp-terraform-state class: col-2, minimal-list # Deployment State -- Terraform Cloud는 시간 경과에 따른 인프라 변경 사항을 분석하는 데 사용할 수 있도록 과거 상태(state) 버전을 유지함 +- HCP Terraform는 시간 경과에 따른 인프라 변경 사항을 분석하는 데 사용할 수 있도록 과거 상태(state) 버전을 유지함 - 권한이 부여된 사용자는 상태(state)를 다운로드하고 조작하여 구성의 변동에 맞게 기존 리소스를 수동으로 가져오거나, 테인트(taint)하거나, 이동하거나, 이름을 바꿀 수 있음 @@ -790,13 +790,13 @@ class: col-2, minimal-list - All state information is fully encrypted at rest, where each object is encrypted with a unique encryption key. --- -name: tfc-variables +name: hcp-terraform-variables class: col-2, minimal-list # Deployment Variables -- Terraform Cloud는 **변수 세트(variable sets)**를 글로벌 범위로 지원합니다. 이러한 변수는 전역적으로 노출되거나 일부 워크스페이스에 노출될 수 있음 +- HCP Terraform는 **변수 세트(variable sets)**를 글로벌 범위로 지원합니다. 이러한 변수는 전역적으로 노출되거나 일부 워크스페이스에 노출될 수 있음 -- Terraform Cloud 워크스페이스는 로컬 변수를 사용하며 변수 세트를 재정의할 수 있음 +- HCP Terraform 워크스페이스는 로컬 변수를 사용하며 변수 세트를 재정의할 수 있음 - 변수 하위 집합(subsets)에는 다음이 포함 @@ -808,7 +808,7 @@ class: col-2, minimal-list
-![Terraform Cloud Variables](images/deployment_variables.svg) +![HCP Terraform Variables](images/deployment_variables.svg) ??? # 배포 변수(Deployment Variables) @@ -822,29 +822,29 @@ class: col-2, minimal-list - Things that are configured during the deployment. Consider, the internal ID or a Cloud VPC, the ARN of a security group, the URL or a storage bucket. These can be more applicable to workspace variables. --- -name: tfc-user-permissions +name: hcp-terraform-user-permissions class: col-2, minimal-list # 권한 모델(Permissions Model) -- 사용자는 적절한 부여(grant) 권한이 있는 팀에 소속되어 있어야 Terraform Cloud에서 작업을 수행할 수 있음 +- 사용자는 적절한 부여(grant) 권한이 있는 팀에 소속되어 있어야 HCP Terraform에서 작업을 수행할 수 있음 - 권한 모델은 조직 수준(organization-level)과 워크스페이스 수준(workspace-level) 권한으로 분류됨 - 조직(Organization) 소유자는 팀에 정책, 프로젝트 및 워크스페이스, VCS 설정, 개인 레지스트리 프로바이더 및 모듈, 조직 전반의 정책 재정의 관리 권한을 부여할 수 있음 -![Terraform Cloud Permissions Model](images/permissions_model.svg) +![HCP Terraform Permissions Model](images/permissions_model.svg) ??? # Permissions Model -- The permissions model splits into into organization-level and workspace-level permissions. This is the best combination to align administrators, producers and consumers to manage, create and consume resources via Terraform Cloud. +- The permissions model splits into into organization-level and workspace-level permissions. This is the best combination to align administrators, producers and consumers to manage, create and consume resources via HCP Terraform. -- The organization-level permissions use an `Implicit-Deny` - which means Terraform Cloud administration is subject to assignment. In this model, teams fucntion based on their permissions and membership. +- The organization-level permissions use an `Implicit-Deny` - which means HCP Terraform administration is subject to assignment. In this model, teams fucntion based on their permissions and membership. -- The workspace-level permissions have `Implied Permissions` - where Terraform Cloud provides most common functions. Under this model permissions imply other permissions; for example, permission to queue plans also grants permission to read runs. +- The workspace-level permissions have `Implied Permissions` - where HCP Terraform provides most common functions. Under this model permissions imply other permissions; for example, permission to queue plans also grants permission to read runs. -- Q: What complements the permissions model? A: The alignment of Terraform Cloud teams with external teams via single-sign-on (SSO). +- Q: What complements the permissions model? A: The alignment of HCP Terraform teams with external teams via single-sign-on (SSO). --- -name: tfc-team-collaboration +name: hcp-terraform-team-collaboration class: col-2, header-adjust-minimal-list # 팀 협업(Team collaboration) Terraform 협업 환경에는 세 가지 주요 요소가 있습니다: @@ -852,11 +852,11 @@ Terraform 협업 환경에는 세 가지 주요 요소가 있습니다: - **중앙 집중식 계획 및 적용(Centralized plans and applies)**: 협력자들이 함께 검토하고 의사 결정을 내릴 수 있는 한 곳에서 Terraform 계획(plans) 및 적용(applys)을 안전하게 실행합니다. - **상태 관리(State management)**: Terraform 상태 파일의 저장, 보안, 잠금 및 버전 관리 -![Terraform Cloud Permissions Model](images/collaboration_experience.svg) +![HCP Terraform Permissions Model](images/collaboration_experience.svg) ??? # Team collaboration -- The structure of the Möbius strip visual reflects a familiar way to describe a lifecycle process. There are many examples of that idea, and our intent is to explain where Terraform Cloud provides value. +- The structure of the Möbius strip visual reflects a familiar way to describe a lifecycle process. There are many examples of that idea, and our intent is to explain where HCP Terraform provides value. - These concepts likely overlap with existing frameworks and that is why integration resonates with sophisticated environments. @@ -876,10 +876,10 @@ class: col-2, adjust-minimal-sub-list * Variable Sets 살펴보기 * Workspace variables 비교하기 -1. Working with Teams in Terraform Cloud +1. Working with Teams in HCP Terraform * Organization Teams 생성하기 * Teams에 워크스페이스 권한(Workspace Permissions) 할당하기 - * Terraform Cloud 사용자를 Teams에 초대하기 + * HCP Terraform 사용자를 Teams에 초대하기 - Quiz 2 - Secure Variables @@ -903,16 +903,16 @@ name: chapter-2-review class: review, no-footer # Chapter 2 리뷰 -1. 조직(organization) 및 워크스페이스(workspace) 수준으로 분할되는 Terraform Cloud 권한 모델을 알아보았습니다. +1. 조직(organization) 및 워크스페이스(workspace) 수준으로 분할되는 HCP Terraform 권한 모델을 알아보았습니다. -2. Terraform Cloud의 리소스 관리(Resource administration)는 기본적으로 암시적 거부(implicit deny-all) 모델을 사용하며, 팀은 글로벌, 프로젝트 또는 워크스페이스 할당이 필요합니다. +2. HCP Terraform의 리소스 관리(Resource administration)는 기본적으로 암시적 거부(implicit deny-all) 모델을 사용하며, 팀은 글로벌, 프로젝트 또는 워크스페이스 할당이 필요합니다. ??? # Chapter 2 review -1. When teams are intent in formalizing their approach to automated infrastructure deployment with Terraform, there need to be fundamental principals to support a responsible use of Terraform Cloud. The permissions model is a core principle to support governance and responsible use of IaC automation. Without a permissions model, teams operated based on different opinions without self-supervision. +1. When teams are intent in formalizing their approach to automated infrastructure deployment with Terraform, there need to be fundamental principals to support a responsible use of HCP Terraform. The permissions model is a core principle to support governance and responsible use of IaC automation. Without a permissions model, teams operated based on different opinions without self-supervision. -2. When teams have different responsibilities, the platform instrumentation should allow for effective changes at a group level to support roles, not individual identities. Having an implicit `deny-all` for the Terraform Cloud organization, and `implied permissions` for teams and workspaces accelerates the effective purpose of IaC automation. +2. When teams have different responsibilities, the platform instrumentation should allow for effective changes at a group level to support roles, not individual identities. Having an implicit `deny-all` for the HCP Terraform organization, and `implied permissions` for teams and workspaces accelerates the effective purpose of IaC automation. --- name: VCS-and-Governance @@ -947,46 +947,46 @@ class: title, no-footer *INSTRUCTOR NOTE*: Remind the audience that the hands-on portions of the lab demonstrate the topics above. --- -name: tfc-vcs-workflow +name: hcp-terraform-vcs-workflow class: col-2, minimal-list # VCS 연결 -- Access a list of repositories and link to your private module registry, policy sets and workspaces in Terraform Cloud +- Access a list of repositories and link to your Terraform Private Registry, policy sets and workspaces in HCP Terraform -- Terraform Cloud downloads the contents of a repository based on workflow triggers +- HCP Terraform downloads the contents of a repository based on workflow triggers -- Terraform Cloud supports Azure DevOps, BitBucket, GitHub, and GitLab +- HCP Terraform supports Azure DevOps, BitBucket, GitHub, and GitLab ![VCS Workflow Overview](images/vcs_workflow_overview.svg) ??? # VCS 연결 -- Terraform Cloud는 VCS 연결을 사용하여 리포지토리에 있는 에셋에 직접 연결합니다. +- HCP Terraform는 VCS 연결을 사용하여 리포지토리에 있는 에셋에 직접 연결합니다. - VCS 연결은 한 번 구성되며 세 가지 특정 유형의 에셋에 사용됩니다: - 1. 비공개 Terraform Cloud 레지스트리에 나열할 Terraform 모듈 + 1. 비공개 HCP Terraform 레지스트리에 나열할 Terraform 모듈 2. 정책 세트에 맞게 조정할 정책 컬렉션 3. 워크스페이스와 1:1 관계의 Terraform 배포 -- It is important to remember that Terraform Cloud Worspaces can use up to three types of workflows to trigger a run: 1- `CLI`, 2- `VCS` and 3- `API`. Using VCS satisfies one of these workflow patterns. +- It is important to remember that HCP Terraform Worspaces can use up to three types of workflows to trigger a run: 1- `CLI`, 2- `VCS` and 3- `API`. Using VCS satisfies one of these workflow patterns. --- -name: tfc-vcs-connection +name: hcp-terraform-vcs-connection class: col-2, minimal-list # VCS Workflow -- 워크스페이스가 VCS 제공업체에 웹훅을 등록하면 Terraform Cloud가 브랜치에 대한 새로운 커밋에 대한 알림을 받습니다. +- 워크스페이스가 VCS 제공업체에 웹훅을 등록하면 HCP Terraform가 브랜치에 대한 새로운 커밋에 대한 알림을 받습니다. -- VCS 통합을 통해 Terraform Cloud는 전용 Terraform Cloud 워커에서 자동으로 실행을 시작할 수 있습니다. +- VCS 통합을 통해 HCP Terraform는 전용 HCP Terraform 워커에서 자동으로 실행을 시작할 수 있습니다. -- Terraform Cloud는 풀 리퀘스트가 추측 계획(speculative plans)으로 인프라에 어떤 영향을 미치는지 자동으로 예측하여 코드 검토를 더 쉽게 만듭니다. +- HCP Terraform는 풀 리퀘스트가 추측 계획(speculative plans)으로 인프라에 어떤 영향을 미치는지 자동으로 예측하여 코드 검토를 더 쉽게 만듭니다. ![VCS Connection Overview](images/vcs_connection_overview.svg) ??? # VCS Workflow -- A VCS connection is established at the administrative level for the VCS provider and Terraform Cloud. +- A VCS connection is established at the administrative level for the VCS provider and HCP Terraform. - From the illustration: @@ -994,24 +994,24 @@ class: col-2, minimal-list 2. Notifications are triggered by pull requests and merges. - 3. The Webhook notifies the associated Terraform Cloud workspace. + 3. The Webhook notifies the associated HCP Terraform workspace. - 4. Terraform Cloud securely retrieves the IaC collection to a secure location in Terraform Cloud. The location is not exposed outside of Terraform Cloud. + 4. HCP Terraform securely retrieves the IaC collection to a secure location in HCP Terraform. The location is not exposed outside of HCP Terraform. - 5. With a pull request, Terraform Cloud runs a speculative plan. + 5. With a pull request, HCP Terraform runs a speculative plan. 6. The results are processed back to the VCS pull request for further processing. 7. With a successful plan, an other validing tests, the pull request is merged. - 8. With an authorized VCS merge, Terraform Cloud initiates a new run and completes the entire set of steps to deploy the environment. + 8. With an authorized VCS merge, HCP Terraform initiates a new run and completes the entire set of steps to deploy the environment. --- -name: tfc-policy-as-code +name: hcp-terraform-policy-as-code class: col-2, minimal-list, constrain-image # Policy As Code -- Terraform Cloud는 해시코프 센티널 또는 오픈 정책 에이전트(OPA)로 작성된 정책으로 규칙을 적용합니다. +- HCP Terraform는 해시코프 센티널 또는 오픈 정책 에이전트(OPA)로 작성된 정책으로 규칙을 적용합니다. - 정책은 코드로 표현되고 정책 세트로 그룹화됩니다. @@ -1050,7 +1050,7 @@ The categories above are not exhaustive and there are many other optional catego >> A development group should not deploy a fleet of VMs, any with 8-32 cores and/or 16-64GB memory, on a Friday afternoon past 3PM. --- -name: tfc-policy-as-code-validation +name: hcp-terraform-policy-as-code-validation class: col-2, minimal-list # Automated Policy Validation @@ -1089,7 +1089,7 @@ class: col-2, minimal-list 4. When a policy check fails, the assigned enforcement level determines whether a user with authority can override. --- -name: tfc-vcs-automation +name: hcp-terraform-vcs-automation class: col-3, header-adjust, header-adjust-minimal-paragraph # 자동화된 테스트 @@ -1119,7 +1119,7 @@ class: col-3, header-adjust, header-adjust-minimal-paragraph - *Unit testing* looks at expected values in the Terraform plan. -- *Contract testing* compares infrastructure state. Highlight that Terraform Cloud allows state sharing between workspaces to explore key informational data points. +- *Contract testing* compares infrastructure state. Highlight that HCP Terraform allows state sharing between workspaces to explore key informational data points. - *Integration testing* compares __real__ resources and their interaction. These often include functional, policy and security domains. You can introduce `Run Tasks` as the vehicle to perform this type of testing. @@ -1168,7 +1168,7 @@ class: col-2, adjust-minimal-sub-list **INSTRUCTOR NOTES**: - This is the longest lab portion of the workshop. -- It is possibly the most challenging part for some participants as they have to use GitHub in combination with Terraform Cloud. +- It is possibly the most challenging part for some participants as they have to use GitHub in combination with HCP Terraform. - It is important to remind your audience that the lab is available for 5 hours. - If you have extended the Instruqt Invite beyond the workshop time, you can emphasize. @@ -1177,15 +1177,15 @@ name: chapter-3-review class: review, no-footer # Chapter 3 review -1. Terraform Cloud supports CLI, VCS and API workflows, adapting to different code-management practices +1. HCP Terraform supports CLI, VCS and API workflows, adapting to different code-management practices -2. Terraform Cloud enables testing and validation with policy-as-code, and sustains maintenance with deployment health-checks and alerting +2. HCP Terraform enables testing and validation with policy-as-code, and sustains maintenance with deployment health-checks and alerting ??? # Chapter 3 review -1. Terraform execution is driven by different priorities and the workflows in Terraform Cloud are adaptive. VCS-driven workflows are important for groups that are focused specifically in Infrastructure-as-Code delivery. VCS-driven workflows shorten the knowledge gap between newhires and veterans because they use a common set of defined practices; and VCS-driven workflows flattens the adoption curve for consumers because not everyone needs to learn Terraform. +1. Terraform execution is driven by different priorities and the workflows in HCP Terraform are adaptive. VCS-driven workflows are important for groups that are focused specifically in Infrastructure-as-Code delivery. VCS-driven workflows shorten the knowledge gap between newhires and veterans because they use a common set of defined practices; and VCS-driven workflows flattens the adoption curve for consumers because not everyone needs to learn Terraform. -2. Policy validation is increasingly necessary for all aspect of \[Work\]-as-Code practices. In our case, we truly believe that there should not be ___#YOLO-driven development!___ when dealing with infrastructure deployments. Terraform Cloud provides deployment health-checks and alerting mechanisms to provide continual coverage of emerging changes in infrastructure deployments. +2. Policy validation is increasingly necessary for all aspect of \[Work\]-as-Code practices. In our case, we truly believe that there should not be ___#YOLO-driven development!___ when dealing with infrastructure deployments. HCP Terraform provides deployment health-checks and alerting mechanisms to provide continual coverage of emerging changes in infrastructure deployments. --- name: Modules-and-API class: title, no-footer @@ -1201,13 +1201,13 @@ This chapter is organized in three sections: - Why is the Public Regitry important? - What is the value of Terraform modules? - - The advantage of the Terraform Cloud Private Module Registry (PMR) + - The advantage of the HCP Terraform Private Registry 2. Business Process Models - Trusted Orchestrator - VCS coordination - - Terraform Cloud + - HCP Terraform 3. API-driven workflows @@ -1235,7 +1235,7 @@ class: col-2, minimal-list - The progression of the Terraform journey into teams naturally leads to Terraform modules. These are like templates that teams often customize and use in deployments. -- HashiCorp is comoditazing this centralized registry and extending it to Policy-as-Code and Run Tasks. **Policy-As-Code** are libraries of policies that can be used within Terraform Cloud. **Run Tasks** are third-party integrations to tools and services to manage cost, security, compliance and more. +- HashiCorp is comoditazing this centralized registry and extending it to Policy-as-Code and Run Tasks. **Policy-As-Code** are libraries of policies that can be used within HCP Terraform. **Run Tasks** are third-party integrations to tools and services to manage cost, security, compliance and more. --- name: terraform-modules @@ -1246,7 +1246,7 @@ class: col-2, minimal-list - 생산자(Producer) 그룹은 구성 가능한 속성을 갖춘 표준 템플릿 제안(offerings)으로 선별된(curated) 모듈을 생성 -- 모듈은 VCS 리포지토리에서 유지 관리되고 Terraform Cloud의 프라이빗 레지스트리에 게시됨 +- 모듈은 VCS 리포지토리에서 유지 관리되고 HCP Terraform의 프라이빗 레지스트리에 게시됨 ![Terraform Modules](images/terraform_modules.svg) ??? @@ -1257,39 +1257,39 @@ class: col-2, minimal-list - Modules in the Terraform Registry are free to use, and Terraform can download them automatically with an appropriate source and version in a module call block. --- -name: tfc-private-registry +name: hcp-terraform-private-registry class: col-2, minimal-list -# Private Module Registry +# Terraform Private Registry -- Terraform Cloud에는 팀이 프라이빗 VCS 리포지토리에서 모듈과 프로바이더를 설정할 수 있는 프라이빗 레지스트리가 포함되어 있음 +- HCP Terraform에는 팀이 프라이빗 VCS 리포지토리에서 모듈과 프로바이더를 설정할 수 있는 프라이빗 레지스트리가 포함되어 있음 - 많은 조직에서 공개적으로 사용할 수 없거나 공개할 필요가 없는 모듈, 프로바이더 또는 정책을 사용 -- 실무자(Practitioners)는 퍼블릭 Terraform 레지스트리에서 모듈을 복사하고, 비공개 버전을 사용자 지정하고, Terraform Cloud의 프라이빗 모듈 레지스트리에 게시할 수 있음 +- 실무자(Practitioners)는 퍼블릭 Terraform 레지스트리에서 모듈을 복사하고, 비공개 버전을 사용자 지정하고, HCP Terraform의 프라이빗 모듈 레지스트리에 게시할 수 있음 ![PMR Workflow](images/pmr_technical_workflow.svg) ??? -# Private Module Registry -- In Terraform Cloud, modules can be privatized to support the idea of a safe sandbox. +# Terraform Private Registry +- In HCP Terraform, modules can be privatized to support the idea of a safe sandbox. - The further a module is configured, the least number of choices consumers need to make to automate their deployments. -- Private modules can referenced arbitrarily, but access to the resource follows the Terraform Cloud permissions model - meaning only teams with access privileges are able to access the module in the private registry, and execution of the code is only possible within a workspace in the same Terraform Cloud organization. +- Private modules can referenced arbitrarily, but access to the resource follows the HCP Terraform permissions model - meaning only teams with access privileges are able to access the module in the private registry, and execution of the code is only possible within a workspace in the same HCP Terraform organization. **INSTRUCTOR NOTE**: -> You can bring up the idea of the Configuration Designer in Terraform Cloud - which leads to no-code provisioning. +> You can bring up the idea of the Configuration Designer in HCP Terraform - which leads to no-code provisioning. > No-code provisioning lets users deploy infrastructure in modules without writing any Terraform configuration, which makes your standards even easier to comply with, and removes the dependency on infrastructure teams or ticketing systems to give developers their required resources. --- -name: tfc-api +name: hcp-terraform-api class: col-2, minimal-list # Terraform API -- Terraform Cloud는 대부분의 작업을 수행할 수 있는 풍부한 HTTP API를 지원하여 UI 지시문(directives)과 CLI 명령을 대체함 +- HCP Terraform는 대부분의 작업을 수행할 수 있는 풍부한 HTTP API를 지원하여 UI 지시문(directives)과 CLI 명령을 대체함 -- TFC Terraform Provider는 Terraform(HCL) 구성 코드로 Terraform Cloud 관리를 자동화하기 위한 실용적인 API 구현입니다. +- TFC Terraform Provider는 Terraform(HCL) 구성 코드로 HCP Terraform 관리를 자동화하기 위한 실용적인 API 구현입니다. - Terraform CDK는 다음 언어를 지원합니다: @@ -1307,20 +1307,20 @@ class: col-2, minimal-list # Terraform API - Mature IaC practices evolve to delegate tasks through automation. Terraform can be fully operated via API allowing organizations to easily integrate it into their existing deployment processes. -- Terraform Cloud supports multiple instrumentation technologies to implemented automated provisioning. The idea is to support adequate technology frameworks that support a service management practice. +- HCP Terraform supports multiple instrumentation technologies to implemented automated provisioning. The idea is to support adequate technology frameworks that support a service management practice. -- As a whole, the Terraform community provides testing frameworks, pipeline utilities, programming libraries, scripted templates, and repeatable examples to implement Terraform. What is relevant to emphasize is that all of these are 100% compatible with Terraform Cloud, and the time and effort to accomdate those resources is minimal. +- As a whole, the Terraform community provides testing frameworks, pipeline utilities, programming libraries, scripted templates, and repeatable examples to implement Terraform. What is relevant to emphasize is that all of these are 100% compatible with HCP Terraform, and the time and effort to accomdate those resources is minimal. - ->> The real value is the utility of the Terraform echo system and the benefits of Terraform Cloud combined. In blunt words, technology is not a barrier... teams need to commit to the adoption journey. +>> The real value is the utility of the Terraform echo system and the benefits of HCP Terraform combined. In blunt words, technology is not a barrier... teams need to commit to the adoption journey. --- -name: tfc-api-workflows +name: hcp-terraform-api-workflows class: col-2, minimal-list # Service Management -- Terraform Cloud 운영은 API를 통해 완전히 관리할 수 있으므로 조직은 기존 비즈니스 프로세스에 자동화된 배포를 쉽게 통합할 수 있음 +- HCP Terraform 운영은 API를 통해 완전히 관리할 수 있으므로 조직은 기존 비즈니스 프로세스에 자동화된 배포를 쉽게 통합할 수 있음 - 신뢰할 수 있는 오케스트레이터는 Terraform API를 사용하여 리소스를 조달(coordinate)하고 런타임 작업을 조율함 @@ -1329,22 +1329,22 @@ class: col-2, minimal-list ![Terraform API](images/terraform_workflow.svg) ??? # Service Management -- In context of service management, the most visible value of Terraform Cloud is the ability to integrate resources, workflow and support capabilites seamlessly. +- In context of service management, the most visible value of HCP Terraform is the ability to integrate resources, workflow and support capabilites seamlessly. -- Terraform Cloud is a cloud service and every functional area is designed with the intention to hand-off to a different one. +- HCP Terraform is a cloud service and every functional area is designed with the intention to hand-off to a different one. -- In the diagram, the main highlight is the HashiCorp accent in pink, which symbolizes the functional areas where Terraform Cloud operates within the service workflow. +- In the diagram, the main highlight is the HashiCorp accent in pink, which symbolizes the functional areas where HCP Terraform operates within the service workflow. -- The illustration is simplified and incomplete as there are many other steps in a formal service management process. As in the illustration of the [Möbius strip](#tfc-team-collaboration), there are many examples of a process idea, and our intent is to explain where Terraform Cloud provides value on day-one. +- The illustration is simplified and incomplete as there are many other steps in a formal service management process. As in the illustration of the [Möbius strip](#hcp-terraform-team-collaboration), there are many examples of a process idea, and our intent is to explain where HCP Terraform provides value on day-one. --- -name: tfc-api-cicd +name: hcp-terraform-api-cicd class: center_p # CI/CD 통합(Integration) -Terraform Cloud는 기존 CI/CD 파이프라인, IT 서비스 관리 인터페이스 및 버전 제어 시스템 프로세스에 통합됩니다. +HCP Terraform는 기존 CI/CD 파이프라인, IT 서비스 관리 인터페이스 및 버전 제어 시스템 프로세스에 통합됩니다. -![Terraform Cloud CIDC](images/terraform_cloud_cicd.svg) +![HCP Terraform CIDC](images/terraform_cloud_cicd.svg) ??? # CI/CD 통합(Integration) - The illustration showcases the type of service layers involved in a CI/CD process. Here is a quick breakdown of each from left to right: @@ -1355,7 +1355,7 @@ Terraform Cloud는 기존 CI/CD 파이프라인, IT 서비스 관리 인터페 | ServiceNow | | IT Service management agent that handles requests and triggers work | | Jenkins | | Trusted orchestrator to provide step-by-step functions to deliver the infrastructure | | GitHub | | VCS to manage the lifecycle of IaC, Modules and PaC | -| Terraform Cloud | | Cloud service to manage the lifecyle of an IaC deployment using Terraform | +| HCP Terraform | | Cloud service to manage the lifecyle of an IaC deployment using Terraform | | AWS | | Target environment | > **NOTABLY MISSING** is a secrets management service to safeguard secrets and to manage the lifecyle of those secrets. @@ -1368,7 +1368,7 @@ Terraform Cloud는 기존 CI/CD 파이프라인, IT 서비스 관리 인터페 > | :--------------------: | --- | :------: | --- | :----------: | --- | :----: | > | Korn
C
Bourne | | BladeLogic
Opsware
VMware | | Ansible
Chef
Puppet
Terraform | | Terraform
ARM templates
CloudFormation
GC Deployment Manager | --> -- The overall infrastructure automation space is not new and there have been multiple generations of promising implementation solutions. The true realization of IaC had not happened until Terraform settled as the de facto solution. Terraform Cloud is a next-generation service to support that realization moving forward. +- The overall infrastructure automation space is not new and there have been multiple generations of promising implementation solutions. The true realization of IaC had not happened until Terraform settled as the de facto solution. HCP Terraform is a next-generation service to support that realization moving forward. - It important to highlight the innovative approach from HashiCorp in the IaC space since 2012. @@ -1388,7 +1388,7 @@ class: col-2, adjust-minimal-sub-list * API 래퍼 개념 살펴보기 * GitHub Actions와 지속적 통합 사용 -- Quiz 4 - Private Module Registry +- Quiz 4 - Terraform Private Registry - Clean up @@ -1416,7 +1416,7 @@ class: col-2, adjust-minimal-sub-list - The __Clean up__ challenge removes the following: - AWS deployment of the Hashicat app - - Terraform Cloud configurations + - HCP Terraform configurations - GitHub repo of `hashicat-app` - The __Clean up__ challenge does not remove the cloned module from the Terraform Registry. @@ -1427,13 +1427,13 @@ class: review, no-footer 1. Private Registry는 인프라 배포의 서비스 카탈로그와 **no-code**을 위한 옵션을 설정(establishes) -2. Terraform Cloud는 기존 서비스 모델 워크플로우에 맞게 적용(adapt)하고 배포 파이프라인에 불가지론적으로(agnostically) 통합할 수 있는 다양한 API 옵션을 지원 +2. HCP Terraform는 기존 서비스 모델 워크플로우에 맞게 적용(adapt)하고 배포 파이프라인에 불가지론적으로(agnostically) 통합할 수 있는 다양한 API 옵션을 지원 ??? # Chapter 4 review -1. The Public Terraform Registry and the Private Module Registry (PMR) serve a similar function purpose. The main difference is that the PMR is designed to support privacy and security controls. +1. The Public Terraform Registry and the Terraform Private Registry serve a similar function purpose. The main difference is that the PMR is designed to support privacy and security controls. -2. When using Terraform Cloud, stake-holders should expect to maximize the use of automation to support service management processes via service delivery pipelines. The Terraform Cloud API promotes an API-first approach and it contains a vast array of instrumentation options to satisfy most use cases. +2. When using HCP Terraform, stake-holders should expect to maximize the use of automation to support service management processes via service delivery pipelines. The HCP Terraform API promotes an API-first approach and it contains a vast array of instrumentation options to satisfy most use cases. --- name: additional-resources class: header-adjust, minimal @@ -1443,7 +1443,7 @@ class: header-adjust, minimal ### HashiCorp Community 포럼이나 사용자 그룹에 가입하여 더 넓은 커뮤니티에 참여하고 학습하세요. `https://www.hashicorp.com/community` ### HashiCorp Forum -Terraform 사용 사례, 질문 및 모범 사례 토론을 위한 Terraform, Terraform Cloud, Terraform Enterprise 및 CDK를 확인하세요. `https://discuss.hashicorp.com` +Terraform 사용 사례, 질문 및 모범 사례 토론을 위한 Terraform, HCP Terraform, Terraform Enterprise 및 CDK를 확인하세요. `https://discuss.hashicorp.com` ??? # Additional Resources diff --git a/docs/slides/gcp/terraform-oss/index.html b/docs/slides/korean/aws/hcp-terraform/index.html similarity index 97% rename from docs/slides/gcp/terraform-oss/index.html rename to docs/slides/korean/aws/hcp-terraform/index.html index e753d4be..51060f02 100644 --- a/docs/slides/gcp/terraform-oss/index.html +++ b/docs/slides/korean/aws/hcp-terraform/index.html @@ -7,7 +7,7 @@ - Introduction to Terraform OSS on GCP + HCP Terraform on AWS diff --git a/docs/slides/korean/aws/terraform-cloud/index.md b/docs/slides/korean/aws/hcp-terraform/index.md similarity index 77% rename from docs/slides/korean/aws/terraform-cloud/index.md rename to docs/slides/korean/aws/hcp-terraform/index.md index e6f09b70..eb293999 100644 --- a/docs/slides/korean/aws/terraform-cloud/index.md +++ b/docs/slides/korean/aws/hcp-terraform/index.md @@ -1,20 +1,20 @@ -name: Intro-to-Terraform-Cloud +name: Intro-to-hcp-terraform class: center,middle,title-slide count: false

-![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/tf_aws.png) +![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/tf_aws.png)

-# Terraform Cloud on AWS +# HCP Terraform on AWS ??? -Terraform Cloud on AWS 워크숍에 오신 것을 환영합니다. 이 워크샵은 AWS 기반 애플리케이션을 사용하여 Terraform Cloud (Enterprise)의 무료 및 유료 기능을 소개하는 1 일 워크샵입니다. Terraform을 처음 사용하는 경우 AWS Instruqt 트랙에서 Terraform OSS 소개 트랙을 먼저 수행해야 합니다. +HCP Terraform on AWS 워크숍에 오신 것을 환영합니다. 이 워크샵은 AWS 기반 애플리케이션을 사용하여 HCP Terraform (Enterprise)의 무료 및 유료 기능을 소개하는 1 일 워크샵입니다. Terraform을 처음 사용하는 경우 AWS Instruqt 트랙에서 Terraform Community Edition 소개 트랙을 먼저 수행해야 합니다. -Terraform Cloud와 Terraform Enterprise는 거의 동일한 기능 세트를 가지고 있으므로 교육 환경으로 Terraform Cloud를 사용합니다. +HCP Terraform와 Terraform Enterprise는 거의 동일한 기능 세트를 가지고 있으므로 교육 환경으로 HCP Terraform를 사용합니다. -강사 가이드 링크: https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_terraform_cloud_INSTRUCTOR_GUIDE.md +강사 가이드 링크: https://github.com/hashicorp/field-workshops-terraform/blob/main/instructor-guides/all_hcp_terraform_INSTRUCTOR_GUIDE.md -소개 노트: Terraform Cloud on AWS에 오신 것을 환영합니다. 이 슬라이드 데크는 전적으로 Markdown 언어로 작성되었으므로 편집하거나 추가 한 다음 풀 요청을 제출하여 변경 사항을 메인 브랜치에 추가 할 수 있습니다. 슬라이드 데크를 편집하려면이 저장소를 포크하고 Markdown 파일을 편집 한 다음 변경 사항과 함께 풀 요청을 제출하면됩니다. 이 파이썬 한 줄로 슬라이드 데크의 로컬 복사본을 쉽게 테스트 할 수 있습니다.: +소개 노트: HCP Terraform on AWS에 오신 것을 환영합니다. 이 슬라이드 데크는 전적으로 Markdown 언어로 작성되었으므로 편집하거나 추가 한 다음 풀 요청을 제출하여 변경 사항을 메인 브랜치에 추가 할 수 있습니다. 슬라이드 데크를 편집하려면이 저장소를 포크하고 Markdown 파일을 편집 한 다음 변경 사항과 함께 풀 요청을 제출하면됩니다. 이 파이썬 한 줄로 슬라이드 데크의 로컬 복사본을 쉽게 테스트 할 수 있습니다.: ``` python -m SimpleHTTPServer @@ -58,7 +58,7 @@ name: Introductions Terraform을 사용하기 위해 vi의 전문가 일 필요는 없습니다. 오늘 실습 랩에서는 Visual Studio Code 또는 vim을 사용하여 일부 파일을 편집합니다. --- -name: tfc-link-to-slide-deck +name: hcp-terraform-link-to-slide-deck # The Slide Deck


.center[ @@ -76,8 +76,8 @@ class: col-2 # Table of Contents
-1. OSS to Cloud/Enterprise
-🌥️ Terraform Cloud의 개요
+1. Community Edition to HCP/Enterprise
+🌥️ HCP Terraform의 개요
👨🏽‍🏫 기본 살펴보기
🔗 Remote State 구성하기

@@ -91,7 +91,7 @@ class: col-2 👮 Sentinel policy enforcement (정책 코드화 실행)

4. Terraform Modules & API
-⚙️ Private Module Registry
+⚙️ Terraform Private Registry
🏗️ API 기반의 워크플로우

5. Extra Resources
@@ -109,10 +109,10 @@ name: TFE-Chapter-1 class: title # Chapter 1 -## Terraform OSS, Cloud and Enterprise +## Terraform Community Edition, HCP Terraform, and Terraform Enterprise ??? -**첫 번째 장에서는 Terraform 오픈 소스와 OSS와 클라우드 및 엔터프라이즈 간의 몇 가지 차이점을 다룰 것입니다.** +**첫 번째 장에서는 Terraform 오픈 소스와 Community Edition와 클라우드 및 엔터프라이즈 간의 몇 가지 차이점을 다룰 것입니다.** --- name: terraform-user-journey @@ -140,7 +140,7 @@ class: col-2 * 모든 빌드 단계는 이제 코드로 표현됩니다. * 무언가를 다시 만들어야한다면 훨씬 쉽습니다! -![Terraform Code on AWS](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/code_example.png) +![Terraform Code on AWS](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/code_example.png) ??? **Terraform의 핵심은 코드로서의 인프라 개념입니다. 일련의 수동 작업 또는 테스트 및 최신 상태가 아닐 수있는 오류가 발생하기 쉬운 셸 스크립트로 물건을 구축하는 대신이 간단한 도메인 특정 언어 또는 테라 폼으로 모든 인프라 구축 단계를 표현합니다. Terraform 구성 구문의 공식 이름은 HashiCorp Configuration Language (HCL)입니다. 이 언어는 초보자에게는 쉽고 전문가에게는 강력합니다. 인프라의 DNA라고 생각하십시오. ** @@ -149,67 +149,67 @@ class: col-2 name: multi-platform-compliance # 보유한 모든 인프라 관리 .center[ -![:scale 80%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/terraform_on_prem.png) +![:scale 80%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/terraform_on_prem.png) ] Terraform은 또한 온 프레미스 VM 또는 플랫폼 서비스와 통합됩니다. ??? -Terraform Cloud 및 Enterprise는 데이터 센터에서 VM을 구축하거나 클라우드에서 AWS 인스턴스를 구축하는 데 사용할 수 있습니다. 하이브리드 클라우드 플랫폼을 구축하기 위해 서로 다른 두 가지 도구를 사용할 필요가 없습니다. +HCP Terraform 및 Enterprise는 데이터 센터에서 VM을 구축하거나 클라우드에서 AWS 인스턴스를 구축하는 데 사용할 수 있습니다. 하이브리드 클라우드 플랫폼을 구축하기 위해 서로 다른 두 가지 도구를 사용할 필요가 없습니다. --- name: self-service-infra # 셀프서비스 인프라 .center[ -![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/self_service.png) +![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/self_service.png) ] 특정 사용자가 막대한 비용을 지출하거나 정책에 위반되는 프로비저닝 같은, 조직을 위험에 빠뜨리지 않고 필요한 것을 구축 할 수 있도록 합니다. ??? -**Terraform Cloud는 재사용 가능한 모듈 및 정책 시행을 통해 안전한 프로비저닝을 권장합니다. 이제 사용자는 업무를 중단하거나 조직을 위험에 빠뜨리지 않고 업무를 수행하는 데 필요한 것을 정확하게 구축 할 수 있습니다. 자동화가 수동 코드 검토없이 모범 사례를 적용하기 때문에 느리고 번거로운 승인 프로세스가 더 이상 필요하지 않습니다.** +**HCP Terraform는 재사용 가능한 모듈 및 정책 시행을 통해 안전한 프로비저닝을 권장합니다. 이제 사용자는 업무를 중단하거나 조직을 위험에 빠뜨리지 않고 업무를 수행하는 데 필요한 것을 정확하게 구축 할 수 있습니다. 자동화가 수동 코드 검토없이 모범 사례를 적용하기 때문에 느리고 번거로운 승인 프로세스가 더 이상 필요하지 않습니다.** --- -name: terraform-cloud-what-is-it -# Terraform Cloud - 최종 상태 +name: hcp-terraform-what-is-it +# HCP Terraform - 최종 상태 .center[ -![:scale 90%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/cloud_overview_aws.png) +![:scale 90%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/cloud_overview_aws.png) ] ??? 이 슬라이드는 워크샵의 최종 상태를 보여줍니다. 왼쪽에는 인프라 담당자가 나머지 사용자가 자신의 테라 폼 코드로 구현할 수있는 재사용 가능한 모듈을 만들었습니다. 이러한 모듈은 네트워크 및 VM과 같은 인프라 구성 요소가 매번 올바르게 구축되도록 보장하고 사용자가 "올바른 항목"을 쉽게 구축 할 수 있도록합니다. -다음 단계에서 사용자는 Terraform 코드를 작성하고이를 Version Control System(VCS)에 체크인합니다. 이를 통해서 운영환경을 위한 모든 변경 사항이 기록되고 검토됩니다. 이부분이 매우 중요합니다. 그리고 모든 개발자와 인프라 관리자의 규율과 협력이 필요합니다. 새 코드가 마스터 브랜치에 커밋되면 Terraform Cloud (또는 Enterprise)에서 계획이 트리거됩니다. +다음 단계에서 사용자는 Terraform 코드를 작성하고이를 Version Control System(VCS)에 체크인합니다. 이를 통해서 운영환경을 위한 모든 변경 사항이 기록되고 검토됩니다. 이부분이 매우 중요합니다. 그리고 모든 개발자와 인프라 관리자의 규율과 협력이 필요합니다. 새 코드가 마스터 브랜치에 커밋되면 HCP Terraform (또는 Enterprise)에서 계획이 트리거됩니다. -Terraform Cloud를 Terraform을 위한 원격 실행장소, 또는 상태 관리 플랫폼으로 생각하십시오. 이제는 클라우드 프로비저닝을 위해 랩톱에서 terraform을 실행하지 않습니다. 대신 모든 테라 폼 실행은 SaaS 플랫폼에서 실행되는 보안 Docker 컨테이너 또는 자체 데이터 센터에서 수행합니다. 이를 통해 모든 API 키, 변수 및 테라 폼 상태 파일을 암호화하고 보호 할 수 있습니다. 권한이있는 사용자에게만 액세스가 허용됩니다. +HCP Terraform를 Terraform을 위한 원격 실행장소, 또는 상태 관리 플랫폼으로 생각하십시오. 이제는 클라우드 프로비저닝을 위해 랩톱에서 terraform을 실행하지 않습니다. 대신 모든 테라 폼 실행은 SaaS 플랫폼에서 실행되는 보안 Docker 컨테이너 또는 자체 데이터 센터에서 수행합니다. 이를 통해 모든 API 키, 변수 및 테라 폼 상태 파일을 암호화하고 보호 할 수 있습니다. 권한이있는 사용자에게만 액세스가 허용됩니다. 모든 Terraform 상태 파일은 서버 측에 안전하게 저장되고 암호화됩니다. 인프라를 변경해야 할 때마다 Terraform은 마지막 상태를 알고 변경 사항을 기반으로 점진적으로 빌드 할 수 있습니다. 클러스터에 더 많은 인스턴스를 추가해야합니까? 문제 없습니다. terraform은 완전한 분해 및 재구성 없이도 이를 수행 할 수 있습니다. 모든 Terraform을 적용하기 전에 제안 된 인프라 계획에 대해 Sentinel 정책 검사를 실행하여 정책 위반을 포착 할 수 있습니다. 예를 들어 개발자가 실행하는 데 많은 비용이 드는 엄청 큰 인스턴스를 만드는 것을 원하지 않을 수 있습니다. 개발자 작업 공간을 m3.medium 크기의 인스턴스 만 사용하도록 제한하는 간단한 규칙을 작성할 수 있습니다. -역할 기반 액세스 제어(RBAC)를 통해 다양한 유형의 사용자가 액세스 수준에 따라 Terraform 클라우드와 상호 작용할 수 있습니다. 조직의 모든 것을 제어 할 수있는 최고 관리자와 terraform을 실행할 수 있지만 개발 환경에서만 가능한 일반 사용자가있을 수 있습니다. 다른 그룹은 변경 사항을 운영환경에 푸시 할 수 있지만 일부 사용자는 읽기 전용 액세스 권한을 가질 수 있습니다. Terraform Cloud / Enterprise는 진정한 멀티 테넌트 환경을 제공합니다. +역할 기반 액세스 제어(RBAC)를 통해 다양한 유형의 사용자가 액세스 수준에 따라 Terraform 클라우드와 상호 작용할 수 있습니다. 조직의 모든 것을 제어 할 수있는 최고 관리자와 terraform을 실행할 수 있지만 개발 환경에서만 가능한 일반 사용자가있을 수 있습니다. 다른 그룹은 변경 사항을 운영환경에 푸시 할 수 있지만 일부 사용자는 읽기 전용 액세스 권한을 가질 수 있습니다. HCP Terraform / Enterprise는 진정한 멀티 테넌트 환경을 제공합니다. --- -name: why-tfc-1 +name: why-hcp-terraform-1 class: img-right -# Terraform Cloud -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/tfc-gui.png) +# HCP Terraform +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/tfc-gui.png) -Terraform Cloud/Enterprise는 다음의 환경을 제공합니다.: +HCP Terraform/Terraform Enterprise는 다음의 환경을 제공합니다.: ??? -Terraform Cloud 기능과 그 기능이 중요한 이유에 대한 간략한 목록을 살펴 보겠습니다. +HCP Terraform 기능과 그 기능이 중요한 이유에 대한 간략한 목록을 살펴 보겠습니다. --- -name: why-tfc-2 +name: why-hcp-terraform-2 class: img-right -# Terraform Cloud -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/tfc-gui.png) +# HCP Terraform +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/tfc-gui.png) -Terraform Cloud/Enterprise는 다음의 환경을 제공합니다.: +HCP Terraform/Terraform Enterprise는 다음의 환경을 제공합니다.: * VCS와 함께 UI에 통합된 환경 @@ -217,12 +217,12 @@ Terraform Cloud/Enterprise는 다음의 환경을 제공합니다.: 실제 사용자나 팀이 Terraform에서 표준화 작업을 시작하면 다양한 유형의 사용자를 갖게됩니다. 이미 사용하거나 도입에 대한 테스트를 하는 경우, 여러분 대부분은 테라 폼 전문가가 될 것입니다.하지만 무언가를 만들고 싶어하는 사람들이있을 수 있습니다. 그들은 당신과 같은 사람들이 작성한 테라 폼 코드를 사용할 수 있습니다. 이 프로세스를 쉽게하기 위해 웹 애플리케이션이 있습니다. 로그온하고 버튼을 클릭하면 인프라가 나타납니다. --- -name: why-tfc-3 +name: why-hcp-terraform-3 class: img-right -# Terraform Cloud -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/tfc-gui.png) +# HCP Terraform +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/tfc-gui.png) -Terraform Cloud/Enterprise는 다음의 환경을 제공합니다.: +HCP Terraform/Terraform Enterprise는 다음의 환경을 제공합니다.: * VCS와 함께 UI에 통합된 환경 * API 기반의 워크플로우 @@ -233,83 +233,83 @@ Terraform Cloud/Enterprise는 다음의 환경을 제공합니다.: API는 모든 최신 클라우드 자동화 시스템의 구성 요소입니다. 잘 정의 된 표준 API를 사용하면 인프라 파이프 라인이 향후 변경 사항에 대응할 준비가되어 있는지 확인할 수 있습니다. --- -name: why-tfc-4 +name: why-hcp-terraform-4 class: img-right -# Terraform Cloud -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/tfc-gui.png) +# HCP Terraform +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/tfc-gui.png) -Terraform Cloud/Enterprise는 다음의 환경을 제공합니다.: +HCP Terraform/Terraform Enterprise는 다음의 환경을 제공합니다.: * VCS와 함께 UI에 통합된 환경 * API 기반의 워크플로우 * STATE의 중앙 관리 ??? -Terraform enterprise는 상태 파일을위한 안전하고 안전한 스토리지도 제공합니다. 중요한 상태 파일을 누군가의 랩톱에 저장하는 대신 이제 Terraform Cloud 애플리케이션에 안전하게 저장합니다. State 파일에 접근할 수 있는 사람 만 볼 수 있으며 덮어 쓰거나 손상되지 않도록 보호됩니다. +Terraform enterprise는 상태 파일을위한 안전하고 안전한 스토리지도 제공합니다. 중요한 상태 파일을 누군가의 랩톱에 저장하는 대신 이제 HCP Terraform 애플리케이션에 안전하게 저장합니다. State 파일에 접근할 수 있는 사람 만 볼 수 있으며 덮어 쓰거나 손상되지 않도록 보호됩니다. --- -name: why-tfc-5 +name: why-hcp-terraform-5 class: img-right -# Terraform Cloud -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/tfc-gui.png) +# HCP Terraform +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/tfc-gui.png) -Terraform Cloud/Enterprise는 다음의 환경을 제공합니다.: +HCP Terraform/Terraform Enterprise는 다음의 환경을 제공합니다.: * VCS와 함께 UI에 통합된 환경 * API 기반의 워크플로우 * STATE의 중앙 관리 -* Private Module Registry +* Terraform Private Registry ??? -결국 회사의 다른 사용자 및 팀을 위해 공유하고 게시 할 수있는 Terraform 코드 라이브러리가 생깁니다. Private Module Registry는 이것을 쉽게 만듭니다. 표준에 따라 인프라를 구축하는 재사용 가능한 모듈을 구축 한 다음 사용자를 위해 게시합니다. 이는 보안 정책을 시행하고 표준을 구축하는 데 도움이 될 수 있습니다. +결국 회사의 다른 사용자 및 팀을 위해 공유하고 게시 할 수있는 Terraform 코드 라이브러리가 생깁니다. Terraform Private Registry는 이것을 쉽게 만듭니다. 표준에 따라 인프라를 구축하는 재사용 가능한 모듈을 구축 한 다음 사용자를 위해 게시합니다. 이는 보안 정책을 시행하고 표준을 구축하는 데 도움이 될 수 있습니다. --- -name: why-tfc-6 +name: why-hcp-terraform-6 class: img-right -# Terraform Cloud -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/tfc-gui.png) +# HCP Terraform +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/tfc-gui.png) -Terraform Cloud/Enterprise는 다음의 환경을 제공합니다.: +HCP Terraform/Terraform Enterprise는 다음의 환경을 제공합니다.: * VCS와 함께 UI에 통합된 환경 * API 기반의 워크플로우 * STATE의 중앙 관리 -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement (취약점 점검 및 정책 코드화 실행) ??? TFC/TFE는 사용자가 구축해서는 안되는 것을 구축하거나 잘못된 방식으로 구성하지 않도록 보장 할 수있는 정책 시행 엔진과 함께 제공됩니다. 예를 들어 사용자가 인터넷에 대한 네트워크 포트를 열거 나 너무 많은 가상 머신을 구축하지 못하도록 할 수 있습니다. 이러한 모든 유형의 규칙은 Sentinel Policy Enforcement (정책 코드화 실행) 엔진을 사용하여 표현할 수 있습니다. Sentinel 정책은 사용자가 클라우드에 프로비저닝하기 **전에** 잘못된 작업을 하는 것을 방지합니다. --- -name: why-tfc-7 +name: why-hcp-terraform-7 class: img-right -# Terraform Cloud -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/tfc-gui.png) +# HCP Terraform +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/tfc-gui.png) -Terraform Cloud/Enterprise는 다음의 환경을 제공합니다.: +HCP Terraform/Terraform Enterprise는 다음의 환경을 제공합니다.: * VCS와 함께 UI에 통합된 환경 * API 기반의 워크플로우 * STATE의 중앙 관리 -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement (취약점 점검 및 정책 코드화 실행) * Single Sign-On ??? -Terraform Enterprise는 자체 SAML 공급자를 사용한 SSO도 지원합니다. 이를 통해 사용자를 조직의 팀 및 작업 영역에 신속하게 매핑하여 즉시 생산성을 높일 수 있습니다. 이 기능은 Terraform Enterprise 또는 Terraform Cloud for Business에서 사용할 수 있습니다. 오늘 워크숍에서는 SAML 또는 싱글 사인온을 다루지 않을 것입니다. +Terraform Enterprise는 자체 SAML 공급자를 사용한 SSO도 지원합니다. 이를 통해 사용자를 조직의 팀 및 작업 영역에 신속하게 매핑하여 즉시 생산성을 높일 수 있습니다. 이 기능은 Terraform Enterprise 또는 HCP Terraform Plus Tier에서 사용할 수 있습니다. 오늘 워크숍에서는 SAML 또는 싱글 사인온을 다루지 않을 것입니다. --- -name: why-tfc-8 +name: why-hcp-terraform-8 class: img-right -# Terraform Cloud -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/tfc-gui.png) +# HCP Terraform +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/tfc-gui.png) -Terraform Cloud/Enterprise는 다음의 환경을 제공합니다.: +HCP Terraform/Terraform Enterprise는 다음의 환경을 제공합니다.: * VCS와 함께 UI에 통합된 환경 * API 기반의 워크플로우 * STATE의 중앙 관리 -* Private Module Registry +* Terraform Private Registry * Sentinel policy enforcement (정책 코드화 실행) * Single Sign-On * 안전한 API 자격증명 @@ -318,28 +318,28 @@ Terraform Cloud/Enterprise는 다음의 환경을 제공합니다.: TFE/TFC는 클라우드 자격 증명, 암호 또는 기타 민감한 데이터를 저장하고 암호화 할 수 있습니다. 이러한 자격 증명은 TFE 내부에서 실행되는 Vault 인스턴스 내부에 안전하게 저장됩니다. --- -name: terraform-cloud-enterprise -# Terraform Cloud와 Terraform Enterprise 차이 -**[Terraform Cloud](https://app.terraform.io/signup)**는 원격 상태 관리, API 기반 실행, 정책 관리 등과 같은 기능을 제공하는 호스팅 된 애플리케이션입니다. 많은 사용자가 클라우드 기반 SaaS 솔루션을 선호하는 이유는 인프라를 유지하여 실행하는 것을 원하지 않기 때문입니다. +name: hcp-terraform-enterprise +# HCP Terraform와 Terraform Enterprise 차이 +**[HCP Terraform](https://app.terraform.io/signup)**는 원격 상태 관리, API 기반 실행, 정책 관리 등과 같은 기능을 제공하는 호스팅 된 애플리케이션입니다. 많은 사용자가 클라우드 기반 SaaS 솔루션을 선호하는 이유는 인프라를 유지하여 실행하는 것을 원하지 않기 때문입니다. -**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)**는 동일한 애플리케이션이지만 클라우드 환경 또는 데이터 센터에서 실행됩니다. 일부 사용자는 Terraform Cloud 애플리케이션에 대한 더 많은 제어가 필요하거나 회사 방화벽 뒤의 제한된 네트워크에서 실행하려고합니다. +**[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)**는 동일한 애플리케이션이지만 클라우드 환경 또는 데이터 센터에서 실행됩니다. 일부 사용자는 HCP Terraform 애플리케이션에 대한 더 많은 제어가 필요하거나 회사 방화벽 뒤의 제한된 네트워크에서 실행하려고합니다. -이 두 제품의 기능 목록은 거의 동일합니다. 이번 랩 실습에는 Terraform Cloud 계정을 사용할 것입니다. +이 두 제품의 기능 목록은 거의 동일합니다. 이번 랩 실습에는 HCP Terraform 계정을 사용할 것입니다. ??? -귀하의 회사에서 어떤 것을 채택해야하는지 궁금하다면 Terraform Enterprise 또는 Terraform Cloud for Business가 답입니다. +귀하의 회사에서 어떤 것을 채택해야하는지 궁금하다면 Terraform Enterprise 또는 HCP Terraform Plus Tier가 답입니다. --- name: live-demo class: title, smokescreen, shelf -background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/live_demo.jpg) +background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/live_demo.jpg) # Live Demo -## Terraform Cloud in Action +## HCP Terraform in Action ??? INSTRUCTOR NOTE: You can use the same instruqt track that the students will be using to do this demo. Make sure you've gone through the entire track yourself and have your own organization, fork of the hashicat-aws repo, and sentinel policy in place. Once you have done these steps it's easy to create a new demo: -1. Start your own copy of the Terraform Cloud on AWS track +1. Start your own copy of the HCP Terraform on AWS track 2. Echo out your AWS credentials and set them as environment variables in TFC: ``` echo $AWS_ACCESS_KEY_ID @@ -349,15 +349,15 @@ echo $AWS_SECRET_ACCESS_KEY 4. Make sure you remove the VPC file (vpc.tf) from your hashicat-aws repo. This will make the demo take longer and may break if the regions aren't set up right. 5. Begin your demo dialog: -**This is a brief demo showing off some of the features of Terraform cloud. You'll get to work with all these features during the hands-on labs today.** +**This is a brief demo showing off some of the features of HCP Terraform. You'll get to work with all these features during the hands-on labs today.** **Pretend I'm a brand new developer and I want to spin up a copy of my company's web application that I can use for testing. I have my own fork of the code here on github. This is the hashicat-aws application. Like the name implies, it provides kittens as a service. You give it a placeholder URL, a height, and a width, and you get a cat. Neat huh?** -**Let's hop over to Terraform Cloud and take a look at my workspace. Here you can see the most recent terraform runs and their status, along with the exact git commit hash that led to each run being triggered. All changes are recorded, and only code that passes our sentinel policies is allowed to run.** +**Let's hop over to HCP Terraform and take a look at my workspace. Here you can see the most recent terraform runs and their status, along with the exact git commit hash that led to each run being triggered. All changes are recorded, and only code that passes our sentinel policies is allowed to run.** **Before I build anything I might want to configure some variables to adjust my infrastructure settings. Here you can see some terraform variables, prefix and region. These will determine the names of my resources and the region they will be deployed in.** -**Down bottom you see the Environment Variables. These are system shell variables that are injected into the terraform cloud container at runtime. You can optionally encrypt sensitive environment variables such as these AWS keys. Note that these are write-only. Once you encrypt a variable by marking it sensitive, you won't see it here in plaintext again. These are dynamic AWS credentials that are good for only a few hours. You can paste them in manually or use the API to auto-populate them from HashiCorp Vault.** +**Down bottom you see the Environment Variables. These are system shell variables that are injected into the HCP Terraform container at runtime. You can optionally encrypt sensitive environment variables such as these AWS keys. Note that these are write-only. Once you encrypt a variable by marking it sensitive, you won't see it here in plaintext again. These are dynamic AWS credentials that are good for only a few hours. You can paste them in manually or use the API to auto-populate them from HashiCorp Vault.** **New and advanced users can utilize the GUI to trigger infrastructure builds. Let's do that now by clicking on this Queue Plan button. I'm going to put "new dev environment" down as the reason for the build. Now notice that a new terraform plan has kicked off. This is the dry run. terraform is figuring out if any of the infrastructure already exists from a previous run, and then it will build or change everything to match what's in the code. That is, unless we fail a sentinel policy...** @@ -375,7 +375,7 @@ INSTRUCTOR NOTE: Have your code commented and ready to go like this. That way yo } ``` -**Now if I pop back over to Terraform Cloud you can see that a new run has triggered based on the change I just made. Terraform Cloud watches that master branch for any changes and automatically picks them up. I still have a chance to review the run in the UI here. You can see that my policy check is now passing, which will make the finance people happy, and I can continue building my dev environment.** +**Now if I pop back over to HCP Terraform you can see that a new run has triggered based on the change I just made. HCP Terraform watches that master branch for any changes and automatically picks them up. I still have a chance to review the run in the UI here. You can see that my policy check is now passing, which will make the finance people happy, and I can continue building my dev environment.** **I'll click Confirm & Apply and we'll start building.** @@ -398,9 +398,9 @@ Create a new variable called `placeholder` and set it to `placedog.net`. Queue u --- name: review-the-basics class: title, smokescreen, shelf -background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/terraform_scifi.jpg) +background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/terraform_scifi.jpg) # 기본 살펴보기 -## Terraform OSS 다시 떠올려보기 +## Terraform Community Edition 다시 떠올려보기 ??? 이 섹션은 terraform 오픈 소스 사용에 대한 빠른 검토입니다. @@ -424,12 +424,12 @@ terraform graph # DOT 형식의 그래프 생성 재교육이 필요하다면? [AWS의 Terraform 소개] (https://instruqt.com/hashicorp/tracks/terraform-intro-aws) 실습을 시도해보세요. ??? -청중의 성숙도에 따라 Intro to Terraform 트랙으로 돌아갈 수 있습니다. 이상적으로는 워크숍의 모든 사람이 이미 이 작업을 완료했거나 Terraform OSS에 대해 동등한 경험을 가지고 있습니다. +청중의 성숙도에 따라 Intro to Terraform 트랙으로 돌아갈 수 있습니다. 이상적으로는 워크숍의 모든 사람이 이미 이 작업을 완료했거나 Terraform Community Edition에 대해 동등한 경험을 가지고 있습니다. --- name: what-is-a-workspace # Terraform 워크스페이스 -.center[![:scale 70%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/workspaces_gui.png) +.center[![:scale 70%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/workspaces_gui.png) ] .center[ @@ -437,7 +437,7 @@ name: what-is-a-workspace ] ??? -Terraform 워크스페이스는 관리되는 인프라 단위입니다. 랩톱 또는 로컬 워크 스테이션에서 terraform 워크스페이스는 단순히 terraform 코드와 변수로 가득 찬 디렉토리입니다. 이 코드는 이상적으로 git 저장소에 저장됩니다. 클라우드에서 워크스페이스는 몇 가지 추가 역할을 수행합니다. Terraform Cloud 및 Enterprise에서 워크스페이스는 여전히 terraform 실행을 실행하는 곳이지만 접근 제어, 변수 암호화, 정책 관리와 같은 추가 기능이 있습니다. Terraform은 사용자가 제어하는 안전한 컨테이너(e.g. Docker)에서만 실행됩니다. (이에 대한 한 가지 예외가 있으며 terraform을 로컬에서 실행하지만 Terraform Cloud에만 상태를 저장하는 경우입니다). 로컬 작업 공간 또는 git repo 사본은 일반적으로 terraform 작업 공간과 1 : 1로 매핑됩니다. +Terraform 워크스페이스는 관리되는 인프라 단위입니다. 랩톱 또는 로컬 워크 스테이션에서 terraform 워크스페이스는 단순히 terraform 코드와 변수로 가득 찬 디렉토리입니다. 이 코드는 이상적으로 git 저장소에 저장됩니다. 클라우드에서 워크스페이스는 몇 가지 추가 역할을 수행합니다. HCP Terraform 및 Enterprise에서 워크스페이스는 여전히 terraform 실행을 실행하는 곳이지만 접근 제어, 변수 암호화, 정책 관리와 같은 추가 기능이 있습니다. Terraform은 사용자가 제어하는 안전한 컨테이너(e.g. Docker)에서만 실행됩니다. (이에 대한 한 가지 예외가 있으며 terraform을 로컬에서 실행하지만 HCP Terraform에만 상태를 저장하는 경우입니다). 로컬 작업 공간 또는 git repo 사본은 일반적으로 terraform 작업 공간과 1 : 1로 매핑됩니다. 작업 공간에 무엇을 넣어야합니까? 하나의 단위로 함께 관리해야하는 인프라는 동일한 작업 공간에 배치하는 것이 좋습니다. 누가 관리해야하는지, 얼마나 자주 변경되는지, 우리가 제어 할 수없는 외부 종속성이 있습니까? 다음 질문을하십시오. `terraform apply`를 실행할 때 어떤 일이 발생하는지 생각해보십시오. 방금 구축 한 내용과 제공하는 출력,이 인프라의 대상 및 활용 방법을 설명 할 수 있어야합니다. @@ -448,7 +448,7 @@ Terraform은 코드로 계약을 생성하는 올바른 동작을 채택하도 --- name: what-is-an-organization # Terraform Organizations -.center[![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/choose_an_org.png) +.center[![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/choose_an_org.png) ] .center[ .small[https://www.terraform.io/docs/cloud/users-teams-organizations/organizations.html] @@ -460,7 +460,7 @@ name: what-is-an-organization --- name: what-is-a-team # Terraform Teams -.center[![:scale 90%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/teams_emoji.png) +.center[![:scale 90%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/teams_emoji.png) ] .center[ .small[https://www.terraform.io/docs/cloud/users-teams-organizations/teams.html] @@ -473,7 +473,7 @@ name: what-is-a-team name: our-application # HashiCat App - Kittens as a Service -.center[![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/meow_world.png)] +.center[![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/meow_world.png)] 이것은 우리의 실습 결과물로 보여지는 화면의 예 입니다. @@ -483,7 +483,7 @@ name: our-application --- name: terraform-state class: title, smokescreen, shelf -background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/checklist.jpg) +background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/checklist.jpg) # Terraform State ## 인프라 라이프사이클 관리 @@ -511,7 +511,7 @@ name: why-not-local-state class: img-left-full # 된장, State 파일이 사라졌어요. -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/dog_homework.jpg) +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/dog_homework.jpg) 로컬에서 관리하는 state 파일에는 몇 가지 단점이 있습니다. @@ -521,19 +521,19 @@ class: img-left-full * 중앙 집중식 기록 보관이 없음 ??? - Terraform Cloud 계정에 쉽게 무료로 저장할 수 있기 때문에 상태 파일을 잃어 버릴 이유가 없습니다. + HCP Terraform 계정에 쉽게 무료로 저장할 수 있기 때문에 상태 파일을 잃어 버릴 이유가 없습니다. --- -name: tfcloud-remote-state -# Terraform Cloud - Remote State -Terraform Cloud Remote State는 무료이며 모든 사용자가 사용할 수 있습니다. 설정 및 작동을위한 요구 사항은 다음과 같습니다. +name: hcp-terraform-remote-state +# HCP Terraform - Remote State +HCP Terraform Remote State는 무료이며 모든 사용자가 사용할 수 있습니다. 설정 및 작동을위한 요구 사항은 다음과 같습니다. -* 무료 또는 유료 Terraform Cloud 계정, 또는 Terraform Enterprise +* 무료 또는 유료 HCP Terraform 계정, 또는 Terraform Enterprise * **`.terraformrc` ** (Unix / Linux) 또는 **`terraform.rc` ** (Windows) 구성 파일 * 구성 파일에 저장된 사용자 액세스 토큰 * 원격 백엔드 구성 파일. 일관성을 위해 이름을 **`remote_backend.tf` **로 지정 -**경고** - Terraform Cloud API 토큰을 github에 올리지 마세요! +**경고** - HCP Terraform API 토큰을 github에 올리지 마세요! https://www.terraform.io/docs/backends/types/remote.html @@ -559,7 +559,7 @@ name: lab-exercise-0 name: lab-exercise-1 # 👩‍💻 Lab Exercise: Remote State 구성하기

-이 실습에서는 무료 Terraform Cloud 계정을 설정하고 Terraform 명령의 원격 실행을 위해 계정을 구성합니다. +이 실습에서는 무료 HCP Terraform 계정을 설정하고 Terraform 명령의 원격 실행을 위해 계정을 구성합니다. 강사는 첫 번째 실습 환경의 URL을 제공합니다. @@ -582,7 +582,7 @@ class: title --- name: securing-sensitive-vars class: title, smokescreen, shelf -background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/secure_lock.jpg) +background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/secure_lock.jpg) # Sensitive Variables (민감한 변수) ## API 자격 증명을 위한 안전한 장소 @@ -608,7 +608,7 @@ https://nakedsecurity.sophos.com/2019/03/25/thousands-of-coders-are-leaving-thei name: Protecting-Sensitive-Variables class: img-right-full # 민감한 변수 보호 -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/encryption.jpg) +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/encryption.jpg) * 클라우드 API 키 * 비밀번호 @@ -617,7 +617,7 @@ class: img-right-full * 민감한 텍스트 또는 데이터 ??? -Terraform Cloud는 짧은 텍스트 문자열의 암호화 및 저장을 기본적으로 지원합니다. 이를 통해 일반 텍스트로 노출하거나 다른 사람의 랩톱에 저장하지 않고도 프로비저닝 프로세스 중에 이러한 자격 증명을 안전하게 사용할 수 있습니다. +HCP Terraform는 짧은 텍스트 문자열의 암호화 및 저장을 기본적으로 지원합니다. 이를 통해 일반 텍스트로 노출하거나 다른 사람의 랩톱에 저장하지 않고도 프로비저닝 프로세스 중에 이러한 자격 증명을 안전하게 사용할 수 있습니다. --- name: where-are-your-creds @@ -635,9 +635,9 @@ Terraform은 클라우드 공급자의 API와 통신하기 위해 자격 증명 name: a-better-way-creds # 그럼, 민감한 정보는 어떻게 저장할까요? -Terraform Cloud/Enterprise는 자격 증명같은 민감한 정보를 안전하게 저장하고 암호화 할 수 있습니다. 이 암호화 된 저장소는 Password, TLS 인증서, SSH 키, 일반 텍스트 표기되면 안되는 기타 모든 용도로 사용할 수 있습니다. +HCP Terraform/Terraform Enterprise는 자격 증명같은 민감한 정보를 안전하게 저장하고 암호화 할 수 있습니다. 이 암호화 된 저장소는 Password, TLS 인증서, SSH 키, 일반 텍스트 표기되면 안되는 기타 모든 용도로 사용할 수 있습니다. -.center[![:scale 70%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/aws_encrypted_vars.png)] +.center[![:scale 70%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/aws_encrypted_vars.png)] ??? 다음은 작업 공간 내에서 사용할 수 있도록 AWS 자격 증명을 안전하게 저장하는 예입니다. 일단 설정되면 사용자가 관리 할 필요가 없습니다. @@ -645,8 +645,8 @@ Terraform Cloud/Enterprise는 자격 증명같은 민감한 정보를 안전하 --- name: terraform-teams class: title, smokescreen, shelf -background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/teamwork.png) -# Terraform Cloud Teams +background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/teamwork.png) +# HCP Terraform Teams ## Role-Based Access Controls (RBAC) ??? @@ -656,7 +656,7 @@ background-image: url(https://hashicorp.github.io/field-workshops-terraform/slid name: terraform-rbac-2 class: img-right # Terraform 협업을 위한 팀(Team) -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/teams_gui.png) +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/teams_gui.png) Team은 사용자의 역할에 따라 Terraform 인프라의 여러 부분에 다양한 수준의 액세스 권한을 부여하는 데 사용됩니다. @@ -691,7 +691,7 @@ class: title --- name: version-control-title class: title, smokescreen, shelf -background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/git_log.png) +background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/git_log.png) # Terraform에 VCS 더하기 ## Version Control Systems @@ -708,23 +708,23 @@ name: whats-a-vcs class: img-right # Version Control System (VCS) 란? -![:scale 70%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/distributed_vcs.png) +![:scale 70%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/distributed_vcs.png) 버전 제어 시스템은 사용자가 인프라 및 애플리케이션의 변경 사항을 저장, 추적, 테스트 및 공동 작업 할 수있는 애플리케이션입니다. -Terraform Cloud는 가장 일반적인 버전 제어 시스템과 통합됩니다. +HCP Terraform는 가장 일반적인 버전 제어 시스템과 통합됩니다. ??? -git (버전 제어 시스템)을 GitHub (세계에서 가장 큰 git 저장소 모음을 포함하는 웹 기반 애플리케이션)와 혼동하지 않도록하십시오. git의 다른 저장소는 무엇입니까? Bitbucket, GitLab은 모두 Terraform Cloud에서 지원됩니다. 오늘은 GitHub로 작업하지만 주요 git 공급 업체 소프트웨어와 통합 할 수 있습니다. +git (버전 제어 시스템)을 GitHub (세계에서 가장 큰 git 저장소 모음을 포함하는 웹 기반 애플리케이션)와 혼동하지 않도록하십시오. git의 다른 저장소는 무엇입니까? Bitbucket, GitLab은 모두 HCP Terraform에서 지원됩니다. 오늘은 GitHub로 작업하지만 주요 git 공급 업체 소프트웨어와 통합 할 수 있습니다. --- -name: tfc-infra-as-code-workflow +name: hcp-terraform-infra-as-code-workflow class: img-left -# Terraform Cloud와 VCS 결합 +# HCP Terraform와 VCS 결합 -![:scale 70%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/git_noobs.png) +![:scale 70%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/git_noobs.png) -Terraform Cloud는 GitHub Enterprise, Gitlab 및 Bitbucket의 소스 코드 저장소와 직접 통합 할 수 있습니다. 이를 통해 코드 검토, 테스트 및 승인을 통해 간단한 DevOps 워크 플로를 구축 할 수 있습니다. +HCP Terraform는 GitHub Enterprise, Gitlab 및 Bitbucket의 소스 코드 저장소와 직접 통합 할 수 있습니다. 이를 통해 코드 검토, 테스트 및 승인을 통해 간단한 DevOps 워크 플로를 구축 할 수 있습니다. https://xkcd.com/1597/ @@ -745,12 +745,12 @@ class: img-right-full 각 팀은 필요에 따라 Terraform 코드를 제공하거나 사용할 수 있습니다. ??? -모든 테라 폼 코드를 git repos에 저장하면 사용자 협업과 같은 추가 기능을 활성화 합니다. 이것은 CommitStrip이라는 재미있는 만화입니다. 개발자와 운영팀이 함께 일하는 법을 배우려고합니다. Terraform Cloud는 이러한 팀을보다 생산적인 방식으로 더 가깝게 만드는 데 도움이됩니다. +모든 테라 폼 코드를 git repos에 저장하면 사용자 협업과 같은 추가 기능을 활성화 합니다. 이것은 CommitStrip이라는 재미있는 만화입니다. 개발자와 운영팀이 함께 일하는 법을 배우려고합니다. HCP Terraform는 이러한 팀을보다 생산적인 방식으로 더 가깝게 만드는 데 도움이됩니다. --- name: vcs-driven-workflow # 테스트 파이프라인의 자동화 -.center[![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/git_workflow_tests.png)] +.center[![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/git_workflow_tests.png)] Terraform 코드가 버전 제어 시스템에 저장되면 pull 요청, 코드 검토 및 테스트와 같은 추가 기능을 활성화합니다. 다음은 Training Lab 저장소에서 실행되는 몇 가지 테스트를 보여주는 예입니다. @@ -760,7 +760,7 @@ VCS에 코드를 저장하면 자동화 된 테스트 파이프 라인을 구축 --- name: everything-is-recorded # 이제, 모든 변경사항은 추적 됩니다. -.center[![:scale 100%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/git_commit_log.png)] +.center[![:scale 100%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/git_commit_log.png)] 모든 인프라 변경 사항은 git 로그에 기록되고 추적됩니다. 변경 한 사람, 변경된 사항, 변경 사항을 승인 한 사람, 변경 한시기와 이유를 항상 정확하게 알 수 있습니다. @@ -770,7 +770,7 @@ name: everything-is-recorded --- name: sentinel-policy-enforcement class: title, smokescreen, shelf -background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/security_lasers.jpg) +background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/security_lasers.jpg) # Sentinel ## Terraformd에서 정책을 코드로 실행 @@ -824,7 +824,7 @@ name: sentinel-enforcement-levels --- name: org-or-workspace # 조직 또는 작업 영역에 Sentinel 적용 -.center[![:scale 80%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/policy_workspaces.png)] +.center[![:scale 80%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/policy_workspaces.png)] ??? 정책 시행에 대해 매우 구체적이거나 매우 광범위 할 수 있습니다. 조직 전체의 정책을 구현하여 기본 보안 규칙이 항상 모든 곳에서 준수되도록 할 수 있습니다. @@ -854,7 +854,7 @@ class: title --- name: private-module-registry class: title, smokescreen, shelf -background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/lego_wallpaper.jpg) +background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/lego_wallpaper.jpg) # Terraform Modules ## 재사용 가능한 Infrastructure as a Code @@ -864,7 +864,7 @@ background-image: url(https://hashicorp.github.io/field-workshops-terraform/slid --- name: what-even-is-module # Terraform Module이 뭘까요? -.center[![:scale 90%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/aws_vpc_module.png)] +.center[![:scale 90%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/aws_vpc_module.png)] 모듈은 사용자에게 불필요한 복잡성을 숨기는 재사용 가능한 Terraform 코드 단위입니다. 예제의 모듈은 8 개의 변수로 표준 VPC 구성을 생성합니다. @@ -893,12 +893,12 @@ name: how-modules-configured name: private-module-registry class: img-right -# Private Module Registry -![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/aws_pmr.png) +# Terraform Private Registry +![](https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/aws_pmr.png) Terraform 모듈은 인프라를 구축하는 데 사용할 수있는 재사용 가능한 Terraform 코드 패키지입니다. -Terraform Cloud에는 조직과 팀에 모듈을 저장, 버전 화 및 배포 할 수있는 비공개 모듈 레지스트리가 포함되어 있습니다. +HCP Terraform에는 조직과 팀에 모듈을 저장, 버전 화 및 배포 할 수있는 비공개 모듈 레지스트리가 포함되어 있습니다. ??? 공용 모듈 레지스트리와 같지만 사용자 만 액세스 할 수있는 자체 Terraform 조직 내에서 실행됩니다. 이렇게하면 개인 또는 기밀 코드를 공유하거나 공용 모듈을 가져 와서 자신이 사용하도록 포크 할 수 있습니다. @@ -906,12 +906,12 @@ Terraform Cloud에는 조직과 팀에 모듈을 저장, 버전 화 및 배포 --- name: api-driven-workflows class: title, smokescreen, shelf -background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-cloud/images/enter_the_matrix.jpg) -# Terraform Cloud API +background-image: url(https://hashicorp.github.io/field-workshops-terraform/slides/aws/hcp-terraform/images/enter_the_matrix.jpg) +# HCP Terraform API ## 모든것을 자동화하기 ??? -이 섹션에서는 Terraform Cloud API를 사용하여 자동화를 구축 할 수있는 것의 작은 샘플을 제공합니다. API는 기본 Terraform 지원 또는 통합이없는 시스템에서도 Terraform Cloud와 상호 작용할 수있는 명확하고 잘 알려진 방법을 제공합니다. +이 섹션에서는 HCP Terraform API를 사용하여 자동화를 구축 할 수있는 것의 작은 샘플을 제공합니다. API는 기본 Terraform 지원 또는 통합이없는 시스템에서도 HCP Terraform와 상호 작용할 수있는 명확하고 잘 알려진 방법을 제공합니다. --- name: whats-an-api @@ -933,8 +933,8 @@ API는 인터넷의 기본 언어입니다. Akamai 연구에 따르면 인터넷 모든 종류의 API가 준비되어있습니다. --- -name: terraform-cloud-api -# Terraform Cloud API - 동작 +name: hcp-terraform-api +# HCP Terraform API - 동작 ```bash # Create a workspace using the API curl --header "Authorization: Bearer $TOKEN" --header \ @@ -954,7 +954,7 @@ https://app.terraform.io/api/v2/organizations/$ORG/workspaces --- name: api-use-cases -# Terraform Cloud API - 사용 사례 +# HCP Terraform API - 사용 사례 * CI/CD 테스트 파이프 라인 * 워크 플로우 관리 시스템과 연결 @@ -963,13 +963,13 @@ name: api-use-cases * 특정 요구에 맞는 사용자 지정 명령 줄 스크립트 ??? -다음은 Terraform Cloud API로 빌드 할 수있는 몇 가지 사항입니다. +다음은 HCP Terraform API로 빌드 할 수있는 몇 가지 사항입니다. --- name: lab-exercise-4 # 👩‍💻 Lab Exercise: Modules / API Automation

-이 실습에서는 Terraform Cloud를 사용한 프라이빗 모듈 레지스트리 및 API 자동화에 대해 다룹니다. +이 실습에서는 HCP Terraform를 사용한 프라이빗 모듈 레지스트리 및 API 자동화에 대해 다룹니다. 중단 한 부분부터 실습을 계속합니다. @@ -1001,12 +1001,12 @@ https://instruqt.com/hashicorp/tracks/terraform-cloud-bonus-lab --- name: additional-resources-tfe # Additional Resources -Terraform Enterprise 또는 Terraform Cloud에 대해 자세히 알아 보려면 아래 링크를 방문하십시오. +Terraform Enterprise 또는 HCP Terraform에 대해 자세히 알아 보려면 아래 링크를 방문하십시오. Terraform Enterprise Product Page https://www.hashicorp.com/products/terraform/ -Why Consider Terraform Enterprise Over Open Source? +Why Consider Terraform Enterprise Over Community Edition? https://www.hashicorp.com/resources/why-consider-terraform-enterprise-over-open-source Terraform AWS Provider Documentation diff --git a/docs/slides/korean/aws/index.md b/docs/slides/korean/aws/index.md index 82a0e5d3..024bf168 100644 --- a/docs/slides/korean/aws/index.md +++ b/docs/slides/korean/aws/index.md @@ -28,7 +28,7 @@ name: terraform-workshops-slides ### 각 클라우드에 대한 워크샵은 아래 유형별로 구성됩니다. - 1. Terraform OSS + 1. Terraform Community Edition 1. Terraform Enterprise ??? diff --git a/docs/slides/korean/aws/terraform-community/index.html b/docs/slides/korean/aws/terraform-community/index.html new file mode 100644 index 00000000..9e7667d2 --- /dev/null +++ b/docs/slides/korean/aws/terraform-community/index.html @@ -0,0 +1,79 @@ + + + + + + + Introduction to Terraform Community Edition on AWS + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/slides/korean/aws/terraform-oss/index.md b/docs/slides/korean/aws/terraform-community/index.md similarity index 95% rename from docs/slides/korean/aws/terraform-oss/index.md rename to docs/slides/korean/aws/terraform-community/index.md index dab264f8..dcf88125 100644 --- a/docs/slides/korean/aws/terraform-oss/index.md +++ b/docs/slides/korean/aws/terraform-community/index.md @@ -1,7 +1,7 @@ name: AWS-Terraform-Workshop class: center count: false -![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/images/tf_aws.png) +![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/images/tf_aws.png)

@@ -74,7 +74,7 @@ name: Table-of-Contents 1. AWS 인스턴스 프로비저닝과 설정
🔬 **Lab - Provisioning with Terraform**
1. 인프라 상태를 변경하고 관리하기 -1. Terraform Cloud
+1. HCP Terraform
⚗️ **Lab - Terraform Remote State** ??? @@ -111,7 +111,7 @@ name: How-to-Provision-an-AWS-Instance --- name: AWS-Console-Provision # Method 1: AWS Console (GUI) -![:scale 70%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/images/aws_provision.png) +![:scale 70%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/images/aws_provision.png) ??? **AWS를 사용해 본 적이 있다면 익숙해 보일 것입니다. EC2 패널에서 인스턴스> 인스턴스 시작을 클릭하면 인스턴스를 프로비저닝하는 데 사용할 수있는 다양한 AWS 머신 이미지 (AMI) 목록이 표시됩니다. 이들 중 일부는 AWS에서 제공하고 다른 일부는 마켓 플레이스의 타사에서 제공합니다. 필요한 것을 검색하거나 찾아보고 클릭하세요.** @@ -119,7 +119,7 @@ name: AWS-Console-Provision --- name: AWS-Console-Provision-2 # Method 1: AWS Portal (GUI) -![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/images/aws_provision_2.png) +![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/images/aws_provision_2.png) ??? **AMI를 선택한 후에는 인스턴스 유형, 시작하려는 VPC, 할당하려는 관련 IAM 역할, 외부 스토리지, 태그, 보안 그룹 등 몇 가지 세부 정보를 입력합니다. 긴 옵션 목록! AWS 콘솔은 개별 VM 및 개발 또는 테스트 환경을 가동하는 데 유용 할 수 있습니다. 좋은 소식은 이러한 방식으로 인프라를 가동하는 것이 정말 쉽다는 것입니다. 나쁜 소식은 확장되지 않는다는 것입니다. 그리고 아무도 빌드 된 것을 추적하지 않을 가능성이 있습니다.** @@ -310,7 +310,7 @@ name: IaC2 --- name: IaC-Tools # 다른 Infrastructure as Code 도구들 -.center[![:scale 40%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/images/infra_tools.png)] +.center[![:scale 40%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/images/infra_tools.png)] 이러한 도구는 OS나 애플리케이션 구성에 적합합니다. @@ -324,7 +324,7 @@ Chef, Puppet 및 Ansible은 모두 운영 체제 및 애플리케이션의 맥 --- name: Native-Tools # Native-Cloud 프로비저닝 도구들 -.center[![:scale 90%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/images/clouds.png)] +.center[![:scale 90%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/images/clouds.png)] 각 클라우드에는 자체 YAML 또는 JSON 기반 프로비저닝 도구가 있습니다. @@ -335,7 +335,7 @@ Terraform은 모든 주요 클라우드 제공 업체 및 VM 하이퍼 바이저 --- name: Config-Hell -.center[![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/images/Config_Hell.jpg)] +.center[![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/images/Config_Hell.jpg)] ??? **이것은 재미있는 웹 만화입니다. 중첩 된 JSON 템플릿을 살펴보면서 중괄호의 어떤 레이어에 있는지 알아 내려고 노력한 사람들은 이것을 이해할 것입니다.** @@ -357,7 +357,7 @@ Terraform 코드 (HCL)는 배우기 쉽고 읽기 쉽습니다. 또한 동등한 --- Name: Why-Terraform-1 # 그래서, 왜 Terraform 일까요? -.center[![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/images/1password_terraform.png)] +.center[![:scale 60%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/images/1password_terraform.png)] .center[### ] @@ -436,10 +436,10 @@ class: title 이제 terraform을 설치하고 AWS와 함께 작업 했으므로 실제 인프라를 구축하기 전에 몇 가지 테스트 실행을 수행 할 수 있습니다. 주의 깊게 따라 가면서 각 슬라이드의 명령을 복사하여 쉘에 붙여 넣으십시오. --- -name: what-is-terraform-oss +name: what-is-terraform-community class: img-left # Terraform이란 -![Terraform](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/images/Terraform_VerticalLogo_FullColor.png) +![Terraform](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/images/Terraform_VerticalLogo_FullColor.png) Terraform은 오픈 소스 프로비저닝 도구입니다. @@ -889,7 +889,7 @@ output "private_key" { name: tf-dependency-graph class: img-right # Terraform Dependency Graph -.center[![:scale 100%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/images/blast_radius_graph_1.png)] +.center[![:scale 100%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/images/blast_radius_graph_1.png)] terraform 리소스 그래프는 리소스 간의 종속성을 시각적으로 보여줍니다. @@ -992,7 +992,7 @@ provisioner "remote-exec" { name: puppet-chef-ansible class: compact # Terraform & Config Management Tools -.center[![:scale 50%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-oss/images/cpa.jpg)] +.center[![:scale 50%](https://hashicorp.github.io/field-workshops-terraform/slides/aws/terraform-community/images/cpa.jpg)] Terraform은 Chef, Puppet 또는 Ansible과 같은 일반적인 구성 관리 도구와 잘 작동합니다. @@ -1130,15 +1130,15 @@ class: compact name: Chapter-6 class: title # Chapter 6 -## Terraform Cloud +## HCP Terraform --- -name: terraform-cloud +name: hcp-terraform class: img-right -# Terraform Cloud -##### Terraform Cloud는 Terraform을 사용하여 코드로 인프라를 작성하고 구축하기위한 최고의 워크 플로를 제공하는 무료 SaaS 애플리케이션입니다. -![Terraform Cloud](https://hashicorp.github.io/field-workshops-assets/assets/logos/Terraform_Cloud_Logo_Color_RGB.png) +# HCP Terraform +##### HCP Terraform는 Terraform을 사용하여 코드로 인프라를 작성하고 구축하기위한 최고의 워크 플로를 제공하는 무료 SaaS 애플리케이션입니다. +![HCP Terraform](https://hashicorp.github.io/field-workshops-assets/assets/logos/Terraform_Cloud_Logo_Color_RGB.png) * 상태 저장 및 관리 * Terraform 실행을보고 승인하기위한 웹 UI @@ -1149,35 +1149,35 @@ class: img-right * 자동화를위한 전체 HTTP API --- -name: tfcloud-vs-tfe -# Terraform Cloud or Terraform Enterprise -**Terraform Cloud**는 원격 상태 관리, API 기반 실행, 정책 관리 등과 같은 기능을 제공하는 호스팅 된 애플리케이션입니다. 많은 사용자가 클라우드 기반 SaaS 솔루션을 선호하는 이유 중 한가지는 인프라를 유지하여 실행하는 것이 부담될 때 입니다. +name: hcp-terraform-vs-tfe +# HCP Terraform or Terraform Enterprise +**HCP Terraform**는 원격 상태 관리, API 기반 실행, 정책 관리 등과 같은 기능을 제공하는 호스팅 된 애플리케이션입니다. 많은 사용자가 클라우드 기반 SaaS 솔루션을 선호하는 이유 중 한가지는 인프라를 유지하여 실행하는 것이 부담될 때 입니다. **Terraform Enterprise**는 동일한 애플리케이션이지만 클라우드 환경이나 데이터 센터에서 실행됩니다. 일부 사용자는 Terraform Enterprise 애플리케이션에 대한 더 많은 제어가 필요하거나 회사 방화벽 뒤의 제한된 네트워크에서 실행하려고합니다. -이 두 제품의 기능 목록은 거의 동일합니다. 다음 실습에서는 Terraform Cloud 계정을 사용할 것입니다. +이 두 제품의 기능 목록은 거의 동일합니다. 다음 실습에서는 HCP Terraform 계정을 사용할 것입니다. --- -name: terraform-cloud-remote-state +name: hcp-terraform-remote-state # Terraform Remote State 기본적으로 Terraform은 랩톱 또는 워크스테이션의 작업 공간 디렉토리에 상태 파일을 저장합니다. 이것은 개발 및 실험에는 괜찮지만 프로덕션 환경에서는 상태 파일을 안전하게 보호하고 저장해야합니다. -Terraform에는 상태 파일을 원격으로 저장하고 보호하는 옵션이 있습니다. Terraform Cloud 계정은 이제 오픈 소스 사용자에게도 무제한 상태 파일 스토리지를 제공합니다. +Terraform에는 상태 파일을 원격으로 저장하고 보호하는 옵션이 있습니다. HCP Terraform 계정은 이제 오픈 소스 사용자에게도 무제한 상태 파일 스토리지를 제공합니다. -모든 상태 파일은 암호화되어 (HashiCorp Vault 사용) Terraform Cloud 계정에 안전하게 저장됩니다. 상태 파일을 다시 잃어 버리거나 삭제하는 것에 대해 걱정할 필요가 없습니다. +모든 상태 파일은 암호화되어 (HashiCorp Vault 사용) HCP Terraform 계정에 안전하게 저장됩니다. 상태 파일을 다시 잃어 버리거나 삭제하는 것에 대해 걱정할 필요가 없습니다. --- name: execution-mode -# Terraform Cloud Execution Modes +# HCP Terraform Execution Modes **로컬 실행** - Terraform 명령은 랩톱 또는 워크 스테이션에서 실행되며 모든 변수는 로컬로 구성됩니다. 테라 폼 상태 만 원격으로 저장됩니다. -**원격 실행** - Terraform 명령은 Terraform Cloud 컨테이너 환경에서 실행됩니다. 모든 변수는 원격 작업 공간에 저장됩니다. 코드는 Version Control System 저장소에 저장할 수 있습니다. 프리 티어 사용자의 경우 동시 실행이 1 회로 제한됩니다. +**원격 실행** - Terraform 명령은 HCP Terraform 컨테이너 환경에서 실행됩니다. 모든 변수는 원격 작업 공간에 저장됩니다. 코드는 Version Control System 저장소에 저장할 수 있습니다. 프리 티어 사용자의 경우 동시 실행이 1 회로 제한됩니다. --- name: lab-exercise-2c -# 👩‍💻 Lab Exercise: Terraform Cloud -두 번째 실습의 마지막 부분에서는 무료 Terraform Cloud 계정을 만들고 상태 파일의 원격 저장소를 활성화합니다. +# 👩‍💻 Lab Exercise: HCP Terraform +두 번째 실습의 마지막 부분에서는 무료 HCP Terraform 계정을 만들고 상태 파일의 원격 저장소를 활성화합니다. 교육 랩으로 돌아가 중단 한 부분부터 계속합니다. diff --git a/docs/slides/korean/aws/terraform-oss/index.html b/docs/slides/korean/aws/terraform-oss/index.html deleted file mode 100644 index afaee178..00000000 --- a/docs/slides/korean/aws/terraform-oss/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - Introduction to Terraform OSS on AWS - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/slides/korean/azure/index.md b/docs/slides/korean/azure/index.md index e1d319a4..3b91655a 100644 --- a/docs/slides/korean/azure/index.md +++ b/docs/slides/korean/azure/index.md @@ -26,7 +26,7 @@ name: terraform-workshops-slides # Terraform Azure Workshop Slides ### This directory contains slides for Terraform workshops intended for use with Azure. ### Workshops for each cloud are organized by type: - 1. Terraform OSS + 1. Terraform Community Edition 1. Terraform Enterprise ??? diff --git a/docs/slides/korean/azure/terraform-oss/README.md b/docs/slides/korean/azure/terraform-community/README.md similarity index 100% rename from docs/slides/korean/azure/terraform-oss/README.md rename to docs/slides/korean/azure/terraform-community/README.md diff --git a/docs/slides/korean/azure/terraform-oss/images/8bitpipe.png b/docs/slides/korean/azure/terraform-community/images/8bitpipe.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/8bitpipe.png rename to docs/slides/korean/azure/terraform-community/images/8bitpipe.png diff --git a/docs/slides/korean/azure/terraform-oss/images/Config_Hell.jpg b/docs/slides/korean/azure/terraform-community/images/Config_Hell.jpg similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/Config_Hell.jpg rename to docs/slides/korean/azure/terraform-community/images/Config_Hell.jpg diff --git a/docs/slides/korean/azure/terraform-oss/images/TFE_GUI.png b/docs/slides/korean/azure/terraform-community/images/TFE_GUI.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/TFE_GUI.png rename to docs/slides/korean/azure/terraform-community/images/TFE_GUI.png diff --git a/docs/slides/korean/azure/terraform-oss/images/Terraform_VerticalLogo_FullColor.png b/docs/slides/korean/azure/terraform-community/images/Terraform_VerticalLogo_FullColor.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/Terraform_VerticalLogo_FullColor.png rename to docs/slides/korean/azure/terraform-community/images/Terraform_VerticalLogo_FullColor.png diff --git a/docs/slides/korean/azure/terraform-oss/images/add_a_module.png b/docs/slides/korean/azure/terraform-community/images/add_a_module.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/add_a_module.png rename to docs/slides/korean/azure/terraform-community/images/add_a_module.png diff --git a/docs/slides/korean/azure/terraform-oss/images/add_policy_to_policy_set.png b/docs/slides/korean/azure/terraform-community/images/add_policy_to_policy_set.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/add_policy_to_policy_set.png rename to docs/slides/korean/azure/terraform-community/images/add_policy_to_policy_set.png diff --git a/docs/slides/korean/azure/terraform-oss/images/az_login.png b/docs/slides/korean/azure/terraform-community/images/az_login.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/az_login.png rename to docs/slides/korean/azure/terraform-community/images/az_login.png diff --git a/docs/slides/korean/azure/terraform-oss/images/azure-loves-terraform.png b/docs/slides/korean/azure/terraform-community/images/azure-loves-terraform.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/azure-loves-terraform.png rename to docs/slides/korean/azure/terraform-community/images/azure-loves-terraform.png diff --git a/docs/slides/korean/azure/terraform-oss/images/azure_provision.png b/docs/slides/korean/azure/terraform-community/images/azure_provision.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/azure_provision.png rename to docs/slides/korean/azure/terraform-community/images/azure_provision.png diff --git a/docs/slides/korean/azure/terraform-oss/images/azure_provision_2.png b/docs/slides/korean/azure/terraform-community/images/azure_provision_2.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/azure_provision_2.png rename to docs/slides/korean/azure/terraform-community/images/azure_provision_2.png diff --git a/docs/slides/korean/azure/terraform-oss/images/azure_provision_3.png b/docs/slides/korean/azure/terraform-community/images/azure_provision_3.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/azure_provision_3.png rename to docs/slides/korean/azure/terraform-community/images/azure_provision_3.png diff --git a/docs/slides/korean/azure/terraform-oss/images/azure_tf_code.png b/docs/slides/korean/azure/terraform-community/images/azure_tf_code.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/azure_tf_code.png rename to docs/slides/korean/azure/terraform-community/images/azure_tf_code.png diff --git a/docs/slides/korean/azure/terraform-oss/images/blast_radius_graph_1.png b/docs/slides/korean/azure/terraform-community/images/blast_radius_graph_1.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/blast_radius_graph_1.png rename to docs/slides/korean/azure/terraform-community/images/blast_radius_graph_1.png diff --git a/docs/slides/korean/azure/terraform-oss/images/blast_radius_graph_2.png b/docs/slides/korean/azure/terraform-community/images/blast_radius_graph_2.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/blast_radius_graph_2.png rename to docs/slides/korean/azure/terraform-community/images/blast_radius_graph_2.png diff --git a/docs/slides/korean/azure/terraform-oss/images/blast_radius_graph_3.png b/docs/slides/korean/azure/terraform-community/images/blast_radius_graph_3.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/blast_radius_graph_3.png rename to docs/slides/korean/azure/terraform-community/images/blast_radius_graph_3.png diff --git a/docs/slides/korean/azure/terraform-oss/images/change_default_shell.png b/docs/slides/korean/azure/terraform-community/images/change_default_shell.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/change_default_shell.png rename to docs/slides/korean/azure/terraform-community/images/change_default_shell.png diff --git a/docs/slides/korean/azure/terraform-oss/images/change_to_local.png b/docs/slides/korean/azure/terraform-community/images/change_to_local.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/change_to_local.png rename to docs/slides/korean/azure/terraform-community/images/change_to_local.png diff --git a/docs/slides/korean/azure/terraform-oss/images/choose_org.png b/docs/slides/korean/azure/terraform-community/images/choose_org.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/choose_org.png rename to docs/slides/korean/azure/terraform-community/images/choose_org.png diff --git a/docs/slides/korean/azure/terraform-oss/images/choose_training_org.png b/docs/slides/korean/azure/terraform-community/images/choose_training_org.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/choose_training_org.png rename to docs/slides/korean/azure/terraform-community/images/choose_training_org.png diff --git a/docs/slides/korean/azure/terraform-oss/images/clouds.png b/docs/slides/korean/azure/terraform-community/images/clouds.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/clouds.png rename to docs/slides/korean/azure/terraform-community/images/clouds.png diff --git a/docs/slides/korean/azure/terraform-oss/images/command_palette.png b/docs/slides/korean/azure/terraform-community/images/command_palette.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/command_palette.png rename to docs/slides/korean/azure/terraform-community/images/command_palette.png diff --git a/docs/slides/korean/azure/terraform-oss/images/command_shift_p.png b/docs/slides/korean/azure/terraform-community/images/command_shift_p.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/command_shift_p.png rename to docs/slides/korean/azure/terraform-community/images/command_shift_p.png diff --git a/docs/slides/korean/azure/terraform-oss/images/confirm_destroy.png b/docs/slides/korean/azure/terraform-community/images/confirm_destroy.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/confirm_destroy.png rename to docs/slides/korean/azure/terraform-community/images/confirm_destroy.png diff --git a/docs/slides/korean/azure/terraform-oss/images/cpa.jpg b/docs/slides/korean/azure/terraform-community/images/cpa.jpg similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/cpa.jpg rename to docs/slides/korean/azure/terraform-community/images/cpa.jpg diff --git a/docs/slides/korean/azure/terraform-oss/images/create_a_new_policy.png b/docs/slides/korean/azure/terraform-community/images/create_a_new_policy.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/create_a_new_policy.png rename to docs/slides/korean/azure/terraform-community/images/create_a_new_policy.png diff --git a/docs/slides/korean/azure/terraform-oss/images/create_a_new_policy_set_gui.png b/docs/slides/korean/azure/terraform-community/images/create_a_new_policy_set_gui.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/create_a_new_policy_set_gui.png rename to docs/slides/korean/azure/terraform-community/images/create_a_new_policy_set_gui.png diff --git a/docs/slides/korean/azure/terraform-oss/images/create_policy_button.png b/docs/slides/korean/azure/terraform-community/images/create_policy_button.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/create_policy_button.png rename to docs/slides/korean/azure/terraform-community/images/create_policy_button.png diff --git a/docs/slides/korean/azure/terraform-oss/images/create_repo_workspace.png b/docs/slides/korean/azure/terraform-community/images/create_repo_workspace.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/create_repo_workspace.png rename to docs/slides/korean/azure/terraform-community/images/create_repo_workspace.png diff --git a/docs/slides/korean/azure/terraform-oss/images/create_workspace_gui.png b/docs/slides/korean/azure/terraform-community/images/create_workspace_gui.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/create_workspace_gui.png rename to docs/slides/korean/azure/terraform-community/images/create_workspace_gui.png diff --git a/docs/slides/korean/azure/terraform-oss/images/destroy_gui.png b/docs/slides/korean/azure/terraform-community/images/destroy_gui.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/destroy_gui.png rename to docs/slides/korean/azure/terraform-community/images/destroy_gui.png diff --git a/docs/slides/korean/azure/terraform-oss/images/edit_this_file_github.png b/docs/slides/korean/azure/terraform-community/images/edit_this_file_github.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/edit_this_file_github.png rename to docs/slides/korean/azure/terraform-community/images/edit_this_file_github.png diff --git a/docs/slides/korean/azure/terraform-oss/images/enable_auto_apply.png b/docs/slides/korean/azure/terraform-community/images/enable_auto_apply.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/enable_auto_apply.png rename to docs/slides/korean/azure/terraform-community/images/enable_auto_apply.png diff --git a/docs/slides/korean/azure/terraform-oss/images/encrypted_vars.png b/docs/slides/korean/azure/terraform-community/images/encrypted_vars.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/encrypted_vars.png rename to docs/slides/korean/azure/terraform-community/images/encrypted_vars.png diff --git a/docs/slides/korean/azure/terraform-oss/images/fork.png b/docs/slides/korean/azure/terraform-community/images/fork.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/fork.png rename to docs/slides/korean/azure/terraform-community/images/fork.png diff --git a/docs/slides/korean/azure/terraform-oss/images/get-started-tfe.png b/docs/slides/korean/azure/terraform-community/images/get-started-tfe.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/get-started-tfe.png rename to docs/slides/korean/azure/terraform-community/images/get-started-tfe.png diff --git a/docs/slides/korean/azure/terraform-oss/images/git_commit_gui.png b/docs/slides/korean/azure/terraform-community/images/git_commit_gui.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/git_commit_gui.png rename to docs/slides/korean/azure/terraform-community/images/git_commit_gui.png diff --git a/docs/slides/korean/azure/terraform-oss/images/git_commit_push.png b/docs/slides/korean/azure/terraform-community/images/git_commit_push.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/git_commit_push.png rename to docs/slides/korean/azure/terraform-community/images/git_commit_push.png diff --git a/docs/slides/korean/azure/terraform-oss/images/git_triggered_run.png b/docs/slides/korean/azure/terraform-community/images/git_triggered_run.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/git_triggered_run.png rename to docs/slides/korean/azure/terraform-community/images/git_triggered_run.png diff --git a/docs/slides/korean/azure/terraform-oss/images/git_workflow_tests.png b/docs/slides/korean/azure/terraform-community/images/git_workflow_tests.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/git_workflow_tests.png rename to docs/slides/korean/azure/terraform-community/images/git_workflow_tests.png diff --git a/docs/slides/korean/azure/terraform-oss/images/hashilogo.png b/docs/slides/korean/azure/terraform-community/images/hashilogo.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/hashilogo.png rename to docs/slides/korean/azure/terraform-community/images/hashilogo.png diff --git a/docs/slides/korean/azure/terraform-oss/images/hashimoo.png b/docs/slides/korean/azure/terraform-community/images/hashimoo.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/hashimoo.png rename to docs/slides/korean/azure/terraform-community/images/hashimoo.png diff --git a/docs/slides/korean/azure/terraform-oss/images/infra_as_code.png b/docs/slides/korean/azure/terraform-community/images/infra_as_code.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/infra_as_code.png rename to docs/slides/korean/azure/terraform-community/images/infra_as_code.png diff --git a/docs/slides/korean/azure/terraform-oss/images/infra_as_code_2.png b/docs/slides/korean/azure/terraform-community/images/infra_as_code_2.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/infra_as_code_2.png rename to docs/slides/korean/azure/terraform-community/images/infra_as_code_2.png diff --git a/docs/slides/korean/azure/terraform-oss/images/infra_tools.png b/docs/slides/korean/azure/terraform-community/images/infra_tools.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/infra_tools.png rename to docs/slides/korean/azure/terraform-community/images/infra_tools.png diff --git a/docs/slides/korean/azure/terraform-oss/images/install_terraform_extension.png b/docs/slides/korean/azure/terraform-community/images/install_terraform_extension.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/install_terraform_extension.png rename to docs/slides/korean/azure/terraform-community/images/install_terraform_extension.png diff --git a/docs/slides/korean/azure/terraform-oss/images/instructor.svg b/docs/slides/korean/azure/terraform-community/images/instructor.svg similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/instructor.svg rename to docs/slides/korean/azure/terraform-community/images/instructor.svg diff --git a/docs/slides/korean/azure/terraform-oss/images/integrate_github.png b/docs/slides/korean/azure/terraform-community/images/integrate_github.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/integrate_github.png rename to docs/slides/korean/azure/terraform-community/images/integrate_github.png diff --git a/docs/slides/korean/azure/terraform-oss/images/its-dangerous-to-go-alone.png b/docs/slides/korean/azure/terraform-community/images/its-dangerous-to-go-alone.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/its-dangerous-to-go-alone.png rename to docs/slides/korean/azure/terraform-community/images/its-dangerous-to-go-alone.png diff --git a/docs/slides/korean/azure/terraform-oss/images/kitt_scanner.gif b/docs/slides/korean/azure/terraform-community/images/kitt_scanner.gif similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/kitt_scanner.gif rename to docs/slides/korean/azure/terraform-community/images/kitt_scanner.gif diff --git a/docs/slides/korean/azure/terraform-oss/images/meow_world.png b/docs/slides/korean/azure/terraform-community/images/meow_world.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/meow_world.png rename to docs/slides/korean/azure/terraform-community/images/meow_world.png diff --git a/docs/slides/korean/azure/terraform-oss/images/merge_pull_request.png b/docs/slides/korean/azure/terraform-community/images/merge_pull_request.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/merge_pull_request.png rename to docs/slides/korean/azure/terraform-community/images/merge_pull_request.png diff --git a/docs/slides/korean/azure/terraform-oss/images/microsoft-azure-small.png b/docs/slides/korean/azure/terraform-community/images/microsoft-azure-small.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/microsoft-azure-small.png rename to docs/slides/korean/azure/terraform-community/images/microsoft-azure-small.png diff --git a/docs/slides/korean/azure/terraform-oss/images/microsoft-azure.jpg b/docs/slides/korean/azure/terraform-community/images/microsoft-azure.jpg similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/microsoft-azure.jpg rename to docs/slides/korean/azure/terraform-community/images/microsoft-azure.jpg diff --git a/docs/slides/korean/azure/terraform-oss/images/microsoft-azure.png b/docs/slides/korean/azure/terraform-community/images/microsoft-azure.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/microsoft-azure.png rename to docs/slides/korean/azure/terraform-community/images/microsoft-azure.png diff --git a/docs/slides/korean/azure/terraform-oss/images/open_terminal.png b/docs/slides/korean/azure/terraform-community/images/open_terminal.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/open_terminal.png rename to docs/slides/korean/azure/terraform-community/images/open_terminal.png diff --git a/docs/slides/korean/azure/terraform-oss/images/organization_access.png b/docs/slides/korean/azure/terraform-community/images/organization_access.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/organization_access.png rename to docs/slides/korean/azure/terraform-community/images/organization_access.png diff --git a/docs/slides/korean/azure/terraform-oss/images/pmr.png b/docs/slides/korean/azure/terraform-community/images/pmr.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/pmr.png rename to docs/slides/korean/azure/terraform-community/images/pmr.png diff --git a/docs/slides/korean/azure/terraform-oss/images/policy_name_and_mode.png b/docs/slides/korean/azure/terraform-community/images/policy_name_and_mode.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/policy_name_and_mode.png rename to docs/slides/korean/azure/terraform-community/images/policy_name_and_mode.png diff --git a/docs/slides/korean/azure/terraform-oss/images/policy_set_settings.png b/docs/slides/korean/azure/terraform-community/images/policy_set_settings.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/policy_set_settings.png rename to docs/slides/korean/azure/terraform-community/images/policy_set_settings.png diff --git a/docs/slides/korean/azure/terraform-oss/images/preview_graph.png b/docs/slides/korean/azure/terraform-community/images/preview_graph.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/preview_graph.png rename to docs/slides/korean/azure/terraform-community/images/preview_graph.png diff --git a/docs/slides/korean/azure/terraform-oss/images/protect_master.png b/docs/slides/korean/azure/terraform-community/images/protect_master.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/protect_master.png rename to docs/slides/korean/azure/terraform-community/images/protect_master.png diff --git a/docs/slides/korean/azure/terraform-oss/images/queue_a_plan.png b/docs/slides/korean/azure/terraform-community/images/queue_a_plan.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/queue_a_plan.png rename to docs/slides/korean/azure/terraform-community/images/queue_a_plan.png diff --git a/docs/slides/korean/azure/terraform-oss/images/queue_destroy_plan.png b/docs/slides/korean/azure/terraform-community/images/queue_destroy_plan.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/queue_destroy_plan.png rename to docs/slides/korean/azure/terraform-community/images/queue_destroy_plan.png diff --git a/docs/slides/korean/azure/terraform-oss/images/rdp_login.png b/docs/slides/korean/azure/terraform-community/images/rdp_login.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/rdp_login.png rename to docs/slides/korean/azure/terraform-community/images/rdp_login.png diff --git a/docs/slides/korean/azure/terraform-oss/images/ready_to_terraform.png b/docs/slides/korean/azure/terraform-community/images/ready_to_terraform.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/ready_to_terraform.png rename to docs/slides/korean/azure/terraform-community/images/ready_to_terraform.png diff --git a/docs/slides/korean/azure/terraform-oss/images/rebuild_lab_environment.png b/docs/slides/korean/azure/terraform-community/images/rebuild_lab_environment.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/rebuild_lab_environment.png rename to docs/slides/korean/azure/terraform-community/images/rebuild_lab_environment.png diff --git a/docs/slides/korean/azure/terraform-oss/images/remote_execution.png b/docs/slides/korean/azure/terraform-community/images/remote_execution.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/remote_execution.png rename to docs/slides/korean/azure/terraform-community/images/remote_execution.png diff --git a/docs/slides/korean/azure/terraform-oss/images/remote_state_free.png b/docs/slides/korean/azure/terraform-community/images/remote_state_free.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/remote_state_free.png rename to docs/slides/korean/azure/terraform-community/images/remote_state_free.png diff --git a/docs/slides/korean/azure/terraform-oss/images/renderer.png b/docs/slides/korean/azure/terraform-community/images/renderer.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/renderer.png rename to docs/slides/korean/azure/terraform-community/images/renderer.png diff --git a/docs/slides/korean/azure/terraform-oss/images/resource_anatomy.png b/docs/slides/korean/azure/terraform-community/images/resource_anatomy.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/resource_anatomy.png rename to docs/slides/korean/azure/terraform-community/images/resource_anatomy.png diff --git a/docs/slides/korean/azure/terraform-oss/images/resource_graph.png b/docs/slides/korean/azure/terraform-community/images/resource_graph.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/resource_graph.png rename to docs/slides/korean/azure/terraform-community/images/resource_graph.png diff --git a/docs/slides/korean/azure/terraform-oss/images/run_setup.png b/docs/slides/korean/azure/terraform-community/images/run_setup.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/run_setup.png rename to docs/slides/korean/azure/terraform-community/images/run_setup.png diff --git a/docs/slides/korean/azure/terraform-oss/images/sandbox.png b/docs/slides/korean/azure/terraform-community/images/sandbox.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/sandbox.png rename to docs/slides/korean/azure/terraform-community/images/sandbox.png diff --git a/docs/slides/korean/azure/terraform-oss/images/select_git_bash.png b/docs/slides/korean/azure/terraform-community/images/select_git_bash.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/select_git_bash.png rename to docs/slides/korean/azure/terraform-community/images/select_git_bash.png diff --git a/docs/slides/korean/azure/terraform-oss/images/select_git_bash_2.png b/docs/slides/korean/azure/terraform-community/images/select_git_bash_2.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/select_git_bash_2.png rename to docs/slides/korean/azure/terraform-community/images/select_git_bash_2.png diff --git a/docs/slides/korean/azure/terraform-oss/images/set_colors_and_icons.png b/docs/slides/korean/azure/terraform-community/images/set_colors_and_icons.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/set_colors_and_icons.png rename to docs/slides/korean/azure/terraform-community/images/set_colors_and_icons.png diff --git a/docs/slides/korean/azure/terraform-oss/images/set_prefix_gui.png b/docs/slides/korean/azure/terraform-community/images/set_prefix_gui.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/set_prefix_gui.png rename to docs/slides/korean/azure/terraform-community/images/set_prefix_gui.png diff --git a/docs/slides/korean/azure/terraform-oss/images/stage_and_commit.png b/docs/slides/korean/azure/terraform-community/images/stage_and_commit.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/stage_and_commit.png rename to docs/slides/korean/azure/terraform-community/images/stage_and_commit.png diff --git a/docs/slides/korean/azure/terraform-oss/images/standard_a1_v2.png b/docs/slides/korean/azure/terraform-community/images/standard_a1_v2.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/standard_a1_v2.png rename to docs/slides/korean/azure/terraform-community/images/standard_a1_v2.png diff --git a/docs/slides/korean/azure/terraform-oss/images/standard_a2.png b/docs/slides/korean/azure/terraform-community/images/standard_a2.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/standard_a2.png rename to docs/slides/korean/azure/terraform-community/images/standard_a2.png diff --git a/docs/slides/korean/azure/terraform-oss/images/state_table_empty.png b/docs/slides/korean/azure/terraform-community/images/state_table_empty.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/state_table_empty.png rename to docs/slides/korean/azure/terraform-community/images/state_table_empty.png diff --git a/docs/slides/korean/azure/terraform-oss/images/state_table_full.png b/docs/slides/korean/azure/terraform-community/images/state_table_full.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/state_table_full.png rename to docs/slides/korean/azure/terraform-community/images/state_table_full.png diff --git a/docs/slides/korean/azure/terraform-oss/images/team_workspace_acls.png b/docs/slides/korean/azure/terraform-community/images/team_workspace_acls.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/team_workspace_acls.png rename to docs/slides/korean/azure/terraform-community/images/team_workspace_acls.png diff --git a/docs/slides/korean/azure/terraform-oss/images/teams_list.png b/docs/slides/korean/azure/terraform-community/images/teams_list.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/teams_list.png rename to docs/slides/korean/azure/terraform-community/images/teams_list.png diff --git a/docs/slides/korean/azure/terraform-oss/images/terraform_config_files.png b/docs/slides/korean/azure/terraform-community/images/terraform_config_files.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/terraform_config_files.png rename to docs/slides/korean/azure/terraform-community/images/terraform_config_files.png diff --git a/docs/slides/korean/azure/terraform-oss/images/tf_cloud_signup.png b/docs/slides/korean/azure/terraform-community/images/tf_cloud_signup.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/tf_cloud_signup.png rename to docs/slides/korean/azure/terraform-community/images/tf_cloud_signup.png diff --git a/docs/slides/korean/azure/terraform-oss/images/tf_cloud_welcome.png b/docs/slides/korean/azure/terraform-community/images/tf_cloud_welcome.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/tf_cloud_welcome.png rename to docs/slides/korean/azure/terraform-community/images/tf_cloud_welcome.png diff --git a/docs/slides/korean/azure/terraform-oss/images/tfaz.png b/docs/slides/korean/azure/terraform-community/images/tfaz.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/tfaz.png rename to docs/slides/korean/azure/terraform-community/images/tfaz.png diff --git a/docs/slides/korean/azure/terraform-oss/images/tfe-vcs.webp b/docs/slides/korean/azure/terraform-community/images/tfe-vcs.webp similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/tfe-vcs.webp rename to docs/slides/korean/azure/terraform-community/images/tfe-vcs.webp diff --git a/docs/slides/korean/azure/terraform-oss/images/tfelogo.png b/docs/slides/korean/azure/terraform-community/images/tfelogo.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/tfelogo.png rename to docs/slides/korean/azure/terraform-community/images/tfelogo.png diff --git a/docs/slides/korean/azure/terraform-oss/images/uat_branch.png b/docs/slides/korean/azure/terraform-community/images/uat_branch.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/uat_branch.png rename to docs/slides/korean/azure/terraform-community/images/uat_branch.png diff --git a/docs/slides/korean/azure/terraform-oss/images/upandtotheright.jpg b/docs/slides/korean/azure/terraform-community/images/upandtotheright.jpg similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/upandtotheright.jpg rename to docs/slides/korean/azure/terraform-community/images/upandtotheright.jpg diff --git a/docs/slides/korean/azure/terraform-oss/images/variables_answer.png b/docs/slides/korean/azure/terraform-community/images/variables_answer.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/variables_answer.png rename to docs/slides/korean/azure/terraform-community/images/variables_answer.png diff --git a/docs/slides/korean/azure/terraform-oss/images/vcs_success.png b/docs/slides/korean/azure/terraform-community/images/vcs_success.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/vcs_success.png rename to docs/slides/korean/azure/terraform-community/images/vcs_success.png diff --git a/docs/slides/korean/azure/terraform-oss/images/vsc_tour.png b/docs/slides/korean/azure/terraform-community/images/vsc_tour.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/vsc_tour.png rename to docs/slides/korean/azure/terraform-community/images/vsc_tour.png diff --git a/docs/slides/korean/azure/terraform-oss/images/welcome_arcade.png b/docs/slides/korean/azure/terraform-community/images/welcome_arcade.png similarity index 100% rename from docs/slides/korean/azure/terraform-oss/images/welcome_arcade.png rename to docs/slides/korean/azure/terraform-community/images/welcome_arcade.png diff --git a/docs/slides/korean/azure/terraform-community/index.html b/docs/slides/korean/azure/terraform-community/index.html new file mode 100644 index 00000000..3bd5f6eb --- /dev/null +++ b/docs/slides/korean/azure/terraform-community/index.html @@ -0,0 +1,79 @@ + + + + + + + Introduction to Terraform Community Edition on Azure + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/slides/korean/azure/terraform-oss/index.md b/docs/slides/korean/azure/terraform-community/index.md similarity index 97% rename from docs/slides/korean/azure/terraform-oss/index.md rename to docs/slides/korean/azure/terraform-community/index.md index e6d65c2f..9a105717 100644 --- a/docs/slides/korean/azure/terraform-oss/index.md +++ b/docs/slides/korean/azure/terraform-community/index.md @@ -73,7 +73,7 @@ name: Table-of-Contents 1. Azure에 VM 배포 및 구성
🔬 **Lab - Provisioning with Terraform**
1. 인프라 상태 관리 및 변경
-1. Terraform Cloud
+1. HCP Terraform
⚗️ **Lab - Terraform Remote State** @@ -449,7 +449,7 @@ class: title **Now that you have terraform installed and working with Azure, we can do a few dry runs before building real infrastructure. Follow along carefully, copying and pasting the commands on each slide into your shell as we go.** --- -name: what-is-terraform-oss +name: what-is-terraform-community class: img-left # Terraform 오픈 소스는 ![Terraform](images\Terraform_VerticalLogo_FullColor.png) @@ -466,7 +466,7 @@ Go로 작성되고, 단일 바이너리 파일로 배포. 크로스 플랫폼을 name: terraform-command-line class: col-2 # Terraform CLI -Terraform OSS는 CLI 기반 도구. +Terraform Community Edition는 CLI 기반 도구. Terraform 명령어는 직접 입력하거나 스크립트와 같은 도구를 이용한 자동화된 입력 시 사용 가능. @@ -1135,11 +1135,11 @@ class: title ## Terraform 클라우드 --- -name: terraform-cloud +name: hcp-terraform class: img-right # Terraform 클라우드 ##### Terraform 클라우드는 무료로 제공되는 SaaS 애플리케이션. 테라폼을 활용한 코드형 인프라(IaC)를 위한 최상의 Workflow를 제공. -![Terraform Cloud](https://hashicorp.github.io/field-workshops-assets/assets/logos/Terraform_Cloud_Logo_Color_RGB.png) +![HCP Terraform](https://hashicorp.github.io/field-workshops-assets/assets/logos/Terraform_Cloud_Logo_Color_RGB.png) * 원격 스테이트 파일 저장 및 관리 * Terraform runs 조회 및 실행/승인 등을 위한 Web UI @@ -1150,23 +1150,23 @@ class: img-right * 자동화를 위한 완벽한 HTTP API --- -name: tfcloud-vs-tfe +name: hcp-terraform-vs-tfe class: compact # Terraform 클라우드 ? Terraform 엔터프라이즈 ? -**[Terraform Cloud](https://app.terraform.io/signup)** : 원격 상태 관리, API 기반 배포, 정책 관리 등을 제공하는 SaaS 애플리케이션. 인프라 유지/보수 및 운영에 대한 부담없이 Terraform을 사용하고자 하는 경우 선호. 무료. +**[HCP Terraform](https://app.terraform.io/signup)** : 원격 상태 관리, API 기반 배포, 정책 관리 등을 제공하는 SaaS 애플리케이션. 인프라 유지/보수 및 운영에 대한 부담없이 Terraform을 사용하고자 하는 경우 선호. 무료. -**[Terraform Cloud for Business](https://www.hashicorp.com/contact-sales/terraform)** Terraform Cloud와 동일한 환경을 사용하지만 보다 다음과 같은 기능이 필요한 경우 사용 (유상): SSO, Audit 로그 및 Terraform Enterprise에서 제공되는 다양한 상용 기능 +**[HCP Terraform Plus Tier](https://www.hashicorp.com/contact-sales/terraform)** HCP Terraform와 동일한 환경을 사용하지만 보다 다음과 같은 기능이 필요한 경우 사용 (유상): SSO, Audit 로그 및 Terraform Enterprise에서 제공되는 다양한 상용 기능 **[Terraform Enterprise](https://www.hashicorp.com/go/terraform-enterprise)** 사용자가 원하는 환경에서 설치하여 사용. 동일한 애플리케이션. 단 인프라에 대한 관리 필요. 인프라를 직접 관리하고, 제한된 네트워크 환경에서 사용해야 하는 경우 적합. (유상) -대부분의 기능이 유사하고, 구독에 따라 기능이 추가. 실습의 경우, 무료 버전의 Terraform Cloud 사용. +대부분의 기능이 유사하고, 구독에 따라 기능이 추가. 실습의 경우, 무료 버전의 HCP Terraform 사용. --- -name: terraform-cloud-remote-state +name: hcp-terraform-remote-state # Terraform 원격 상태 관리 기본적으로 테라폼은 작업자의 노트복 또는 콘솔 상의 작업 디렉토리에 상태 파일을 저장. 개발 또는 테스트 환경에서는 사용 가능하지만, 운영/가동계 환경에서 스테이트 파일을 보호하고 안전하게 관리하기에는 어려움이 존재. -테라폼은 스테이트 파일을 원격에 저장하는 다양한 옵션을 제공. 그 중 무료 버전의 Terraform Cloud 계정을 사용해도 스테이트 파일을 무제한 저장하고 관리 가능. +테라폼은 스테이트 파일을 원격에 저장하는 다양한 옵션을 제공. 그 중 무료 버전의 HCP Terraform 계정을 사용해도 스테이트 파일을 무제한 저장하고 관리 가능. 내장된 [HashiCorp Vault](https://vaultproject.io)를 사용하여 모든 스테이트 파일은 **암호화**하여 저장. 스테이트 파일 분실이나 삭제에 대한 이슈가 사라짐. @@ -1180,7 +1180,7 @@ name: execution-mode --- name: lab-exercise-2c -# 👩‍💻 Lab Exercise: Terraform Cloud +# 👩‍💻 Lab Exercise: HCP Terraform 마지막 실습으로 Terraform 클라우드 상에 계정을 생성하고, 스테이트 파일을 마이그레이션. diff --git a/docs/slides/korean/azure/terraform-oss/index.html b/docs/slides/korean/azure/terraform-oss/index.html deleted file mode 100644 index fe7ea71e..00000000 --- a/docs/slides/korean/azure/terraform-oss/index.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - Introduction to Terraform OSS on Azure - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/slides/korean/index.md b/docs/slides/korean/index.md index ff62f209..3dd5d6bc 100644 --- a/docs/slides/korean/index.md +++ b/docs/slides/korean/index.md @@ -37,7 +37,7 @@ name: terraform-workshops-slides * 클라우드에 구성됩니다. * 각 클라우드에 대한 워크샵은 아래 유형으로 구성됩니다.: - 1. Terraform OSS + 1. Terraform Community Edition 1. Terraform Enterprise ??? @@ -61,9 +61,9 @@ name:workshop-slides #### 다음의 URL로 워크샵 슬라이드를 확인할 수 있습니다.: -* https://hashicorp.github.io/field-workshops-terraform/slides/korean/aws/terraform-oss/index.html -* https://hashicorp.github.io/field-workshops-terraform/slides/korean/azure/terraform-oss/index.html -* https://hashicorp.github.io/field-workshops-terraform/slides/korean/gcp/terraform-oss/index.html +* https://hashicorp.github.io/field-workshops-terraform/slides/korean/aws/terraform-community/index.html +* https://hashicorp.github.io/field-workshops-terraform/slides/korean/azure/terraform-community/index.html +* https://hashicorp.github.io/field-workshops-terraform/slides/korean/gcp/terraform-community/index.html ??? 워크샵 슬라이드는 Remark.js로 작성되었습니다. diff --git a/docs/slides/multi-cloud/terraform-cloud/README.md b/docs/slides/multi-cloud/hcp-terraform/README.md similarity index 88% rename from docs/slides/multi-cloud/terraform-cloud/README.md rename to docs/slides/multi-cloud/hcp-terraform/README.md index f9f5cabb..658e8397 100644 --- a/docs/slides/multi-cloud/terraform-cloud/README.md +++ b/docs/slides/multi-cloud/hcp-terraform/README.md @@ -3,9 +3,9 @@ - Why Change - What is Infrastructure as Code, What is Terraform - Why Terraform vs other tools -- Demo - OSS vs TFC - highlight differences +- Demo - Community Edition vs TFC - highlight differences 2. How Terraform Works -- OSS + Plugin Model +- Community Edition + Plugin Model - Providers / Documentation - State - Plan -> Apply, Destroy -> Apply diff --git a/docs/slides/multi-cloud/terraform-cloud/how-tf-works/index.html b/docs/slides/multi-cloud/hcp-terraform/how-tf-works/index.html similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/how-tf-works/index.html rename to docs/slides/multi-cloud/hcp-terraform/how-tf-works/index.html diff --git a/docs/slides/multi-cloud/terraform-cloud/how-tf-works/index.md b/docs/slides/multi-cloud/hcp-terraform/how-tf-works/index.md similarity index 99% rename from docs/slides/multi-cloud/terraform-cloud/how-tf-works/index.md rename to docs/slides/multi-cloud/hcp-terraform/how-tf-works/index.md index 792e25b7..ddf66987 100644 --- a/docs/slides/multi-cloud/terraform-cloud/how-tf-works/index.md +++ b/docs/slides/multi-cloud/hcp-terraform/how-tf-works/index.md @@ -307,7 +307,7 @@ name: what-is-remote-storage-2 - With remote state, Terraform writes the state data to a remote data store, which can then be shared between all members of a team -- Terraform natively supports storing state in Terraform Cloud. +- Terraform natively supports storing state in HCP Terraform. .center[ ![:scale 60%](../images/remote-state.png) diff --git a/docs/slides/multi-cloud/terraform-cloud/images/COM-static.png b/docs/slides/multi-cloud/hcp-terraform/images/COM-static.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/COM-static.png rename to docs/slides/multi-cloud/hcp-terraform/images/COM-static.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/app-infra.png b/docs/slides/multi-cloud/hcp-terraform/images/app-infra.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/app-infra.png rename to docs/slides/multi-cloud/hcp-terraform/images/app-infra.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/capability-complexity.png b/docs/slides/multi-cloud/hcp-terraform/images/capability-complexity.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/capability-complexity.png rename to docs/slides/multi-cloud/hcp-terraform/images/capability-complexity.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/commitstrip_devops.jpg b/docs/slides/multi-cloud/hcp-terraform/images/commitstrip_devops.jpg similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/commitstrip_devops.jpg rename to docs/slides/multi-cloud/hcp-terraform/images/commitstrip_devops.jpg diff --git a/docs/slides/multi-cloud/terraform-cloud/images/cpa.jpg b/docs/slides/multi-cloud/hcp-terraform/images/cpa.jpg similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/cpa.jpg rename to docs/slides/multi-cloud/hcp-terraform/images/cpa.jpg diff --git a/docs/slides/multi-cloud/terraform-cloud/images/distributed_vcs.png b/docs/slides/multi-cloud/hcp-terraform/images/distributed_vcs.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/distributed_vcs.png rename to docs/slides/multi-cloud/hcp-terraform/images/distributed_vcs.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/gcp_network_module.png b/docs/slides/multi-cloud/hcp-terraform/images/gcp_network_module.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/gcp_network_module.png rename to docs/slides/multi-cloud/hcp-terraform/images/gcp_network_module.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/git_commit_log.png b/docs/slides/multi-cloud/hcp-terraform/images/git_commit_log.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/git_commit_log.png rename to docs/slides/multi-cloud/hcp-terraform/images/git_commit_log.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/git_log.png b/docs/slides/multi-cloud/hcp-terraform/images/git_log.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/git_log.png rename to docs/slides/multi-cloud/hcp-terraform/images/git_log.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/git_noobs.png b/docs/slides/multi-cloud/hcp-terraform/images/git_noobs.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/git_noobs.png rename to docs/slides/multi-cloud/hcp-terraform/images/git_noobs.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/git_workflow_tests.png b/docs/slides/multi-cloud/hcp-terraform/images/git_workflow_tests.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/git_workflow_tests.png rename to docs/slides/multi-cloud/hcp-terraform/images/git_workflow_tests.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/gitflow.png b/docs/slides/multi-cloud/hcp-terraform/images/gitflow.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/gitflow.png rename to docs/slides/multi-cloud/hcp-terraform/images/gitflow.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/graph-resources-dependencies.png b/docs/slides/multi-cloud/hcp-terraform/images/graph-resources-dependencies.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/graph-resources-dependencies.png rename to docs/slides/multi-cloud/hcp-terraform/images/graph-resources-dependencies.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/graph-resources-root.png b/docs/slides/multi-cloud/hcp-terraform/images/graph-resources-root.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/graph-resources-root.png rename to docs/slides/multi-cloud/hcp-terraform/images/graph-resources-root.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/graph-resources.png b/docs/slides/multi-cloud/hcp-terraform/images/graph-resources.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/graph-resources.png rename to docs/slides/multi-cloud/hcp-terraform/images/graph-resources.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/graph-walking.png b/docs/slides/multi-cloud/hcp-terraform/images/graph-walking.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/graph-walking.png rename to docs/slides/multi-cloud/hcp-terraform/images/graph-walking.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/iac.png b/docs/slides/multi-cloud/hcp-terraform/images/iac.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/iac.png rename to docs/slides/multi-cloud/hcp-terraform/images/iac.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/infra-db-code.png b/docs/slides/multi-cloud/hcp-terraform/images/infra-db-code.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/infra-db-code.png rename to docs/slides/multi-cloud/hcp-terraform/images/infra-db-code.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/infra-db-terraform-2.png b/docs/slides/multi-cloud/hcp-terraform/images/infra-db-terraform-2.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/infra-db-terraform-2.png rename to docs/slides/multi-cloud/hcp-terraform/images/infra-db-terraform-2.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/infra-db-terraform.png b/docs/slides/multi-cloud/hcp-terraform/images/infra-db-terraform.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/infra-db-terraform.png rename to docs/slides/multi-cloud/hcp-terraform/images/infra-db-terraform.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/infra-entity-relationship-diagram.png b/docs/slides/multi-cloud/hcp-terraform/images/infra-entity-relationship-diagram.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/infra-entity-relationship-diagram.png rename to docs/slides/multi-cloud/hcp-terraform/images/infra-entity-relationship-diagram.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/k8svaultauth.png b/docs/slides/multi-cloud/hcp-terraform/images/k8svaultauth.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/k8svaultauth.png rename to docs/slides/multi-cloud/hcp-terraform/images/k8svaultauth.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/local-workflow-tf.png b/docs/slides/multi-cloud/hcp-terraform/images/local-workflow-tf.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/local-workflow-tf.png rename to docs/slides/multi-cloud/hcp-terraform/images/local-workflow-tf.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/plants-aas.png b/docs/slides/multi-cloud/hcp-terraform/images/plants-aas.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/plants-aas.png rename to docs/slides/multi-cloud/hcp-terraform/images/plants-aas.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/plants-all.png b/docs/slides/multi-cloud/hcp-terraform/images/plants-all.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/plants-all.png rename to docs/slides/multi-cloud/hcp-terraform/images/plants-all.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/plants-basic-automation.png b/docs/slides/multi-cloud/hcp-terraform/images/plants-basic-automation.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/plants-basic-automation.png rename to docs/slides/multi-cloud/hcp-terraform/images/plants-basic-automation.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/plants-datacenter-as-comp.png b/docs/slides/multi-cloud/hcp-terraform/images/plants-datacenter-as-comp.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/plants-datacenter-as-comp.png rename to docs/slides/multi-cloud/hcp-terraform/images/plants-datacenter-as-comp.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/plants-machine-virt.png b/docs/slides/multi-cloud/hcp-terraform/images/plants-machine-virt.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/plants-machine-virt.png rename to docs/slides/multi-cloud/hcp-terraform/images/plants-machine-virt.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/plants-manual-everything.png b/docs/slides/multi-cloud/hcp-terraform/images/plants-manual-everything.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/plants-manual-everything.png rename to docs/slides/multi-cloud/hcp-terraform/images/plants-manual-everything.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/plants-maturity-arrow.png b/docs/slides/multi-cloud/hcp-terraform/images/plants-maturity-arrow.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/plants-maturity-arrow.png rename to docs/slides/multi-cloud/hcp-terraform/images/plants-maturity-arrow.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/pmr.png b/docs/slides/multi-cloud/hcp-terraform/images/pmr.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/pmr.png rename to docs/slides/multi-cloud/hcp-terraform/images/pmr.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/publicmoduleregistry.png b/docs/slides/multi-cloud/hcp-terraform/images/publicmoduleregistry.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/publicmoduleregistry.png rename to docs/slides/multi-cloud/hcp-terraform/images/publicmoduleregistry.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/remote-state.png b/docs/slides/multi-cloud/hcp-terraform/images/remote-state.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/remote-state.png rename to docs/slides/multi-cloud/hcp-terraform/images/remote-state.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/statefile.png b/docs/slides/multi-cloud/hcp-terraform/images/statefile.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/statefile.png rename to docs/slides/multi-cloud/hcp-terraform/images/statefile.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/team-workflow-tf.png b/docs/slides/multi-cloud/hcp-terraform/images/team-workflow-tf.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/team-workflow-tf.png rename to docs/slides/multi-cloud/hcp-terraform/images/team-workflow-tf.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/terraform-help.png b/docs/slides/multi-cloud/hcp-terraform/images/terraform-help.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/terraform-help.png rename to docs/slides/multi-cloud/hcp-terraform/images/terraform-help.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/terraform-iac.png b/docs/slides/multi-cloud/hcp-terraform/images/terraform-iac.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/terraform-iac.png rename to docs/slides/multi-cloud/hcp-terraform/images/terraform-iac.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/tf-internals.png b/docs/slides/multi-cloud/hcp-terraform/images/tf-internals.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/tf-internals.png rename to docs/slides/multi-cloud/hcp-terraform/images/tf-internals.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/tf-provider-docs.png b/docs/slides/multi-cloud/hcp-terraform/images/tf-provider-docs.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/tf-provider-docs.png rename to docs/slides/multi-cloud/hcp-terraform/images/tf-provider-docs.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/tf-registry.png b/docs/slides/multi-cloud/hcp-terraform/images/tf-registry.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/tf-registry.png rename to docs/slides/multi-cloud/hcp-terraform/images/tf-registry.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/tf-state-resolve.pdf b/docs/slides/multi-cloud/hcp-terraform/images/tf-state-resolve.pdf similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/tf-state-resolve.pdf rename to docs/slides/multi-cloud/hcp-terraform/images/tf-state-resolve.pdf diff --git a/docs/slides/multi-cloud/terraform-cloud/images/tf-state-resolve.png b/docs/slides/multi-cloud/hcp-terraform/images/tf-state-resolve.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/tf-state-resolve.png rename to docs/slides/multi-cloud/hcp-terraform/images/tf-state-resolve.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/tfc-gui.png b/docs/slides/multi-cloud/hcp-terraform/images/tfc-gui.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/tfc-gui.png rename to docs/slides/multi-cloud/hcp-terraform/images/tfc-gui.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/tfe-workflow-enterprise.png b/docs/slides/multi-cloud/hcp-terraform/images/tfe-workflow-enterprise.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/tfe-workflow-enterprise.png rename to docs/slides/multi-cloud/hcp-terraform/images/tfe-workflow-enterprise.png diff --git a/docs/slides/multi-cloud/terraform-cloud/images/vcs-workflow.png b/docs/slides/multi-cloud/hcp-terraform/images/vcs-workflow.png similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/images/vcs-workflow.png rename to docs/slides/multi-cloud/hcp-terraform/images/vcs-workflow.png diff --git a/docs/slides/multi-cloud/terraform-cloud/index.html b/docs/slides/multi-cloud/hcp-terraform/index.html similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/index.html rename to docs/slides/multi-cloud/hcp-terraform/index.html diff --git a/docs/slides/multi-cloud/terraform-cloud/tf-basics/index.html b/docs/slides/multi-cloud/hcp-terraform/tf-basics/index.html similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/tf-basics/index.html rename to docs/slides/multi-cloud/hcp-terraform/tf-basics/index.html diff --git a/docs/slides/multi-cloud/terraform-cloud/tf-basics/index.md b/docs/slides/multi-cloud/hcp-terraform/tf-basics/index.md similarity index 95% rename from docs/slides/multi-cloud/terraform-cloud/tf-basics/index.md rename to docs/slides/multi-cloud/hcp-terraform/tf-basics/index.md index fdac3bc6..ace0f353 100644 --- a/docs/slides/multi-cloud/terraform-cloud/tf-basics/index.md +++ b/docs/slides/multi-cloud/hcp-terraform/tf-basics/index.md @@ -3,7 +3,7 @@ class: title, smokescreen, shelf background-image: url(https://hashicorp.github.io/field-workshops-assets/assets/bkgs/HashiCorp-Title-bkg.jpeg) count: false -# Terraform Cloud Technical Enablement +# HCP Terraform Technical Enablement ## Terraform Foundations - 3 ![:scale 10%](https://hashicorp.github.io/field-workshops-assets/assets/logos/logo_terraform.png) @@ -394,12 +394,12 @@ name: lab-three-instructions In the third lab, we are going to get hands on with Terraform state. We covered how Terraform keeps track of resources that it has created and why we need to protect and secure our state files in the second module. In this module we will: - Review the state files created locally in our instruqt workspaces. -- Sign up and log in for Terraform Cloud -- Run ```terraform login``` to authenticate our Terraform CLI to Terraform Cloud -- Update the provided remote_backend.tf file with your Terraform Cloud Organization name -- Run ```terraform init``` to migrate our local state file to Terraform Cloud -- Review the state file in the Terraform Cloud web interface -- Modify the Terraform Cloud workspace setting to select **Local** execution +- Sign up and log in for HCP Terraform +- Run ```terraform login``` to authenticate our Terraform CLI to HCP Terraform +- Update the provided remote_backend.tf file with your HCP Terraform Organization name +- Run ```terraform init``` to migrate our local state file to HCP Terraform +- Review the state file in the HCP Terraform web interface +- Modify the HCP Terraform workspace setting to select **Local** execution --- name: lab-three-instructions-continued @@ -408,7 +408,7 @@ name: lab-three-instructions-continued - Modify the prefix variable to change tags - Run ```terraform plan``` and ```terraform apply``` -- Review the new state file version in Terraform cloud -- Change execution mode to **remote** to have the plan and apply run in Terraform Cloud -- Transfer AWS credentials and other required varaibles to Terraform Cloud -- Run ```terraform plan``` and ```terraform apply``` to perform the run from Terraform Cloud \ No newline at end of file +- Review the new state file version in HCP Terraform +- Change execution mode to **remote** to have the plan and apply run in HCP Terraform +- Transfer AWS credentials and other required varaibles to HCP Terraform +- Run ```terraform plan``` and ```terraform apply``` to perform the run from HCP Terraform \ No newline at end of file diff --git a/docs/slides/multi-cloud/terraform-cloud/tf-intermediate/index.html b/docs/slides/multi-cloud/hcp-terraform/tf-intermediate/index.html similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/tf-intermediate/index.html rename to docs/slides/multi-cloud/hcp-terraform/tf-intermediate/index.html diff --git a/docs/slides/multi-cloud/terraform-cloud/tf-intermediate/index.md b/docs/slides/multi-cloud/hcp-terraform/tf-intermediate/index.md similarity index 96% rename from docs/slides/multi-cloud/terraform-cloud/tf-intermediate/index.md rename to docs/slides/multi-cloud/hcp-terraform/tf-intermediate/index.md index 89bb12d5..929d42b1 100644 --- a/docs/slides/multi-cloud/terraform-cloud/tf-intermediate/index.md +++ b/docs/slides/multi-cloud/hcp-terraform/tf-intermediate/index.md @@ -110,10 +110,10 @@ The Terraform Registry contains over 9000 examples of modules for a variety of p --- name: private-module-registry class: img-right -# Private Module Registry +# Terraform Private Registry ![](../images/pmr.png) -Terraform Cloud and Enterprise include a Private Module Registry where you can store, version, and distribute modules to your organizations and teams. +HCP Terraform and Enterprise include a Terraform Private Registry where you can store, version, and distribute modules to your organizations and teams. ??? **This is just like the public module registry but it runs inside your own Terraform Organization where only your users can access it. This way you can share private or confidential code, or even take the public modules and fork them for your own use.** @@ -226,9 +226,9 @@ In lab 4 we are going to look at some more advanced features of Terraform includ - Review the networking components in main.tf in the **hashicat-aws** project - Review main.tf in the **hashicat-modular-aws** project -- Go to Terraform Cloud and review the new workspaces for the hashicat application +- Go to HCP Terraform and review the new workspaces for the hashicat application ??? First take a look at the hashicat-aws project. This is the full application that we will use in this lab. Review the networking components that are required for this web application - VPC, subnet, security group, routing table, external ip, etc. Even though these components aren't complex, we want to be able to reuse them for other applications so we are going to create a networking module. -Review the **main.tf in the hashicat-module-aws** project. Both of these projects have been added to your Terraform Cloud organization. \ No newline at end of file +Review the **main.tf in the hashicat-module-aws** project. Both of these projects have been added to your HCP Terraform organization. \ No newline at end of file diff --git a/docs/slides/multi-cloud/terraform-cloud/tf-intro/index.html b/docs/slides/multi-cloud/hcp-terraform/tf-intro/index.html similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/tf-intro/index.html rename to docs/slides/multi-cloud/hcp-terraform/tf-intro/index.html diff --git a/docs/slides/multi-cloud/terraform-cloud/tf-intro/index.md b/docs/slides/multi-cloud/hcp-terraform/tf-intro/index.md similarity index 91% rename from docs/slides/multi-cloud/terraform-cloud/tf-intro/index.md rename to docs/slides/multi-cloud/hcp-terraform/tf-intro/index.md index 516d4747..4f281635 100644 --- a/docs/slides/multi-cloud/terraform-cloud/tf-intro/index.md +++ b/docs/slides/multi-cloud/hcp-terraform/tf-intro/index.md @@ -55,7 +55,7 @@ class: title, smokescreen, shelf background-image: url(https://hashicorp.github.io/field-workshops-assets/assets/bkgs/HashiCorp-Title-bkg.jpeg) count: false -# Terraform Cloud Technical Enablement +# HCP Terraform Technical Enablement ## Course Agenda ![:scale 10%](https://hashicorp.github.io/field-workshops-assets/assets/logos/logo_terraform.png) @@ -73,7 +73,7 @@ class: compact * Why Terraform vs. other tools? * Demo - **M2** How Terraform Works - * OSS + Plugin Model + * Community Edition + Plugin Model * Providers * State & Remote backends * Terraform Workflow @@ -104,7 +104,7 @@ class: compact * Lab - **M6** Version Control * What is Version Control? - * Terraform Cloud VCS Workflow + * HCP Terraform VCS Workflow * Collaborating with VCS * Lab @@ -325,22 +325,22 @@ class: compact * Works on all major cloud providers, on premise infrastructure (VMware, Cisco, Palo Alto, F5, etc.), SaaS applications (DataDog, Okta, etc.), and 300+ more. --- -name: terraform-oss +name: terraform-community class: compact -# Terraform OSS -- Terraform is an open source infrastructure as code provisioning tool. +# Terraform Community Edition +- Terraform is an Community Edition infrastructure as code provisioning tool.
- It is a single cross platform binary written in Go. It can run on Linux, Windows, or OS X.
-- Installing Terraform is easy. You simply download a zip file, unzip it, and run it. Terraform OSS works with files in a directory. +- Installing Terraform is easy. You simply download a zip file, unzip it, and run it. Terraform Community Edition works with files in a directory.

[Download Terraform](https://www.terraform.io/downloads.html) --- -name: terraform-cloud +name: hcp-terraform class: compact -# Terraform Cloud -Terraform Cloud is an application that helps teams use Terraform together. Terraform Cloud: +# HCP Terraform +HCP Terraform is an application that helps teams use Terraform together. HCP Terraform: - Manages Terraform runs in a consistent and reliable environment - Includes easy access to shared state and secret data @@ -356,7 +356,7 @@ name: terraform-ent class: compact # Terraform Enterprise -Terraform Enterprise is a self-hosted distribution of Terraform Cloud. It offers enterprises a private instance of the Terraform Cloud application, with no resource limits. +Terraform Enterprise is a self-hosted distribution of HCP Terraform. It offers enterprises a private instance of the HCP Terraform application, with no resource limits. .center[ ![:scale 50%](../images/tfc-gui.png) @@ -388,18 +388,18 @@ class: img-right Version control systems are applications that allow users to store, track, test, and collaborate on changes to their infrastructure and applications. -Terraform Cloud integrates with many common Version Control Systems. +HCP Terraform integrates with many common Version Control Systems. ??? --- -name: tfc-infra-as-code-workflow +name: hcp-terraform-infra-as-code-workflow class: img-left -# VCS Integration with Terraform Cloud +# VCS Integration with HCP Terraform ![:scale 70%](../images/git_noobs.png) -Terraform Cloud can directly integrate with source code repos in GitHub, Gitlab, Azure DevOps, and Bitbucket. This allows you to build simple DevOps workflows with code reviews, testing and approvals. +HCP Terraform can directly integrate with source code repos in GitHub, Gitlab, Azure DevOps, and Bitbucket. This allows you to build simple DevOps workflows with code reviews, testing and approvals. https://xkcd.com/1597/ @@ -417,7 +417,7 @@ Infrastructure changes are no longer created in isolated silos. Each team can contribute or consume Terraform code according to their needs. ??? -**When you store all your terraform code in git repos, you unlock some extra features like user collaboration. Terraform Cloud helps bring these teams closer in a more productive way.** +**When you store all your terraform code in git repos, you unlock some extra features like user collaboration. HCP Terraform helps bring these teams closer in a more productive way.** --- name: vcs-driven-workflow diff --git a/docs/slides/multi-cloud/terraform-cloud/version-control/index.html b/docs/slides/multi-cloud/hcp-terraform/version-control/index.html similarity index 100% rename from docs/slides/multi-cloud/terraform-cloud/version-control/index.html rename to docs/slides/multi-cloud/hcp-terraform/version-control/index.html diff --git a/docs/slides/multi-cloud/terraform-cloud/version-control/index.md b/docs/slides/multi-cloud/hcp-terraform/version-control/index.md similarity index 76% rename from docs/slides/multi-cloud/terraform-cloud/version-control/index.md rename to docs/slides/multi-cloud/hcp-terraform/version-control/index.md index f9d3d2ee..a35ea360 100644 --- a/docs/slides/multi-cloud/terraform-cloud/version-control/index.md +++ b/docs/slides/multi-cloud/hcp-terraform/version-control/index.md @@ -3,7 +3,7 @@ class: title, smokescreen, shelf background-image: url(https://hashicorp.github.io/field-workshops-assets/assets/bkgs/HashiCorp-Title-bkg.jpeg) count: false -# Terraform Cloud Technical Enablement +# HCP Terraform Technical Enablement ## Terraform Foundations - 5 ![:scale 10%](https://hashicorp.github.io/field-workshops-assets/assets/logos/logo_terraform.png) @@ -78,10 +78,10 @@ Simply put a version control solution assists in the management, versioning and name: # Why Does TFC/E use a VCS -Terraform Cloud is more powerful when you integrate it with your version control system (VCS) provider. Although you can use many of Terraform Cloud's features without one, a VCS connection provides additional features and improved workflows. +HCP Terraform is more powerful when you integrate it with your version control system (VCS) provider. Although you can use many of HCP Terraform's features without one, a VCS connection provides additional features and improved workflows. -- When workspaces are linked to a VCS repository, Terraform Cloud can automatically initiate Terraform runs when changes are committed to the specified branch. -- Terraform Cloud makes code review easier by automatically predicting how pull requests will affect infrastructure. +- When workspaces are linked to a VCS repository, HCP Terraform can automatically initiate Terraform runs when changes are committed to the specified branch. +- HCP Terraform makes code review easier by automatically predicting how pull requests will affect infrastructure. - Publishing new versions of a private Terraform module is as easy as pushing a tag to the module's repository. --- @@ -96,18 +96,18 @@ name: name: vsc-access-1 # How TFC/E uses VCS Access -Most workspaces in Terraform Cloud are associated with a VCS repository, which provides Terraform configurations for that workspace. +Most workspaces in HCP Terraform are associated with a VCS repository, which provides Terraform configurations for that workspace. -To find out which repos are available, access their contents, and create webhooks, Terraform Cloud needs access to your VCS provider. +To find out which repos are available, access their contents, and create webhooks, HCP Terraform needs access to your VCS provider. --- name: vsc-access-2 class: compact # How TFC/E uses VCS Access Continued... -Although Terraform Cloud's API lets you create workspaces and push configurations to them without a VCS connection, the primary workflow expects every workspace to be backed by a repository. +Although HCP Terraform's API lets you create workspaces and push configurations to them without a VCS connection, the primary workflow expects every workspace to be backed by a repository. -To use configurations from VCS, Terraform Cloud needs to do several things: +To use configurations from VCS, HCP Terraform needs to do several things: - Access a list of repositories, to let you search for repos when creating new workspaces. - Register webhooks with your VCS provider, to get notified of new commits to a chosen branch. @@ -118,13 +118,13 @@ name: tfe-webhooks class: compact # TFC/E Webhooks on VCS -Terraform Cloud uses webhooks to monitor new commits and pull requests. +HCP Terraform uses webhooks to monitor new commits and pull requests. -- When someone adds new commits to a branch, any Terraform Cloud workspaces based on that branch will begin a Terraform run. +- When someone adds new commits to a branch, any HCP Terraform workspaces based on that branch will begin a Terraform run. - Usually a user must inspect the plan output and approve an apply, but you can also enable automatic applies on a per-workspace basis. You can prevent automatic runs by locking a workspace. -- When someone submits a pull request/merge request to a branch from another branch in the same repository, Terraform Cloud performs a speculative plan with the contents of the request and links to the results on the PR's page. +- When someone submits a pull request/merge request to a branch from another branch in the same repository, HCP Terraform performs a speculative plan with the contents of the request and links to the results on the PR's page. * This helps you avoid merging PR's that cause apply failures. @@ -134,7 +134,7 @@ name: solo-collaboration-with-tfe # Enabling the Collaboration Workflow ## Individuals -When Users start with Terraform Open Source they follow a local development cycle that includes the following steps; +When Users start with Terraform Community Edition they follow a local development cycle that includes the following steps; - Write initial Terraform Code - `terraform plan` @@ -173,7 +173,7 @@ name: team-collaboration-with-tfe-diagram name: enterprise-collaboration-with-tfe # Enabling the Enterprise Collaboration Workflow -Large scale Enterprises have unique needs and requirements when it comes to managing Infrastructure changes and this is where Terraform Cloud excels. +Large scale Enterprises have unique needs and requirements when it comes to managing Infrastructure changes and this is where HCP Terraform excels. --- @@ -211,12 +211,12 @@ count: false name: lab-three-instructions # Lab 5 - Instructions -Lab 5 introduces a Terraform workflow that is based around Version Control. For this lab we have created a local GitLab CE version control server. We have also connected the server to your Terraform Cloud account. +Lab 5 introduces a Terraform workflow that is based around Version Control. For this lab we have created a local GitLab CE version control server. We have also connected the server to your HCP Terraform account. - In the terminal tab, click on the url to log into the local GitLab server - Review the projects that are staged in the VCS - Follow the lab instructions to get familar with the GitLab interface -- Go to Terraform Cloud and click on the new organization that has been created - Terraform-Foundations- +- Go to HCP Terraform and click on the new organization that has been created - Terraform-Foundations- - Review the workspaces in the organization - Return to GitLab and select the HashiCat AWS project development branch @@ -226,7 +226,7 @@ name: lab-three-instructions-cont - Modify the welcome message in the deploy_app.sh script - Commit the changes into version control -- Review the Development workspace in Terraform Cloud +- Review the Development workspace in HCP Terraform - Review application welcome message changes - Create merge request to promote changes to staging branch diff --git a/docs/slides/multi-cloud/index.md b/docs/slides/multi-cloud/index.md index f86da9ba..f13c5bd4 100644 --- a/docs/slides/multi-cloud/index.md +++ b/docs/slides/multi-cloud/index.md @@ -26,7 +26,7 @@ name: terraform-workshops-slides # Terraform Multi-Cloud Workshop Slides ### This directory contains slides for Terraform workshops intended for use with multiple clouds. ### Workshops for each cloud are organized by type: - 1. Terraform OSS + 1. Terraform Community Edition 1. Terraform Enterprise ??? diff --git a/docs/slides/multi-cloud/terraform-oss/index.html b/docs/slides/multi-cloud/terraform-community/index.html similarity index 97% rename from docs/slides/multi-cloud/terraform-oss/index.html rename to docs/slides/multi-cloud/terraform-community/index.html index cee7f154..dadf9f9a 100644 --- a/docs/slides/multi-cloud/terraform-oss/index.html +++ b/docs/slides/multi-cloud/terraform-community/index.html @@ -7,7 +7,7 @@ - Terraform OSS Workshop + Terraform Community Edition Workshop -The first step to begin work with your deployment tasks is to set up your Terraform Cloud resources. +The first step to begin work with your deployment tasks is to set up your HCP Terraform resources. -1- Terraform Cloud Organization +1- HCP Terraform Organization === -- Sign up for a free Terraform Cloud account at https://app.terraform.io/signup/account. +- Sign up for a free HCP Terraform account at https://app.terraform.io/signup/account. - If you already have an account, sign in with your existing credentials. -2- Terraform Cloud Trial Plan +2- HCP Terraform Trial Plan === -- Click on [THIS](https://app.terraform.io/app/organizations/new?trial=workshop2023) link to create a Terraform Cloud Organization for this workshop. +- Click on [THIS](https://app.terraform.io/app/organizations/new?trial=workshop2023) link to create a HCP Terraform Organization for this workshop. - Use the Create organization & start 14 day trial button to enable "Plus Tier" features in your organization. Please see the image below. @@ -150,15 +151,15 @@ The first step to begin work with your deployment tasks is to set up your Terraf - If you have an existing account and already used a trial, please create a different organization and unlock the 14-day "Plus Tier" plan features. -3- Terraform Cloud Token +3- HCP Terraform Token === -- Use this [link](https://app.terraform.io/app/settings/tokens?source=terraform-login) to visit the User Settings-Tokens page in your Terraform Cloud account. +- Use this [link](https://app.terraform.io/app/settings/tokens?source=terraform-login) to visit the User Settings-Tokens page in your HCP Terraform account. - Use the Create API token button to generate a new **personal user token** to use in this workshop. -- Make sure to save your Terraform Cloud token. It will not be displayed again. +- Make sure to save your HCP Terraform token. It will not be displayed again. -- Move to the Terminal tab and store your Terraform Cloud Token locally with the following command: +- Move to the Terminal tab and store your HCP Terraform Token locally with the following command: ```bash terraform login @@ -166,33 +167,33 @@ terraform login ``` -4- Terraform Cloud Workspace +4- HCP Terraform Workspace === -Use local Terraform utility deployment code to create and configure a new Terraform Cloud Workspace. +Use local Terraform utility deployment code to create and configure a new HCP Terraform Workspace. -- Use the Code Editor tab and expand the terraform-cloud folder and open the file terraform.tfvars +- Use the Code Editor tab and expand the hcp-terraform folder and open the file terraform.tfvars -- Replace the `YOUR_ORGANIZATION` placeholder with your Terraform Cloud organization name. +- Replace the `YOUR_ORGANIZATION` placeholder with your HCP Terraform organization name. -- We default the name of your Terraform Cloud workspace to `hashicat-aws`. You can choose a different name at this time. +- We default the name of your HCP Terraform workspace to `hashicat-aws`. You can choose a different name at this time. --- - Move to the Terminal tab and execute the following commands: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform init # The following creates a workspace in -# Terraform Cloud called "hashicat-aws" +# HCP Terraform called "hashicat-aws" # ... unless the default is changed. terraform apply -auto-approve ``` -- On the Terraform Cloud portal, navigate to Projects & workspaces-hashicat-aws-Settings-General +- On the HCP Terraform portal, navigate to Projects & workspaces-hashicat-aws-Settings-General - Note that your new workspace is configured for Local execution. diff --git a/instruqt-tracks/terraform-cloud-aws-v2/02-terraform-cloud-setup/check-workstation b/instruqt-tracks/hcp-terraform-aws-v2/02-hcp-terraform-setup/check-workstation similarity index 71% rename from instruqt-tracks/terraform-cloud-aws-v2/02-terraform-cloud-setup/check-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/02-hcp-terraform-setup/check-workstation index b61a2eac..26961913 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/02-terraform-cloud-setup/check-workstation +++ b/instruqt-tracks/hcp-terraform-aws-v2/02-hcp-terraform-setup/check-workstation @@ -2,7 +2,7 @@ # Copyright (c) HashiCorp, Inc. set -euxvo pipefail -# Get TFC token and organization +# Get HCP Terraform token and organization # these jq commands may fail, that's okay, we account for # that later, so temporarily disable set -e set +e @@ -20,12 +20,12 @@ if [ -f /tmp/skip-check ]; then fi # Save the Terraform Org and Workspace name as env variables -export ORG=$(grep organization /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) -export WORKSPACE=$(grep workspace /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) +export ORG=$(grep organization /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) +export WORKSPACE=$(grep workspace /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) # Do we have a valid token if [ -z "${TFC_TOKEN}" ]; then - fail-message "Unable to find Terraform Cloud Token, please double-check the \"3- Terraform Cloud Token\" steps" + fail-message "Unable to find HCP Terraform Token, please double-check the \"3- HCP Terraform Token\" steps" exit 1 fi @@ -45,12 +45,12 @@ if [ "${STATUS}" != "200" ]; then cat /tmp/.out.json echo "End of output" fi - fail-message "Terraform Cloud Token is not valid, please double-check the \"3- Terraform Cloud Token\" steps" + fail-message "HCP Terraform Token is not valid, please double-check the \"3- HCP Terraform Token\" steps" exit 1 fi rm -f /tmp/.out.json -echo "We have a valid TFC token" +echo "We have a valid HCP Terraform token" # Is it a trial organization STATUS=$(curl \ @@ -69,20 +69,20 @@ if [ "${STATUS}" != "200" ]; then cat /tmp/.out.json echo "End of output" fi - fail-message "Unable to get TFC Organization Subscriptions, please go back to the \"2- Terraform Cloud Trial Plan\" steps" + fail-message "Unable to get HCP Terraform Organization Subscriptions, please go back to the \"2- HCP Terraform Trial Plan\" steps" exit 1 fi TRIAL=$(jq -r '.included[].attributes."identifier"' /tmp/.out.json 2>/dev/null) if [ -z "${TRIAL}" ]; then echo ".included[].attributes.\"identifier\" was empty" - fail-message "Unable to determine TFC Trial Status, please go back to the \"2- Terraform Cloud Trial Plan\" steps" + fail-message "Unable to determine HCP Terraform Trial Status, please go back to the \"2- HCP Terraform Trial Plan\" steps" exit 1 fi if [ "${TRIAL}" != "trial" ]; then echo ".included[].attributes.\"identifier\" was '${TRIAL}' not 'trial'" - fail-message "Your TFC Organization is not a trial one, please go back to the \"2- Terraform Cloud Trial Plan\" step" + fail-message "Your HCP Terraform Organization is not a trial one, please go back to the \"2- HCP Terraform Trial Plan\" step" exit 1 fi diff --git a/instruqt-tracks/terraform-cloud-aws-v2/02-terraform-cloud-setup/cleanup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/02-hcp-terraform-setup/cleanup-workstation similarity index 81% rename from instruqt-tracks/terraform-cloud-aws-v2/02-terraform-cloud-setup/cleanup-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/02-hcp-terraform-setup/cleanup-workstation index 6ecba1ce..208ae609 100644 --- a/instruqt-tracks/terraform-cloud-aws-v2/02-terraform-cloud-setup/cleanup-workstation +++ b/instruqt-tracks/hcp-terraform-aws-v2/02-hcp-terraform-setup/cleanup-workstation @@ -3,8 +3,8 @@ set -euxvo pipefail # Save the Terraform Org and Workspace name as env variables -ORG=$(grep organization /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) -WORKSPACE=$(grep workspace /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) +ORG=$(grep organization /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) +WORKSPACE=$(grep workspace /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) # These are considered runtime variables, which allow you to use dynamic content in the challenge # assignments and lifecycle scripts. @@ -19,9 +19,9 @@ cd /root/hashicat-aws sed -i "s/YOUR_ORGANIZATION/$ORG/g" remote_backend.tf sed -i "s/YOUR_WORKSPACE/$WORKSPACE/g" remote_backend.tf -cp /root/terraform-cloud/terraform.tfvars.example /root/terraform-cloud/terraform.tfvars +cp /root/hcp-terraform/terraform.tfvars.example /root/hcp-terraform/terraform.tfvars -cd /root/terraform-cloud +cd /root/hcp-terraform sed -i "s/YOUR_ORGANIZATION/$ORG/g" terraform.tfvars sed -i "s/YOUR_WORKSPACE/$WORKSPACE/g" terraform.tfvars diff --git a/instruqt-tracks/terraform-cloud-aws-v2/02-terraform-cloud-setup/setup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/02-hcp-terraform-setup/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/02-terraform-cloud-setup/setup-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/02-hcp-terraform-setup/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/02-terraform-cloud-setup/solve-workstation b/instruqt-tracks/hcp-terraform-aws-v2/02-hcp-terraform-setup/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/02-terraform-cloud-setup/solve-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/02-hcp-terraform-setup/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/03-centralize-deployments/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/03-centralize-deployments/assignment.md similarity index 83% rename from instruqt-tracks/terraform-cloud-aws-v2/03-centralize-deployments/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/03-centralize-deployments/assignment.md index cee320ba..b6d1acab 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/03-centralize-deployments/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/03-centralize-deployments/assignment.md @@ -1,9 +1,10 @@ --- slug: centralize-deployments +id: xfkusytsibw7 type: challenge title: Safekeeping Your Terraform State teaser: | - Deploy your application to AWS. Execute Terraform commands locally and use Terraform Cloud to store and synchronize Terraform State. + Deploy your application to AWS. Execute Terraform commands locally and use HCP Terraform to store and synchronize Terraform State. notes: - type: text contents: |- @@ -11,7 +12,7 @@ notes: Senior operations admin, Robin, shows up at your desk. - > Last night we had trouble rebuilding the website because the deployment code is locked on Lars' laptop, and Lars is on vacation. Can you configure Terraform Cloud to deploy the application and centralize its dependencies? + > Last night we had trouble rebuilding the website because the deployment code is locked on Lars' laptop, and Lars is on vacation. Can you configure HCP Terraform to deploy the application and centralize its dependencies? tabs: - title: Code Editor type: service @@ -93,11 +94,11 @@ timelimit: 1800 display: inline-block; } -The objective of this challenge is to configure remote state using your Terraform Cloud account. +The objective of this challenge is to configure remote state using your HCP Terraform account. - When you perform the deployment of the `hashicat-aws` application, the Terraform code executes on your workstation. -- We want to centralize and secure the associated Terraform state of your deployment in your Terraform Cloud workspace. +- We want to centralize and secure the associated Terraform state of your deployment in your HCP Terraform workspace. 1- Configure the workspace backend === @@ -133,15 +134,15 @@ terraform apply -auto-approve - When completed, you can follow the `catapp_ip`, or the `catapp_url`, link to open the application instance. -3- See results in Terraform Cloud +3- See results in HCP Terraform === -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and click on Outputs. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and click on Outputs. Please see the example image below. ![Workspace Outputs](../assets/workspace_outputs.png) - From the user interface, you can follow the `catapp_ip`, or the `catapp_url`, link to open the application instance. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-States. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-States. Please see the example image below. ![Workspace State](../assets/workspace_state.png) @@ -153,6 +154,6 @@ Well done! - You successfully deployed the `hashicat-aws` application. -- The Terraform state is stored securely in the Terraform Cloud platform. +- The Terraform state is stored securely in the HCP Terraform platform. Report to Robin by clicking the Check button for this challenge. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-aws-v2/03-centralize-deployments/check-workstation b/instruqt-tracks/hcp-terraform-aws-v2/03-centralize-deployments/check-workstation similarity index 86% rename from instruqt-tracks/terraform-cloud-aws-v2/03-centralize-deployments/check-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/03-centralize-deployments/check-workstation index 41dbec9a..abba0f49 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/03-centralize-deployments/check-workstation +++ b/instruqt-tracks/hcp-terraform-aws-v2/03-centralize-deployments/check-workstation @@ -31,14 +31,14 @@ if [[ $EXIT_CODE -ne 0 ]]; then fail-message "Oops, we couldn't find the hashicat-aws workspace in your remote_backend.tf config file. Try again." fi -# Verify the organization exists in TFC? +# Verify the organization exists in HCP Terraform? curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then - fail-message "I couldn't find your organization, $ORG in Terraform Cloud. Make sure you created it and that it is configured in your remote_backend.tf file." + fail-message "I couldn't find your organization, $ORG in HCP Terraform. Make sure you created it and that it is configured in your remote_backend.tf file." fi -# Verify the workspace exists in TFC? +# Verify the workspace exists in HCP Terraform? curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/$WORKSPACE | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then diff --git a/instruqt-tracks/terraform-cloud-aws-v2/03-centralize-deployments/setup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/03-centralize-deployments/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/03-centralize-deployments/setup-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/03-centralize-deployments/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/03-centralize-deployments/solve-workstation b/instruqt-tracks/hcp-terraform-aws-v2/03-centralize-deployments/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/03-centralize-deployments/solve-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/03-centralize-deployments/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/04-quiz-1/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/04-quiz-1/assignment.md similarity index 95% rename from instruqt-tracks/terraform-cloud-gcp-v2/04-quiz-1/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/04-quiz-1/assignment.md index 8df0f835..19f5e081 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/04-quiz-1/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/04-quiz-1/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-1 +id: utehgsl4sw4z type: quiz title: Quiz 1 - Terraform Remote State teaser: | diff --git a/instruqt-tracks/terraform-cloud-aws-v2/05-protecting-sensitive-variables/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/05-protecting-sensitive-variables/assignment.md similarity index 72% rename from instruqt-tracks/terraform-cloud-aws-v2/05-protecting-sensitive-variables/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/05-protecting-sensitive-variables/assignment.md index b9ebda71..52424af9 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/05-protecting-sensitive-variables/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/05-protecting-sensitive-variables/assignment.md @@ -1,9 +1,10 @@ --- slug: protecting-sensitive-variables +id: i6spyktnemcf type: challenge title: Workspace Variables and Securing Cloud Credentials teaser: | - The security team is concerned about protecting access to Cloud credentials. Create global variable sets, deployment variables and store them securely in Terraform Cloud. + The security team is concerned about protecting access to Cloud credentials. Create global variable sets, deployment variables and store them securely in HCP Terraform. notes: - type: text contents: |- @@ -11,14 +12,14 @@ notes: You get the following request from William, the lead infosec admin at ACME: - > Can you set the Terraform Cloud Organization to manage sensitive Cloud Principal credentials? Once that is done, we can rotate those items regularly, and we can remove any hard-coded Cloud credentials from our deployments. + > Can you set the HCP Terraform Organization to manage sensitive Cloud Principal credentials? Once that is done, we can rotate those items regularly, and we can remove any hard-coded Cloud credentials from our deployments. - type: text contents: |- Thousands of API and cryptographic keys and secrets are leaking on GitHub every day! https://nakedsecurity.sophos.com/2019/03/25/thousands-of-coders-are-leaving-their-crown-jewels-exposed-on-github/ - When you store your API keys as sensitive variables, they are encrypted and stored in the Terraform Cloud platform. These keys are only decrypted in trusted, secure containers that run Terraform commands. + When you store your API keys as sensitive variables, they are encrypted and stored in the HCP Terraform platform. These keys are only decrypted in trusted, secure containers that run Terraform commands. tabs: - title: Code Editor type: service @@ -108,12 +109,12 @@ The security team is looking to mitigate the exposure of Cloud credentials. - The second task is to set up the non-sensitive, deployment-specific variables for the `hashicat-aws` application with Workspace Variables. --- -- The utility code for Terraform Cloud is pre-configured with examples for Variable Sets and Workspace Variables. +- The utility code for HCP Terraform is pre-configured with examples for Variable Sets and Workspace Variables. -- In the Terminal tab, update your Terraform Cloud resources with Variable Sets and Workspace Variables: +- In the Terminal tab, update your HCP Terraform resources with Variable Sets and Workspace Variables: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create global variable set with Cloud # credentials marked as sensitive @@ -144,11 +145,11 @@ echo "AWS_SECRET_ACCESS_KEY = $AWS_SECRET_ACCESS_KEY" ``` -- Use the Code Editor tab and expand the terraform-cloud folder. Observe the updates to the file main.tf +- Use the Code Editor tab and expand the hcp-terraform folder. Observe the updates to the file main.tf - Note the update to configure a Variable Set named Cloud Crendentials (lines 51-95). These variables are sensitive and reflect a dedicated AWS Service Principal to support infrastructure deployments. -- On the Terraform Cloud portal, navigate to Settings-Variable sets. Please see the example image below. +- On the HCP Terraform portal, navigate to Settings-Variable sets. Please see the example image below. ![Variable Sets](../assets/variable_sets.png) @@ -156,7 +157,7 @@ echo "AWS_SECRET_ACCESS_KEY = $AWS_SECRET_ACCESS_KEY" --- -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Variable Sets Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Variable Sets Please see the example image below. ![Variable Sets Linked in Workspace](../assets/variable_sets_link.png) @@ -166,19 +167,19 @@ echo "AWS_SECRET_ACCESS_KEY = $AWS_SECRET_ACCESS_KEY" === Workspace variables always overwrite variables from variable sets that have the same type and the same key. -- Use the Code Editor tab and expand the terraform-cloud folder. Observe the updates to the file main.tf +- Use the Code Editor tab and expand the hcp-terraform folder. Observe the updates to the file main.tf - The application uses two Terraform variables, `region` and `prefix`. We configure these workspace-specific variables (lines 96-119). These are _not_ sensitive and relate to the properties that you can define in your TERRAFORM code for deployment. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Workspace Variables. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Workspace Variables. Please see the example image below. ![Workspace Variables](../assets/workspace_variables.png) 3- Test Remote Execution === -Your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace is updated to **Remote Execution** mode. This means plans and applies occur on Terraform Cloud's infrastructure. You and your team have the ability to review and collaborate on runs within the app. +Your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace is updated to **Remote Execution** mode. This means plans and applies occur on HCP Terraform's infrastructure. You and your team have the ability to review and collaborate on runs within the app. -- Use the Code Editor tab and expand the terraform-cloud folder. Observe the updates to the file main.tf in lines 38-50. +- Use the Code Editor tab and expand the hcp-terraform folder. Observe the updates to the file main.tf in lines 38-50. - Test your application deployment with REMOTE execution. In the Terminal tab, perform an update to your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace. @@ -186,15 +187,15 @@ Your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspa cd /root/hashicat-aws # Use local apply command option to trigger -# a remote run in Terraform Cloud +# a remote run in HCP Terraform terraform apply -auto-approve ``` -- The `terraform apply` command triggers your plans and applies to occur on Terraform Cloud's infrastructure. +- The `terraform apply` command triggers your plans and applies to occur on HCP Terraform's infrastructure. -- To examine the results, on the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview. Please see the example image below. +- To examine the results, on the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview. Please see the example image below. ![Remote Execution](../assets/remote_execution.gif) @@ -205,6 +206,6 @@ Congratulations, you have accomplished a number of things: 2. Your deployment properties are configured with your workspace-specific variables. -3. Terraform Cloud manages your application deployments and you can trigger work remotely. +3. HCP Terraform manages your application deployments and you can trigger work remotely. -Report back to William with the Check button below once you've successfully deployed the hashicat application via Terraform Cloud. \ No newline at end of file +Report back to William with the Check button below once you've successfully deployed the hashicat application via HCP Terraform. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-aws-v2/05-protecting-sensitive-variables/check-workstation b/instruqt-tracks/hcp-terraform-aws-v2/05-protecting-sensitive-variables/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/05-protecting-sensitive-variables/check-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/05-protecting-sensitive-variables/check-workstation diff --git a/instruqt-tracks/hcp-terraform-aws-v2/05-protecting-sensitive-variables/setup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/05-protecting-sensitive-variables/setup-workstation new file mode 100755 index 00000000..74325540 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-aws-v2/05-protecting-sensitive-variables/setup-workstation @@ -0,0 +1,25 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/hcp-terraform + +# Replace the entire file. We need to do this +# in this manner as to replacethe code block for +# the TFE workspace. We can manipulate the code with +# bash but this is more straight forward. +cp -f /root/hcp-terraform/exercises/05-main.tf /root/hcp-terraform/main.tf + +# Aggregate the required content +# main.tf +cat /root/hcp-terraform/exercises/05-env_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/05-tf_vars_main.tf >> /root/hcp-terraform/main.tf + +# variables.tf +cat /root/hcp-terraform/exercises/05-env_vars_variables.tf >> /root/hcp-terraform/variables.tf +cat /root/hcp-terraform/exercises/05-tf_vars_variables.tf >> /root/hcp-terraform/variables.tf + +# Re-use deployment variables so we can upload to HCP Terraform +cat /root/hashicat-aws/terraform.tfvars >> /root/hcp-terraform/terraform.tfvars + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-aws-v2/05-protecting-sensitive-variables/solve-workstation b/instruqt-tracks/hcp-terraform-aws-v2/05-protecting-sensitive-variables/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/05-protecting-sensitive-variables/solve-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/05-protecting-sensitive-variables/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/06-team-management/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/06-team-management/assignment.md similarity index 65% rename from instruqt-tracks/terraform-cloud-aws-v2/06-team-management/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/06-team-management/assignment.md index 240237e4..f2d38701 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/06-team-management/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/06-team-management/assignment.md @@ -1,17 +1,18 @@ --- slug: team-management +id: q9mllxookzwe type: challenge -title: Working with Teams in Terraform Cloud +title: Working with Teams in HCP Terraform teaser: | As your Terraform usage increases more team members want to collaborate. Create teams, add users and implement granular permissions. notes: - type: text contents: |- - A few months go by and you continue building more infrastructure with Terraform Cloud. The devops team are all familiar with Terraform, but some members are unable to access the Terraform Cloud organization. + A few months go by and you continue building more infrastructure with HCP Terraform. The devops team are all familiar with Terraform, but some members are unable to access the HCP Terraform organization. Product manager Hiro requests the following: - > Can you please configure teams in our Terraform Cloud organization? Please grant me read access to your workspace. And also, setup admin access for Lars and development privileges to Aisha. + > Can you please configure teams in our HCP Terraform organization? Please grant me read access to your workspace. And also, setup admin access for Lars and development privileges to Aisha. tabs: - title: Code Editor type: service @@ -104,12 +105,12 @@ The purpose of this challenge is to create an access strategy with Team Manageme - With Team Management you can invite other users to collaborate on code changes, approvals, and Terraform runs. -- If you are on an instructor-led training, you can invite your fellow students to your Terraform Cloud organization and place them on your teams, using the email address attached to their Terraform Cloud account. +- If you are on an instructor-led training, you can invite your fellow students to your HCP Terraform organization and place them on your teams, using the email address attached to their HCP Terraform account. - In the Terminal tab, configure your teams, workspace permissions and users with the following: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create admin, developers and # managers teams. @@ -124,19 +125,19 @@ terraform apply -auto-approve === Teams let you group users into specific categories to enable finer grained access control policies. -- On the Terraform Cloud portal, navigate to Settings-Teams. Please see the example image below. +- On the HCP Terraform portal, navigate to Settings-Teams. Please see the example image below. ![Organization Teams](../assets/org_teams.png) - Review each of your teams and their assigned Organization Access. -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the assignment for your teams (Lines 118-161). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the assignment for your teams (Lines 118-161). 2- Workspace Permissions === -Terraform Cloud's access model is team-based. There are two ways to choose which permissions a given team has on a workspace: fixed permission sets, and custom permissions. +HCP Terraform's access model is team-based. There are two ways to choose which permissions a given team has on a workspace: fixed permission sets, and custom permissions. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Team Access. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Team Access. Please see the example image below. ![Workspace Teams](../assets/workspace_teams.png) @@ -144,28 +145,28 @@ Terraform Cloud's access model is team-based. There are two ways to choose which - Use Edit Permissions to review the permissions assigned for each team on the hashicat-aws workspace. -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the association between the hashicat-aws workspace and your teams (Lines 162-218). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the association between the hashicat-aws workspace and your teams (Lines 162-218). 3- Assign Users === User accounts belong to individual people. Each user can be part of one or more teams, which are granted permissions on workspaces within an organization. A user can be a member of multiple organizations. -- On the Terraform Cloud portal, navigate to Settings-Users-Invited. Please see the example image below. +- On the HCP Terraform portal, navigate to Settings-Users-Invited. Please see the example image below. ![Users Invited](../assets/users_invited.png) -- When a user sends you an invitation to join an existing Terraform Cloud organization, the email includes a sign-up link. +- When a user sends you an invitation to join an existing HCP Terraform organization, the email includes a sign-up link. -- With existing accounts, you can automatically join that organization and can begin using Terraform Cloud. +- With existing accounts, you can automatically join that organization and can begin using HCP Terraform. -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review how users invited to an organization and added to a team (Lines 220-261). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review how users invited to an organization and added to a team (Lines 220-261). --- Excellent work. You have a foundational access strategy for teams, workspaces and users. You can write the following notes in your report: -1. Team Management is configured with appropriate assignments for TFC admins, developers and managers. The next step is to configure SSO and map TFC teams to ACME teams. Then we need to configure 2FA to comply with corporate security policies. +1. Team Management is configured with appropriate assignments for HCP Terraform admins, developers and managers. The next step is to configure SSO and map HCP Terraform teams to ACME teams. Then we need to configure 2FA to comply with corporate security policies. -2. Workspace permission grants are aligned with TFC Teams based on specific roles, not individual identities. +2. Workspace permission grants are aligned with HCP Terraform Teams based on specific roles, not individual identities. 3. Users can join the organization with their corporate account. Admins can grant team privileges manually or through automated utilities triggered by onboarding workflows. diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/06-team-management/check-workstation b/instruqt-tracks/hcp-terraform-aws-v2/06-team-management/check-workstation similarity index 98% rename from instruqt-tracks/terraform-cloud-gcp-v2/06-team-management/check-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/06-team-management/check-workstation index e5d9be16..e000d8bc 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/06-team-management/check-workstation +++ b/instruqt-tracks/hcp-terraform-aws-v2/06-team-management/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-$CLOUD_ENV -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) # Get our team IDs. In the test environment these teams are pre-created. diff --git a/instruqt-tracks/hcp-terraform-aws-v2/06-team-management/setup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/06-team-management/setup-workstation new file mode 100755 index 00000000..91a450c6 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-aws-v2/06-team-management/setup-workstation @@ -0,0 +1,10 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/hcp-terraform + +cat /root/hcp-terraform/exercises/06-main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/06-variables.tf >> /root/hcp-terraform/variables.tf + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-aws-v2/06-team-management/solve-workstation b/instruqt-tracks/hcp-terraform-aws-v2/06-team-management/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/06-team-management/solve-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/06-team-management/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/07-quiz-2/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/07-quiz-2/assignment.md similarity index 77% rename from instruqt-tracks/terraform-cloud-gcp-v2/07-quiz-2/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/07-quiz-2/assignment.md index b9d358d1..22944567 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/07-quiz-2/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/07-quiz-2/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-2 +id: rqvyhascunyf type: quiz title: Quiz 2 - Secure Variables teaser: | @@ -11,8 +12,8 @@ notes: answers: - In your Terraform workspace - In a text file on your Desktop -- As encrypted environment variables in Terraform Cloud -- As Terraform variables in Terraform Cloud +- As encrypted environment variables in HCP Terraform +- As Terraform variables in HCP Terraform solution: - 2 difficulty: basic diff --git a/instruqt-tracks/terraform-cloud-aws-v2/08-versioned-infrastructure/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/08-versioned-infrastructure/assignment.md similarity index 78% rename from instruqt-tracks/terraform-cloud-aws-v2/08-versioned-infrastructure/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/08-versioned-infrastructure/assignment.md index e8b8dd80..3eed84f1 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/08-versioned-infrastructure/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/08-versioned-infrastructure/assignment.md @@ -1,9 +1,10 @@ --- slug: versioned-infrastructure +id: ubdxaq2rkczg type: challenge title: Version Controlled Infrastructure teaser: | - The team has grown and you need to implement code reviews. Terraform Cloud can connect to popular Version Control Systems to enable collaboration and testing. + The team has grown and you need to implement code reviews. HCP Terraform can connect to popular Version Control Systems to enable collaboration and testing. notes: - type: text contents: |- @@ -17,7 +18,7 @@ notes: process. Can you add the `hashicat-aws` application code to a GitHub repository so we can implement code reviews? - type: text contents: |- - Once you connect a VCS repository to your Terraform Cloud workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. + Once you connect a VCS repository to your HCP Terraform workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. In addition it allows you to enable features like code reviews, pull requests, and automated testing of your code. tabs: @@ -148,7 +149,7 @@ The objectives of this challenge are to configure a VCS integration for your org 1- Create a GitHub Repository === -To trigger Terraform Cloud runs from changes to VCS, you first need to create a new repository in your personal GitHub account. +To trigger HCP Terraform runs from changes to VCS, you first need to create a new repository in your personal GitHub account. - In the Terminal tab run the helper script to cache your GitHub credentials temporarily. @@ -210,26 +211,26 @@ echo "" ![Populated Git Repo](../assets/git_repo_populated.png) -3- Integrate Terraform Cloud VCS +3- Integrate HCP Terraform VCS === Version control (VCS) integration allows you to manually approve changes or automate a run as soon as a pull request is merged into a repository branch. -- In the Terminal tab, create a VCS connection to your GitHub organization, and link the Terraform Cloud workspace to your GitHub repository. +- In the Terminal tab, create a VCS connection to your GitHub organization, and link the HCP Terraform workspace to your GitHub repository. ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create an OAuth Client as the connection -# for your TFC organization and the +# for your HCP Terraform organization and the # GitHub provider terraform apply -auto-approve ``` -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the OAuth Client configuration (Lines 286-299). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the OAuth Client configuration (Lines 286-299). -- On the Terraform Cloud portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Settings-Version Control-Providers +- On the HCP Terraform portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Settings-Version Control-Providers Please see the example image below. @@ -239,9 +240,9 @@ Please see the example image below. --- -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the VCS Configuration for your `[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]` workspace (Lines 67-70). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the VCS Configuration for your `[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]` workspace (Lines 67-70). -- On the Terraform Cloud portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Version Control. Please see the example image below. +- On the HCP Terraform portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Version Control. Please see the example image below. ![Workspace VCS](../assets/workspace_vcs.png) @@ -257,9 +258,9 @@ echo "" ``` -- Terraform Cloud registers webhooks with your VCS provider, then automatically queues a Terraform run whenever new commits are merged to the branch of the linked repository. +- HCP Terraform registers webhooks with your VCS provider, then automatically queues a Terraform run whenever new commits are merged to the branch of the linked repository. -- When GitHub registers a `Pull Request` or a `Push` succesfully to the repository, there is a secure sequence to push the code and trigger a run in Terraform Cloud. +- When GitHub registers a `Pull Request` or a `Push` succesfully to the repository, there is a secure sequence to push the code and trigger a run in HCP Terraform. --- Congratulations, you have implemented a significant milestone to support code reviews. diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/08-versioned-infrastructure/check-workstation b/instruqt-tracks/hcp-terraform-aws-v2/08-versioned-infrastructure/check-workstation similarity index 90% rename from instruqt-tracks/terraform-cloud-gcp-v2/08-versioned-infrastructure/check-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/08-versioned-infrastructure/check-workstation index c5ec92e2..214d4923 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/08-versioned-infrastructure/check-workstation +++ b/instruqt-tracks/hcp-terraform-aws-v2/08-versioned-infrastructure/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-$CLOUD_ENV -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) VCS_HASHICAT=$(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/$WORKSPACE | jq -r '.data.attributes | .["vcs-repo"] | .identifier' | cut -f2 -d '/') diff --git a/instruqt-tracks/hcp-terraform-aws-v2/08-versioned-infrastructure/setup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/08-versioned-infrastructure/setup-workstation new file mode 100755 index 00000000..f3e3230b --- /dev/null +++ b/instruqt-tracks/hcp-terraform-aws-v2/08-versioned-infrastructure/setup-workstation @@ -0,0 +1,23 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/terraform-github + +# Replace the entire file. We need to do this +# in this manner as to replacethe code block for +# the TFE workspace. We can manipulate the code with +# bash but this is more straight forward. +cp -f /root/hcp-terraform/exercises/08-main.tf /root/hcp-terraform/main.tf + +# Aggregate the required content +# main.tf +cat /root/hcp-terraform/exercises/05-env_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/05-tf_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-users_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-github_main.tf >> /root/hcp-terraform/main.tf + +# Aggregate with new variables +cat /root/hcp-terraform/exercises/08-variables.tf >> /root/hcp-terraform/variables.tf + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-aws-v2/08-versioned-infrastructure/solve-workstation b/instruqt-tracks/hcp-terraform-aws-v2/08-versioned-infrastructure/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/08-versioned-infrastructure/solve-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/08-versioned-infrastructure/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/09-vcs-collaboration/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/09-vcs-collaboration/assignment.md similarity index 81% rename from instruqt-tracks/terraform-cloud-aws-v2/09-vcs-collaboration/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/09-vcs-collaboration/assignment.md index a74d9f98..c38aab40 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/09-vcs-collaboration/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/09-vcs-collaboration/assignment.md @@ -1,9 +1,10 @@ --- slug: vcs-collaboration +id: 2qgwx0qv4axb type: challenge title: Collaborating with VCS teaser: | - Now that you've got your version control system configured with Terraform Cloud, you can collaborate on changes to your application deployment. + Now that you've got your version control system configured with HCP Terraform, you can collaborate on changes to your application deployment. notes: - type: text contents: |- @@ -157,7 +158,7 @@ On your Web browser, open the page to your GitHub repository.
4 - Confirm merge
5 - Delete branch -- When you execute the Create pull request step, ensure you explore the Terraform Cloud Check to review the changes to the deployment. For reference, please see the example image below. +- When you execute the Create pull request step, ensure you explore the HCP Terraform Check to review the changes to the deployment. For reference, please see the example image below. ![Git PR Check](../assets/git_pr_check.png) @@ -182,21 +183,21 @@ git pull origin main ``` -3- See results in Terraform Cloud +3- See results in HCP Terraform === -With an approved pull request/merge request to a branch, any Terraform Cloud workspaces based on that branch will perform a speculative plan with the contents of the request and links to the results on the PR's page. +With an approved pull request/merge request to a branch, any HCP Terraform workspaces based on that branch will perform a speculative plan with the contents of the request and links to the results on the PR's page. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and note that a new deployment is occuring. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and note that a new deployment is occuring. Please see the example image below. ![Workspace PR Merge](../assets/workspace_pr_merge.png) -- When a workspace is linked to a VCS repository, Terraform Cloud runs start automatically when you merge or commit changes to version control. +- When a workspace is linked to a VCS repository, HCP Terraform runs start automatically when you merge or commit changes to version control. --- Amazing! You have enabled your team to collaborate using GitHub as a VCS provider. You can report the following: -- With approved commits to a branch, any Terraform Cloud workspaces based on that branch will begin a Terraform run. +- With approved commits to a branch, any HCP Terraform workspaces based on that branch will begin a Terraform run. -- Although any contributor to the repository can see the status indicators for pull request plans, only members of your Terraform Cloud organization with permission to read runs for the affected workspaces can click through and view the complete plan output. +- Although any contributor to the repository can see the status indicators for pull request plans, only members of your HCP Terraform organization with permission to read runs for the affected workspaces can click through and view the complete plan output. Report to Lars with the Check button below and let him know that the updates are working through the VCS workflow process. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-aws-v2/09-vcs-collaboration/check-workstation b/instruqt-tracks/hcp-terraform-aws-v2/09-vcs-collaboration/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/09-vcs-collaboration/check-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/09-vcs-collaboration/check-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/09-vcs-collaboration/setup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/09-vcs-collaboration/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/09-vcs-collaboration/setup-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/09-vcs-collaboration/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/09-vcs-collaboration/solve-workstation b/instruqt-tracks/hcp-terraform-aws-v2/09-vcs-collaboration/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/09-vcs-collaboration/solve-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/09-vcs-collaboration/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/10-policy-as-code/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/10-policy-as-code/assignment.md similarity index 86% rename from instruqt-tracks/terraform-cloud-aws-v2/10-policy-as-code/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/10-policy-as-code/assignment.md index 40a87d4a..a940598c 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/10-policy-as-code/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/10-policy-as-code/assignment.md @@ -1,5 +1,6 @@ --- slug: policy-as-code +id: tebejrths7vl type: challenge title: Terraform Compliance with Sentinel teaser: | @@ -106,7 +107,7 @@ In this challenge we use HashiCorp Sentinel policies to enforce two rules: To get started, use the Terminal tab to create a new Policy Set and assign it to the hashicat-aws workspace with the following: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create a policy set from VCS. # 2. Enable automated policy as code @@ -133,23 +134,23 @@ For a comprehensive collection of Sentinel Policies, please visit this [HashiCor 2- Policy Sets === -In our environment, Terraform Cloud looks at your GitHub repo that contains the Sentinel Policy Sets to use in your own organization. +In our environment, HCP Terraform looks at your GitHub repo that contains the Sentinel Policy Sets to use in your own organization. -- Use the Code Editor tab and expand the terraform-cloud folder. +- Use the Code Editor tab and expand the hcp-terraform folder. - Note the changes to the file main.tf which automatically configures a Policy Set and links it to the hashicat-aws workspace (lines 300-319). -- On the Terraform Cloud portal, navigate to [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]]-Settings-Policy Sets and explore the Hashicat-Social policy set. +- On the HCP Terraform portal, navigate to [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]]-Settings-Policy Sets and explore the Hashicat-Social policy set. ![Organization Policy Set](../assets/org_policy_sets.png) -- To view the results of this new configuration, issue a manual run in the Terraform Cloud UI. +- To view the results of this new configuration, issue a manual run in the HCP Terraform UI. -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-aws, choose + New run and Start run. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-aws, choose + New run and Start run. Please see the example image below. ![Workspace New Run](../assets/workspace_new_run.png) -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-aws-Runs and, on the Current Run note the application of the policies AFTER the plan, but BEFORE the apply phase. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-aws-Runs and, on the Current Run note the application of the policies AFTER the plan, but BEFORE the apply phase. Please see the example image below. ![Workspace Policy Checks](../assets/workspace_policy_checks.png) @@ -159,7 +160,7 @@ In our environment, Terraform Cloud looks at your GitHub repo that contains the - Use the Code Editor tab to expand the hashicat-aws folder, and browse the policies folder. -- Read the sentinel.hcl file. This file is used to direct Terraform Cloud how to apply these policies. +- Read the sentinel.hcl file. This file is used to direct HCP Terraform how to apply these policies. - Notice that the policies are set to **soft-mandatory** - which implies that failed policies stop the run, and someone with authority can override a failed policy check during a run. Other possible values are: diff --git a/instruqt-tracks/terraform-cloud-azure-v2/10-policy-as-code/check-workstation b/instruqt-tracks/hcp-terraform-aws-v2/10-policy-as-code/check-workstation similarity index 89% rename from instruqt-tracks/terraform-cloud-azure-v2/10-policy-as-code/check-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/10-policy-as-code/check-workstation index 6c5d37b5..4bc545e1 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/10-policy-as-code/check-workstation +++ b/instruqt-tracks/hcp-terraform-aws-v2/10-policy-as-code/check-workstation @@ -7,7 +7,7 @@ if [ -f /tmp/skip-check ]; then exit 0 fi -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) curl -s --header "Authorization: Bearer $TOKEN" https://app.terraform.io/api/v2/organizations/$ORG/policy-sets | jq -r '.data | .[] | .attributes.name' | grep Hashicat-Social || fail-message "Uh oh, it looks like you haven't attached the Hashicat-Social policy set to your organization. Make sure you have forked the repo and added the policy set to your organization." diff --git a/instruqt-tracks/terraform-cloud-aws-v2/10-policy-as-code/setup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/10-policy-as-code/setup-workstation similarity index 88% rename from instruqt-tracks/terraform-cloud-aws-v2/10-policy-as-code/setup-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/10-policy-as-code/setup-workstation index 5193e753..5e96021f 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/10-policy-as-code/setup-workstation +++ b/instruqt-tracks/hcp-terraform-aws-v2/10-policy-as-code/setup-workstation @@ -4,7 +4,7 @@ set -e cd /root/hashicat-$CLOUD_ENV git pull origin main -cat /root/terraform-cloud/exercises/11-main.tf >> /root/terraform-cloud/main.tf +cat /root/hcp-terraform/exercises/11-main.tf >> /root/hcp-terraform/main.tf TFC_TOKEN=$(jq -r '.credentials."app.terraform.io".token' /root/.terraform.d/credentials.tfrc.json 2>/dev/null) TF_ORG=$(agent variable get TF_ORG) diff --git a/instruqt-tracks/terraform-cloud-aws-v2/10-policy-as-code/solve-workstation b/instruqt-tracks/hcp-terraform-aws-v2/10-policy-as-code/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/10-policy-as-code/solve-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/10-policy-as-code/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/11-quiz-3/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/11-quiz-3/assignment.md similarity index 96% rename from instruqt-tracks/terraform-cloud-azure-v2/11-quiz-3/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/11-quiz-3/assignment.md index 7d09b5f7..4e8df015 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/11-quiz-3/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/11-quiz-3/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-3 +id: 65hpct7kssdy type: quiz title: Quiz 3 - Version Control and Terraform teaser: | diff --git a/instruqt-tracks/terraform-cloud-aws-v2/12-private-module-registry/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/12-private-module-registry/assignment.md similarity index 86% rename from instruqt-tracks/terraform-cloud-aws-v2/12-private-module-registry/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/12-private-module-registry/assignment.md index afe2fc27..9880641b 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/12-private-module-registry/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/12-private-module-registry/assignment.md @@ -1,10 +1,10 @@ --- slug: private-module-registry -id: oob8lyy2lzzf +id: lahcbumiujxh type: challenge -title: Private Module Registry +title: Terraform Private Registry teaser: | - Some of your users want a simple way to deploy S3 buckets. Use the Private Module Registry, in which you can store standard, re-usable Terraform code for IaC consumers. + Some of your users want a simple way to deploy S3 buckets. Use the Terraform Private Registry, in which you can store standard, re-usable Terraform code for IaC consumers. notes: - type: text contents: |- @@ -119,7 +119,7 @@ timelimit: 1800 } -In this challenge you'll learn to use the Private Module Registry, which allows you to store and version re-usable modules of Terraform code. +In this challenge you'll learn to use the Terraform Private Registry, which allows you to store and version re-usable modules of Terraform code. 1- Terraform Registry === @@ -157,7 +157,7 @@ git push origin main ``` -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-aws-Runs and, on the Current Run note the application of the new **module**. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-aws-Runs and, on the Current Run note the application of the new **module**. Please see the example image below. ![Workspace Public Module](../assets/workspace_public_module.png) @@ -165,7 +165,7 @@ This provides an adequate technical solution. However, Gaurav and the developmen 2- Private Registry === -Terraform Cloud's private registry works similarly to the public Terraform Registry and helps you share Terraform providers and Terraform modules across your organization. +HCP Terraform's private registry works similarly to the public Terraform Registry and helps you share Terraform providers and Terraform modules across your organization. - Visit this [Terraform AWS S3 bucket](https://registry.terraform.io/modules/cloudposse/s3-bucket/aws) to work with the module. Complete the following steps: @@ -186,7 +186,7 @@ The private registry uses your configured Version Control System (VCS) integrati To implement this private module in your Private Registry do the following: -- Use the Code Editor tab and expand the terraform-cloud folder. +- Use the Code Editor tab and expand the hcp-terraform folder. - Open the file terraform.tfvars.tf and ensure value for the variable `module_repo` matches your own module repository name. @@ -195,7 +195,7 @@ To implement this private module in your Private Registry do the following: - Use the Terminal tab to register your Private Registry with the following command: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform apply -auto-approve @@ -203,11 +203,11 @@ terraform apply -auto-approve --- -Your Terraform modules can be imported to your Private Module Registry using a workflow method in the Terraform Cloud portal. +Your Terraform modules can be imported to your Terraform Private Registry using a workflow method in the HCP Terraform portal. You do not need to perform these actions with the selected Terraform module, but you can experiment with your own Terraform modules. -- On the Terraform Cloud portal, navigate to Registry-Modules and use Publish. +- On the HCP Terraform portal, navigate to Registry-Modules and use Publish. - Follow the workflow: @@ -228,7 +228,7 @@ The main difference between these two methods is automation. In this workshop, w - Use the Code Editor tab and expand the hashicat-aws folder. -- Revise the `module "s3-bucket"` code snippet in the file main.tf and update with a reference to your Private Module registry. The code currently reads: +- Revise the `module "s3-bucket"` code snippet in the file main.tf and update with a reference to your Terraform Private Registry. The code currently reads: ```bash module "s3-bucket" { @@ -238,7 +238,7 @@ module "s3-bucket" { } ``` -- Update the code with the example below. Notice the update to the module reference with your Terraform Cloud and your Organization name. +- Update the code with the example below. Notice the update to the module reference with your HCP Terraform and your Organization name. ```bash module "s3_bucket" { @@ -261,7 +261,7 @@ git push origin main - The end result is the implementation of a private module that supports your decision criteria. -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-aws-Runs to view the effective changes. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-aws-Runs to view the effective changes. - For reference, please see the example image below. diff --git a/instruqt-tracks/terraform-cloud-aws-v2/12-private-module-registry/check-workstation b/instruqt-tracks/hcp-terraform-aws-v2/12-private-module-registry/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/12-private-module-registry/check-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/12-private-module-registry/check-workstation diff --git a/instruqt-tracks/hcp-terraform-aws-v2/12-private-module-registry/setup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/12-private-module-registry/setup-workstation new file mode 100755 index 00000000..a1f9f7c4 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-aws-v2/12-private-module-registry/setup-workstation @@ -0,0 +1,18 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/hcp-terraform + +cp -a /root/hashicat-$CLOUD_ENV/exercises/13-main.tf /root/hashicat-$CLOUD_ENV/main.tf + +sed -i "s/STORAGE_MODULE/aws-s3-bucket/g" /root/hcp-terraform/exercises/13-main.tf +cat /root/hcp-terraform/exercises/13-main.tf >> /root/hcp-terraform/main.tf + +sed -i "s/STORAGE_MODULE/terraform-aws-s3-bucket/g" /root/hcp-terraform/exercises/13-variables.tf +cat /root/hcp-terraform/exercises/13-variables.tf >> /root/hcp-terraform/variables.tf + +sed -i "s/STORAGE_MODULE/terraform-aws-s3-bucket/g" /root/hcp-terraform/exercises/13-terraform.tfvars +cat /root/hcp-terraform/exercises/13-terraform.tfvars >> /root/hcp-terraform/terraform.tfvars + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-aws-v2/12-private-module-registry/solve-workstation b/instruqt-tracks/hcp-terraform-aws-v2/12-private-module-registry/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/12-private-module-registry/solve-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/12-private-module-registry/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/13-api-driven-workflows/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/13-api-driven-workflows/assignment.md similarity index 80% rename from instruqt-tracks/terraform-cloud-aws-v2/13-api-driven-workflows/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/13-api-driven-workflows/assignment.md index 7f1ee065..e924e982 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/13-api-driven-workflows/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/13-api-driven-workflows/assignment.md @@ -1,14 +1,14 @@ --- slug: api-driven-workflows -id: xmpfr68dmruv +id: tfg8txt0r7jr type: challenge title: API Driven Workflows teaser: | - Terraform Cloud has a fully featured RESTful API that you can use to integrate with external systems. + HCP Terraform has a fully featured RESTful API that you can use to integrate with external systems. notes: - type: text contents: |- - You've mostly been using the Terraform Cloud Web UI and command line + You've mostly been using the HCP Terraform Web UI and command line interface (CLI) to build infrastructure. The devops team needs to integrate with their CI/CD tool via the API. @@ -16,7 +16,7 @@ notes: > Hey Sysadmin, we have this new continuous integration tool that the developers are using to test their application code. I'd like you to test some API calls - to our Terraform Cloud organization and workspaces. Can you please take a look + to our HCP Terraform organization and workspaces. Can you please take a look at this and learn how the API works? tabs: - title: Code Editor @@ -122,19 +122,19 @@ timelimit: 1800 margin-left: 30px; } -In the final challenge you'll directly interact with the Terraform Cloud API. +In the final challenge you'll directly interact with the HCP Terraform API. -- Terraform Cloud has a rich API that lets you do everything you can do in the GUI and more. +- HCP Terraform has a rich API that lets you do everything you can do in the GUI and more. - Intermediate and advanced users utilize the API to create complex integrations that work with external systems. 1. API Subsets === -The Terraform Cloud API will continue to evolve, but we consider it stable for general use, and HashiCorp will maintain all stable API endpoints in a backwards compatible manner. +The HCP Terraform API will continue to evolve, but we consider it stable for general use, and HashiCorp will maintain all stable API endpoints in a backwards compatible manner. ### 1.1 HTTP API Core -This is the most straight-forward method to access the Terraform Cloud API. All requests must include the following: +This is the most straight-forward method to access the HCP Terraform API. All requests must include the following: Authentication All requests must be authenticated with a bearer token. @@ -176,7 +176,7 @@ Before planning an API integration, it is important to consider whether the [TFE It can't create or approve runs in response to arbitrary events, but it's a useful tool for managing your organizations, teams, and workspaces as code. - - In the workshop we assumed **producer** and **consumer** roles. The producer code is in the terraform-cloud folder as it helps create, read, update and delete the resources in Terraform Cloud. + - In the workshop we assumed **producer** and **consumer** roles. The producer code is in the hcp-terraform folder as it helps create, read, update and delete the resources in HCP Terraform. ### 1.3 CDK for Terraform @@ -213,7 +213,7 @@ curl -s \ ``` -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. ![API Create](../assets/api_create.png) @@ -252,7 +252,7 @@ curl \ ``` -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. ![API Update](../assets/api_update.png) @@ -272,13 +272,13 @@ curl \ ``` -- On the Terraform Cloud portal and reload your page. Please see the example image below. +- On the HCP Terraform portal and reload your page. Please see the example image below. ![API Delete](../assets/api_delete.png) 1. Automation with wrappers === -Terraform Cloud's main unit of organization is a workspace. A workspace is a collection of everything Terraform needs to run: a Terraform configuration (usually from a VCS repo), values for that configuration's variables, and state data to keep track of operations between runs. +HCP Terraform's main unit of organization is a workspace. A workspace is a collection of everything Terraform needs to run: a Terraform configuration (usually from a VCS repo), values for that configuration's variables, and state data to keep track of operations between runs. Automation of Terraform can come in various forms, and to varying degrees. The Vending Machine simulates how teams continue to run Terraform locally but use wrapper scripts to prepare a consistent working directory for Terraform to run in, while other teams run Terraform entirely within an orchestration tool such as Jenkins. @@ -294,9 +294,9 @@ bash vending_macheen.bash ``` - There is an assumption that the infrastructure deliverables are supported with tested and secure code modules. -- The workflow manager is responsible for picking the appropriate implementation of those modules and allocating Terraform Cloud resources. +- The workflow manager is responsible for picking the appropriate implementation of those modules and allocating HCP Terraform resources. -- On the Terraform Cloud portal, navigate to Projects & workspaces and pick Vending_Macheen to see your resources. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces and pick Vending_Macheen to see your resources. Please see the example image below. ![API Vending Macheen](../assets/api_vending_macheen.png) @@ -312,28 +312,28 @@ terraform destroy -auto-approve 1. Automation with CI/CD === -While Terraform Cloud offers version control system integrations, including GitHub, using CI/CD tasks in your workflow enables you to add status checks before or after Terraform Cloud remote runs are triggered, better adapting Terraform Cloud to your use case. +While HCP Terraform offers version control system integrations, including GitHub, using CI/CD tasks in your workflow enables you to add status checks before or after HCP Terraform remote runs are triggered, better adapting HCP Terraform to your use case. To illustrate, set up GitHub Actions for your deployment. - Use the Terminal tab to update your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace configuration. In this case, we are removing the VCS setup: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform apply -auto-approve ``` -- Create a secret to access Terraform Cloud from your GitHub deployment repo. +- Create a secret to access HCP Terraform from your GitHub deployment repo. ```bash # Move to /root/hashicat-aws which has # a proper .git and GitHub credentials cd /root/hashicat-aws -# Configure the TFC Token so Github Actions -# can interact with Terraform Cloud +# Configure the HCP Terraform Token so Github Actions +# can interact with HCP Terraform gh secret set TF_API_TOKEN \ --body "$TFC_TOKEN" @@ -360,15 +360,15 @@ git push -u origin main ![GitHub Actions TF Job](../assets/github_actions_tf_job.png) -- Expand and explore any of the job steps. This example showcases how the work is triggered from the CICD workflow, but the permissions for users, Cloud identity authorization, deployment policies and private module resources are all managed in Terraform Cloud. +- Expand and explore any of the job steps. This example showcases how the work is triggered from the CICD workflow, but the permissions for users, Cloud identity authorization, deployment policies and private module resources are all managed in HCP Terraform. --- Congratulations, Senior Cloud Admin. With this exercise we conclude that: -- Terraform Cloud provides a fundamental and secure API to manage its features. +- HCP Terraform provides a fundamental and secure API to manage its features. -- The [Terraform Cloud/Enterprise Provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs) meet most of our needs to support prescriptive workflows. +- The [HCP Terraform/Terraform Enterprise Provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs) meet most of our needs to support prescriptive workflows. - You can use the API endpoints to create your own CRUD operations wrappers to integrate into your workflows. diff --git a/instruqt-tracks/terraform-cloud-aws-v2/13-api-driven-workflows/check-workstation b/instruqt-tracks/hcp-terraform-aws-v2/13-api-driven-workflows/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/13-api-driven-workflows/check-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/13-api-driven-workflows/check-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/13-api-driven-workflows/setup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/13-api-driven-workflows/setup-workstation similarity index 54% rename from instruqt-tracks/terraform-cloud-aws-v2/13-api-driven-workflows/setup-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/13-api-driven-workflows/setup-workstation index 2be46302..1b3dc56d 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/13-api-driven-workflows/setup-workstation +++ b/instruqt-tracks/hcp-terraform-aws-v2/13-api-driven-workflows/setup-workstation @@ -15,15 +15,15 @@ sed -i 's/terraform.yml/# terraform.yml/g' /root/hashicat-aws/.gitignore # in this manner as to replacethe code block for # the TFE workspace. We can manipulate the code with # bash but this is more straight forward. -cp /root/terraform-cloud/exercises/14-main.tf /root/terraform-cloud/main.tf +cp /root/hcp-terraform/exercises/14-main.tf /root/hcp-terraform/main.tf # Aggregate the required content # main.tf -cat /root/terraform-cloud/exercises/05-env_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/05-tf_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-users_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-github_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/11-main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/13-main.tf >> /root/terraform-cloud/main.tf +cat /root/hcp-terraform/exercises/05-env_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/05-tf_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-users_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-github_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/11-main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/13-main.tf >> /root/hcp-terraform/main.tf exit 0 diff --git a/instruqt-tracks/terraform-cloud-aws-v2/13-api-driven-workflows/solve-workstation b/instruqt-tracks/hcp-terraform-aws-v2/13-api-driven-workflows/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/13-api-driven-workflows/solve-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/13-api-driven-workflows/solve-workstation diff --git a/instruqt-tracks/hcp-terraform-aws-v2/14-quiz-4/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/14-quiz-4/assignment.md new file mode 100755 index 00000000..9ef95e78 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-aws-v2/14-quiz-4/assignment.md @@ -0,0 +1,19 @@ +--- +slug: quiz-4 +id: 5amoyqmhewa5 +type: quiz +title: Quiz 4 - Terraform Private Registry +teaser: | + A quiz about the Terraform Private Registry +notes: +- type: text + contents: Congratulations! You've been promoted to HCP Terraform Ninja. +answers: +- "True" +- "False" +solution: +- 1 +difficulty: basic +timelimit: 1800 +--- +The Terraform Private Registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-cloud-aws-v2/15-clean-up-and-teardown/assignment.md b/instruqt-tracks/hcp-terraform-aws-v2/15-clean-up-and-teardown/assignment.md similarity index 89% rename from instruqt-tracks/terraform-cloud-aws-v2/15-clean-up-and-teardown/assignment.md rename to instruqt-tracks/hcp-terraform-aws-v2/15-clean-up-and-teardown/assignment.md index c898f531..c1aff45e 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/15-clean-up-and-teardown/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws-v2/15-clean-up-and-teardown/assignment.md @@ -1,6 +1,6 @@ --- slug: clean-up-and-teardown -id: npmyhhuvtxfz +id: qapnnrajm9dy type: challenge title: Clean up teaser: | @@ -9,7 +9,7 @@ notes: - type: text contents: |- 1. Destroy infrastructure. - 2. Remove TFC Configurations + 2. Remove HCP Terraform Configurations 3. Delete GitHub repository tabs: - title: Code Editor @@ -114,7 +114,7 @@ timelimit: 1800 margin-left: 30px; } -Congratulations, you've learned all the major features of Terraform Cloud. +Congratulations, you've learned all the major features of HCP Terraform. Destroy hashicat infrastructure === @@ -152,16 +152,16 @@ curl \ - Ensure that the `hashicat-aws` deployment **Triggered Destroy** finishes. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview to confirm. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview to confirm. Please see the example image below. ![Destroy Workspace](../assets/workspace_destroy.png) -Remove TFC Configurations +Remove HCP Terraform Configurations === - Remove workspace, variables, users, policies, VCS, private module ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform destroy -auto-approve diff --git a/instruqt-tracks/terraform-cloud-aws-v2/15-clean-up-and-teardown/check-workstation b/instruqt-tracks/hcp-terraform-aws-v2/15-clean-up-and-teardown/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/15-clean-up-and-teardown/check-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/15-clean-up-and-teardown/check-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/15-clean-up-and-teardown/cleanup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/15-clean-up-and-teardown/cleanup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/15-clean-up-and-teardown/cleanup-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/15-clean-up-and-teardown/cleanup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/15-clean-up-and-teardown/setup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/15-clean-up-and-teardown/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/15-clean-up-and-teardown/setup-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/15-clean-up-and-teardown/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/15-clean-up-and-teardown/solve-workstation b/instruqt-tracks/hcp-terraform-aws-v2/15-clean-up-and-teardown/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/15-clean-up-and-teardown/solve-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/15-clean-up-and-teardown/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/Makefile b/instruqt-tracks/hcp-terraform-aws-v2/Makefile similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/Makefile rename to instruqt-tracks/hcp-terraform-aws-v2/Makefile diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/api_create.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/api_create.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/api_create.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/api_create.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/api_delete.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/api_delete.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/api_delete.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/api_delete.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/api_update.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/api_update.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/api_update.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/api_update.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/api_vending_macheen.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/api_vending_macheen.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/api_vending_macheen.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/api_vending_macheen.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/bash-icon.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/bash-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/bash-icon.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/bash-icon.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/close_vs_code_tabs.gif b/instruqt-tracks/hcp-terraform-aws-v2/assets/close_vs_code_tabs.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/close_vs_code_tabs.gif rename to instruqt-tracks/hcp-terraform-aws-v2/assets/close_vs_code_tabs.gif diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/create_new_org.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/create_new_org.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/create_new_org.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/create_new_org.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/enable_trial.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/enable_trial.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/enable_trial.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/enable_trial.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/file-icon.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/file-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/file-icon.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/file-icon.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/folder.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/folder.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/folder.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/folder.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/git_pr_check.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/git_pr_check.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/git_pr_check.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/git_pr_check.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/git_repo_new.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/git_repo_new.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/git_repo_new.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/git_repo_new.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/git_repo_populated.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/git_repo_populated.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/git_repo_populated.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/git_repo_populated.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/github_actions_tf_job.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/github_actions_tf_job.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/github_actions_tf_job.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/github_actions_tf_job.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/hcl-icon.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/hcl-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/hcl-icon.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/hcl-icon.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/module_fork.gif b/instruqt-tracks/hcp-terraform-aws-v2/assets/module_fork.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/module_fork.gif rename to instruqt-tracks/hcp-terraform-aws-v2/assets/module_fork.gif diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/new_workspace.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/new_workspace.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/new_workspace.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/new_workspace.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/one.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/one.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/one.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/one.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/org_cost_estimation.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/org_cost_estimation.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/org_cost_estimation.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/org_cost_estimation.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/org_policy_sets.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/org_policy_sets.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/org_policy_sets.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/org_policy_sets.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/org_teams.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/org_teams.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/org_teams.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/org_teams.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/org_vcs.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/org_vcs.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/org_vcs.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/org_vcs.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/pmr_private_module.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/pmr_private_module.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/pmr_private_module.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/pmr_private_module.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/pmr_register_module.gif b/instruqt-tracks/hcp-terraform-aws-v2/assets/pmr_register_module.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/pmr_register_module.gif rename to instruqt-tracks/hcp-terraform-aws-v2/assets/pmr_register_module.gif diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/pull_request.gif b/instruqt-tracks/hcp-terraform-aws-v2/assets/pull_request.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/pull_request.gif rename to instruqt-tracks/hcp-terraform-aws-v2/assets/pull_request.gif diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/readme.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/readme.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/readme.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/readme.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/remote_execution.gif b/instruqt-tracks/hcp-terraform-aws-v2/assets/remote_execution.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/remote_execution.gif rename to instruqt-tracks/hcp-terraform-aws-v2/assets/remote_execution.gif diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/shell.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/shell.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/shell.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/shell.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/tf-icon.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/tf-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/tf-icon.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/tf-icon.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/three.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/three.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/three.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/three.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/two.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/two.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/two.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/two.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/users_invited.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/users_invited.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/users_invited.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/users_invited.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/variable_sets.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/variable_sets.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/variable_sets.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/variable_sets.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/variable_sets_link.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/variable_sets_link.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/variable_sets_link.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/variable_sets_link.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/vsc-explorer-icon.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/vsc-explorer-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/vsc-explorer-icon.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/vsc-explorer-icon.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/vscode-extensions.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/vscode-extensions.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/vscode-extensions.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/vscode-extensions.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/web.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/web.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/web.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/web.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_cost_estimation.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_cost_estimation.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_cost_estimation.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_cost_estimation.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_destroy.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_destroy.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_destroy.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_destroy.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_new_run.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_new_run.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_new_run.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_new_run.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_outputs.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_outputs.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_outputs.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_outputs.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_policy_checks.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_policy_checks.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_policy_checks.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_policy_checks.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_pr_merge.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_pr_merge.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_pr_merge.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_pr_merge.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_public_module.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_public_module.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_public_module.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_public_module.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_state.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_state.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_state.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_state.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_teams.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_teams.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_teams.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_teams.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_variables.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_variables.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_variables.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_variables.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_vcs.png b/instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_vcs.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/assets/workspace_vcs.png rename to instruqt-tracks/hcp-terraform-aws-v2/assets/workspace_vcs.png diff --git a/instruqt-tracks/terraform-cloud-aws-v2/config.yml b/instruqt-tracks/hcp-terraform-aws-v2/config.yml similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/config.yml rename to instruqt-tracks/hcp-terraform-aws-v2/config.yml diff --git a/instruqt-tracks/terraform-cloud-aws-v2/track.yml b/instruqt-tracks/hcp-terraform-aws-v2/track.yml similarity index 77% rename from instruqt-tracks/terraform-cloud-aws-v2/track.yml rename to instruqt-tracks/hcp-terraform-aws-v2/track.yml index c457e9f4..e5dd942c 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/track.yml +++ b/instruqt-tracks/hcp-terraform-aws-v2/track.yml @@ -2,10 +2,9 @@ # SPDX-License-Identifier: MPL-2.0 slug: terraform-cloud-aws-v2 -id: 3xf7hxwimjqx -title: Terraform Cloud with AWS +title: HCP Terraform with AWS teaser: | - Terraform Cloud enables infrastructure automation for provisioning, compliance, and management of any cloud, data center, and service. + HCP Terraform enables infrastructure automation for provisioning, compliance, and management of any cloud, data center, and service. description: |- Work with the devops team at ACME as they go from manual provisioning with Terraform to a fully automated devops workflow with code reviews, testing, and automated provisioning in AWS Cloud. @@ -20,18 +19,21 @@ description: |- icon: https://storage.googleapis.com/instruqt-hashicorp-tracks/logo/terraform.png level: beginner tags: -- terraform -- aws - cloud - enterprise +- aws +- terraform owner: hashicorp developers: -- gilberto@hashicorp.com -- jthompson@hashicorp.com - thomas@hashicorp.com +- jenna.wong@hashicorp.com show_timer: true +idle_timeout: 300 +timelimit: 14400 lab_config: overlay: false width: 33 position: right - + sidebar_enabled: true + feedback_recap_enabled: true + loadingMessages: true \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-aws-v2/track_scripts/setup-workstation b/instruqt-tracks/hcp-terraform-aws-v2/track_scripts/setup-workstation similarity index 79% rename from instruqt-tracks/terraform-cloud-aws-v2/track_scripts/setup-workstation rename to instruqt-tracks/hcp-terraform-aws-v2/track_scripts/setup-workstation index 76736069..9b24e913 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/track_scripts/setup-workstation +++ b/instruqt-tracks/hcp-terraform-aws-v2/track_scripts/setup-workstation @@ -34,7 +34,7 @@ mv /root/se-workshop-hashicat-app/hashicat-policies/$CLOUD_ENV /root/hashicat-$C # rm -fR /root/hashicat-$CLOUD_ENV/policies/azure # rm -fR /root/hashicat-$CLOUD_ENV/policies/gcp -mv /root/se-workshop-hashicat-app/terraform-cloud /root/terraform-cloud +mv /root/se-workshop-hashicat-app/hcp-terraform /root/hcp-terraform mv /root/se-workshop-hashicat-app/terraform-github /root/terraform-github mv /root/se-workshop-hashicat-app/terraform-api /root/terraform-api mv /root/se-workshop-hashicat-app/scripts /root/scripts @@ -45,7 +45,7 @@ rm -fR /root/se-workshop-hashicat-app # ├── hashicat-aws # │ ├── files # │ └── policies -# ├── terraform-cloud +# ├── hcp-terraform # │ └── exercises # └── terraform-github # └── terraform-api @@ -53,9 +53,9 @@ rm -fR /root/se-workshop-hashicat-app # Set the initial workspace name export WORKSPACE="hashicat-${CLOUD_ENV}" -cp /root/terraform-cloud/terraform.tfvars.example /root/terraform-cloud/terraform.tfvars +cp /root/hcp-terraform/terraform.tfvars.example /root/hcp-terraform/terraform.tfvars -cd /root/terraform-cloud +cd /root/hcp-terraform sed -i "s/YOUR_WORKSPACE/$WORKSPACE/g" terraform.tfvars # We do this to ear-mark the variables associated @@ -159,28 +159,28 @@ if [ $CLOUD_ENV == "aws" ]; then echo "export TF_VAR_instruqt_aws_secret_access_key=\$AWS_SECRET_ACCESS_KEY" >> /root/.bashrc # Set up TF code block for AWS - mv /root/terraform-cloud/exercises/aws-env_vars_main.tf /root/terraform-cloud/exercises/05-env_vars_main.tf - mv /root/terraform-cloud/exercises/aws-env_vars_variables.tf /root/terraform-cloud/exercises/05-env_vars_variables.tf + mv /root/hcp-terraform/exercises/aws-env_vars_main.tf /root/hcp-terraform/exercises/05-env_vars_main.tf + mv /root/hcp-terraform/exercises/aws-env_vars_variables.tf /root/hcp-terraform/exercises/05-env_vars_variables.tf # Remove other templates - rm -f /root/terraform-cloud/exercises/azure-env_vars*.tf - rm -f /root/terraform-cloud/exercises/gcp-env_vars*.tf + rm -f /root/hcp-terraform/exercises/azure-env_vars*.tf + rm -f /root/hcp-terraform/exercises/gcp-env_vars*.tf elif [ $CLOUD_ENV == "azure" ]; then # Set up TF code block for Azure - mv /root/terraform-cloud/exercises/azure-env_vars_main.tf /root/terraform-cloud/exercises/05-env_vars_main.tf - mv /root/terraform-cloud/exercises/azure-env_vars_variables.tf /root/terraform-cloud/exercises/05-env_vars_variables.tf + mv /root/hcp-terraform/exercises/azure-env_vars_main.tf /root/hcp-terraform/exercises/05-env_vars_main.tf + mv /root/hcp-terraform/exercises/azure-env_vars_variables.tf /root/hcp-terraform/exercises/05-env_vars_variables.tf # Remove other templates - rm -f /root/terraform-cloud/exercises/aws-env_vars*.tf - rm -f /root/terraform-cloud/exercises/gcp-env_vars*.tf + rm -f /root/hcp-terraform/exercises/aws-env_vars*.tf + rm -f /root/hcp-terraform/exercises/gcp-env_vars*.tf elif [ $CLOUD_ENV == "gcp" ]; then # Set up TF code block for GCP - mv /root/terraform-cloud/exercises/gcp-env_vars_main.tf /root/terraform-cloud/exercises/05-env_vars_main.tf - mv /root/terraform-cloud/exercises/gcp-env_vars_variables.tf /root/terraform-cloud/exercises/05-env_vars_variables.tf + mv /root/hcp-terraform/exercises/gcp-env_vars_main.tf /root/hcp-terraform/exercises/05-env_vars_main.tf + mv /root/hcp-terraform/exercises/gcp-env_vars_variables.tf /root/hcp-terraform/exercises/05-env_vars_variables.tf # Remove other templates - rm -f /root/terraform-cloud/exercises/aws-env_vars*.tf - rm -f /root/terraform-cloud/exercises/azure-env_vars*.tf + rm -f /root/hcp-terraform/exercises/aws-env_vars*.tf + rm -f /root/hcp-terraform/exercises/azure-env_vars*.tf fi # Dealing with "mesg: ttyname failed: Inappropriate ioctl for device" diff --git a/instruqt-tracks/terraform-cloud-aws/01-setup-our-environment/assignment.md b/instruqt-tracks/hcp-terraform-aws/01-setup-our-environment/assignment.md similarity index 99% rename from instruqt-tracks/terraform-cloud-aws/01-setup-our-environment/assignment.md rename to instruqt-tracks/hcp-terraform-aws/01-setup-our-environment/assignment.md index 1b9cb604..f055805b 100755 --- a/instruqt-tracks/terraform-cloud-aws/01-setup-our-environment/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/01-setup-our-environment/assignment.md @@ -1,5 +1,6 @@ --- slug: setup-our-environment +id: oozyo2gfdwgx type: challenge title: "\U0001F3E1 Moving in - Set Up Your Workspace" teaser: | diff --git a/instruqt-tracks/terraform-cloud-aws/01-setup-our-environment/check-workstation b/instruqt-tracks/hcp-terraform-aws/01-setup-our-environment/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/01-setup-our-environment/check-workstation rename to instruqt-tracks/hcp-terraform-aws/01-setup-our-environment/check-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/01-setup-our-environment/setup-workstation b/instruqt-tracks/hcp-terraform-aws/01-setup-our-environment/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/01-setup-our-environment/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/01-setup-our-environment/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/01-setup-our-environment/solve-workstation b/instruqt-tracks/hcp-terraform-aws/01-setup-our-environment/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/01-setup-our-environment/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/01-setup-our-environment/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/02-terraform-cloud-setup/assignment.md b/instruqt-tracks/hcp-terraform-aws/02-hcp-terraform-setup/assignment.md similarity index 71% rename from instruqt-tracks/terraform-cloud-aws/02-terraform-cloud-setup/assignment.md rename to instruqt-tracks/hcp-terraform-aws/02-hcp-terraform-setup/assignment.md index 6e21a6d2..b5c86efc 100755 --- a/instruqt-tracks/terraform-cloud-aws/02-terraform-cloud-setup/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/02-hcp-terraform-setup/assignment.md @@ -1,12 +1,13 @@ --- -slug: terraform-cloud-setup +slug: hcp-terraform-setup +id: ipdntgczsypl type: challenge -title: Terraform Cloud Setup +title: HCP Terraform Setup teaser: | - Terraform Cloud offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in Terraform Cloud. + HCP Terraform offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in HCP Terraform. notes: - type: text - contents: Terraform Cloud remote state storage is free for all users. + contents: HCP Terraform remote state storage is free for all users. tabs: - title: Shell type: terminal @@ -18,17 +19,17 @@ tabs: difficulty: basic timelimit: 1800 --- -Terraform Cloud Setup +HCP Terraform Setup === -1. Sign up for a free Terraform Cloud account: +1. Sign up for a free HCP Terraform account: - Go to the [Sign-in page](https://portal.cloud.hashicorp.com/sign-in) and create a new account - If you already have an account, sign in with your existing credentials -2. Create a new Terraform Cloud Organization +2. Create a new HCP Terraform Organization - - Navigate to the [Create a new organization](https://app.terraform.io/app/organizations/new?trial=workshop2023) page and create a Terraform Cloud Organization for this workshop + - Navigate to the [Create a new organization](https://app.terraform.io/app/organizations/new?trial=workshop2023) page and create a HCP Terraform Organization for this workshop - Use the `Create organization & start 14 day trial` button to enable Team and Governance features in your organization. Please see reference below. @@ -45,7 +46,7 @@ Workspace Configuration No really...you *must* name your workspace **hashicat-aws**. If you don't the exercises will break. Do not attempt to name it something else. -**Note:** If you already have a **hashicat-aws** workspace, please delete the workspace by selecting the workspace-level **Settings >> Destruction and Deletion** menu, clicking the **Delete from Terraform Cloud** button, typing **hashicat-aws** to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you already played this track in the past. +**Note:** If you already have a **hashicat-aws** workspace, please delete the workspace by selecting the workspace-level **Settings >> Destruction and Deletion** menu, clicking the **Delete from HCP Terraform** button, typing **hashicat-aws** to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you already played this track in the past. --- diff --git a/instruqt-tracks/terraform-cloud-aws/02-terraform-cloud-setup/check-workstation b/instruqt-tracks/hcp-terraform-aws/02-hcp-terraform-setup/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/02-terraform-cloud-setup/check-workstation rename to instruqt-tracks/hcp-terraform-aws/02-hcp-terraform-setup/check-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/02-terraform-cloud-setup/setup-workstation b/instruqt-tracks/hcp-terraform-aws/02-hcp-terraform-setup/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/02-terraform-cloud-setup/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/02-hcp-terraform-setup/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/02-terraform-cloud-setup/solve-workstation b/instruqt-tracks/hcp-terraform-aws/02-hcp-terraform-setup/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/02-terraform-cloud-setup/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/02-hcp-terraform-setup/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/03-oh-no-an-outage/assignment.md b/instruqt-tracks/hcp-terraform-aws/03-oh-no-an-outage/assignment.md similarity index 86% rename from instruqt-tracks/terraform-cloud-aws/03-oh-no-an-outage/assignment.md rename to instruqt-tracks/hcp-terraform-aws/03-oh-no-an-outage/assignment.md index a3917947..70931e8f 100755 --- a/instruqt-tracks/terraform-cloud-aws/03-oh-no-an-outage/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/03-oh-no-an-outage/assignment.md @@ -1,9 +1,10 @@ --- slug: oh-no-an-outage +id: sfj49jpkkys7 type: challenge title: "\U0001F4D2 Safekeeping Your Terraform State" teaser: | - An unexpected outage has taken down one of the production websites. It took longer than expected to recover because the Terraform state file was stored on someone's laptop. Terraform Cloud's remote state feature is here to help. + An unexpected outage has taken down one of the production websites. It took longer than expected to recover because the Terraform state file was stored on someone's laptop. HCP Terraform's remote state feature is here to help. notes: - type: text contents: "It's Monday morning and you're the first one into the office. Most of @@ -28,15 +29,15 @@ tabs: difficulty: basic timelimit: 1800 --- -Your task is to configure remote state using your Terraform Cloud account. In order to complete this challenge you'll need the following: +Your task is to configure remote state using your HCP Terraform account. In order to complete this challenge you'll need the following: -1. A free Terraform Cloud account - log in at https://app.terraform.io
-2. A Terraform Cloud organization. You just created this in the previous exercise.
+1. A free HCP Terraform account - log in at https://app.terraform.io
+2. An HCP Terraform organization. You just created this in the previous exercise.
3. A workspace named **hashicat-aws** with its Execution Mode set to **Local** (not Remote)
4. A *user* token for authentication
5. A `remote_backend` config stored in your workspace
-Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in Terraform Cloud: +Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in HCP Terraform: https://app.terraform.io/app/settings/tokens @@ -44,7 +45,7 @@ Click on the **Create an API token** button. You can name the token whatever you Back in the Instruqt track, you need to add your API token to a file called "credentials.tfrc.json". Select the "Credentials File" tab and open the `/root/.terraform.d/credentials.tfrc.json` file directly. -Replace the part that says YOURTOKEN with what you copied from Terraform Cloud. Be sure to save the file. +Replace the part that says YOURTOKEN with what you copied from HCP Terraform. Be sure to save the file. Your token is now safely stored in the "credentials.tfrc.json" file. @@ -79,7 +80,7 @@ Please click on the second URL to test that your application is working. To see a valid value for the `catapp_ip` output, you sometimes might first need to run `terraform refresh`. -Additionally, you should see a new state file on the "States" tab of your Terraform Cloud workspace. +Additionally, you should see a new state file on the "States" tab of your HCP Terraform workspace. Note: If you ran terraform locally before configuring the remote backend, you might have a local state file called `terraform.tfstate`. If so, please delete it by running `rm terraform.tfstate`. diff --git a/instruqt-tracks/terraform-cloud-aws/03-oh-no-an-outage/check-workstation b/instruqt-tracks/hcp-terraform-aws/03-oh-no-an-outage/check-workstation similarity index 88% rename from instruqt-tracks/terraform-cloud-aws/03-oh-no-an-outage/check-workstation rename to instruqt-tracks/hcp-terraform-aws/03-oh-no-an-outage/check-workstation index ee166fd0..cc33c4dd 100755 --- a/instruqt-tracks/terraform-cloud-aws/03-oh-no-an-outage/check-workstation +++ b/instruqt-tracks/hcp-terraform-aws/03-oh-no-an-outage/check-workstation @@ -32,14 +32,14 @@ if [[ $EXIT_CODE -ne 0 ]]; then fail-message "Oops, we couldn't find the hashicat-aws workspace in your remote_backend.tf config file. Try again." fi -# Verify the organization exists in TFC +# Verify the organization exists in HCP Terraform curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then - fail-message "I couldn't find your organization, $ORG in Terraform Cloud. Make sure you created it and that it is configured in your remote_backend.tf file." + fail-message "I couldn't find your organization, $ORG in HCP Terraform. Make sure you created it and that it is configured in your remote_backend.tf file." fi -# Verify the workspace exists in TFC +# Verify the workspace exists in HCP Terraform curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/hashicat-aws | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then diff --git a/instruqt-tracks/terraform-cloud-aws/03-oh-no-an-outage/setup-workstation b/instruqt-tracks/hcp-terraform-aws/03-oh-no-an-outage/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/03-oh-no-an-outage/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/03-oh-no-an-outage/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/03-oh-no-an-outage/solve-workstation b/instruqt-tracks/hcp-terraform-aws/03-oh-no-an-outage/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/03-oh-no-an-outage/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/03-oh-no-an-outage/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/04-quiz-1/assignment.md b/instruqt-tracks/hcp-terraform-aws/04-quiz-1/assignment.md similarity index 95% rename from instruqt-tracks/terraform-cloud-aws/04-quiz-1/assignment.md rename to instruqt-tracks/hcp-terraform-aws/04-quiz-1/assignment.md index 8271af01..53210300 100755 --- a/instruqt-tracks/terraform-cloud-aws/04-quiz-1/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/04-quiz-1/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-1 +id: l4lgbernkgci type: quiz title: "\U0001F4DD Quiz 1 - Terraform Remote State" teaser: | diff --git a/instruqt-tracks/terraform-cloud-aws/05-protecting-sensitive-variables/assignment.md b/instruqt-tracks/hcp-terraform-aws/05-protecting-sensitive-variables/assignment.md similarity index 87% rename from instruqt-tracks/terraform-cloud-aws/05-protecting-sensitive-variables/assignment.md rename to instruqt-tracks/hcp-terraform-aws/05-protecting-sensitive-variables/assignment.md index d92fe9b0..405d25cb 100755 --- a/instruqt-tracks/terraform-cloud-aws/05-protecting-sensitive-variables/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/05-protecting-sensitive-variables/assignment.md @@ -1,5 +1,6 @@ --- slug: protecting-sensitive-variables +id: 9ukscksazffz type: challenge title: "\U0001F510 Securing Cloud Credentials" teaser: | @@ -12,7 +13,7 @@ notes: You get this email from William, the lead infosec admin at ACME:\n\n>\U0001F46E\U0001F3FF‍♂️ Hello junior admin, we ran a remote scan on your laptop last night and found some unsecured AWS access keys. We need you to move those off your laptop and store - them in Terraform Cloud by the end of the day." + them in HCP Terraform by the end of the day." - type: text contents: "\U0001F914 Did you know?\n\nThousands of API and cryptographic keys and secrets are leaking on GitHub every day!\n\nhttps://nakedsecurity.sophos.com/2019/03/25/thousands-of-coders-are-leaving-their-crown-jewels-exposed-on-github/\n\nWhen @@ -22,10 +23,10 @@ notes: - type: text contents: "\U0001F469\U0001F3FC‍\U0001F4BB Remote Execution, Local Code\n\nRemote Execution allows you to use the same Terraform commands that you're familiar with, - but the run and all your variables are safely stored in your Terraform Cloud workspace. + but the run and all your variables are safely stored in your HCP Terraform workspace. This can be helpful when you're upgrading tools that were originally written for - Terraform Open Source.\n\nWith Remote Execution your Terraform code is still stored - on your local machine and sent to the server each time you run." + Terraform Community Edition.\n\nWith Remote Execution your Terraform code is still + stored on your local machine and sent to the server each time you run." tabs: - title: Shell type: terminal @@ -37,7 +38,7 @@ tabs: difficulty: basic timelimit: 1800 --- -After the AWS credentials issue, the security team is tightening down access to your AWS account. API creds must now be secured as stored variables in Terraform Cloud. Your task is to find your AWS Access Key ID and Secret Access Key, and move them into your workspace as secure environment variables. +After the AWS credentials issue, the security team is tightening down access to your AWS account. API creds must now be secured as stored variables in HCP Terraform. Your task is to find your AWS Access Key ID and Secret Access Key, and move them into your workspace as secure environment variables. You'll store the Access Key ID as a plain text environment variable, and the Secret Access Key as a sensitive environment variable. You may also enter optional descriptions for each variable but this is not required to complete the challenge. @@ -59,12 +60,12 @@ Test your work by running `terraform init`. Your backend configuration will be u Next try running `terraform plan`. This will trigger what's known as a speculative plan. You can view this plan by copying the link from your "Shell" tab. This plan will not show up in your ordinary terraform runs that are triggered via the UI or API. A copy of the plan output will be streamed back to your "Shell" tab. -Run a terraform apply. This apply **will** show up if you navigate to the runs page in the Terraform Cloud UI. +Run a terraform apply. This apply **will** show up if you navigate to the runs page in the HCP Terraform UI. ``` terraform apply ``` -Congratulations, your AWS keys are now safely encrypted and stored in your Terraform Cloud workspace. +Congratulations, your AWS keys are now safely encrypted and stored in your HCP Terraform workspace. -You can continue to run `terraform plan` and `terraform apply` in your "Shell" tab, but the execution is now done in Terraform Cloud. \ No newline at end of file +You can continue to run `terraform plan` and `terraform apply` in your "Shell" tab, but the execution is now done in HCP Terraform. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-aws/05-protecting-sensitive-variables/check-workstation b/instruqt-tracks/hcp-terraform-aws/05-protecting-sensitive-variables/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/05-protecting-sensitive-variables/check-workstation rename to instruqt-tracks/hcp-terraform-aws/05-protecting-sensitive-variables/check-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/05-protecting-sensitive-variables/setup-workstation b/instruqt-tracks/hcp-terraform-aws/05-protecting-sensitive-variables/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/05-protecting-sensitive-variables/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/05-protecting-sensitive-variables/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/05-protecting-sensitive-variables/solve-workstation b/instruqt-tracks/hcp-terraform-aws/05-protecting-sensitive-variables/solve-workstation similarity index 98% rename from instruqt-tracks/terraform-cloud-aws/05-protecting-sensitive-variables/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/05-protecting-sensitive-variables/solve-workstation index 6da23b9b..9b2df4a2 100755 --- a/instruqt-tracks/terraform-cloud-aws/05-protecting-sensitive-variables/solve-workstation +++ b/instruqt-tracks/hcp-terraform-aws/05-protecting-sensitive-variables/solve-workstation @@ -134,7 +134,7 @@ cat <<-EOF > /tmp/region.json } EOF -# Create our variables in terraform cloud +# Create our variables in HCP Terraform curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/access_key.json https://app.terraform.io/api/v2/vars curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/secret_key.json https://app.terraform.io/api/v2/vars diff --git a/instruqt-tracks/terraform-cloud-aws/06-sharing-is-caring/assignment.md b/instruqt-tracks/hcp-terraform-aws/06-sharing-is-caring/assignment.md similarity index 76% rename from instruqt-tracks/terraform-cloud-aws/06-sharing-is-caring/assignment.md rename to instruqt-tracks/hcp-terraform-aws/06-sharing-is-caring/assignment.md index aa28f891..cebb9341 100755 --- a/instruqt-tracks/terraform-cloud-aws/06-sharing-is-caring/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/06-sharing-is-caring/assignment.md @@ -1,20 +1,21 @@ --- slug: sharing-is-caring +id: bnq09foddvdd type: challenge -title: "\U0001F91D\U0001F3FC Working with Teams in Terraform Cloud" +title: "\U0001F91D\U0001F3FC Working with Teams in HCP Terraform" teaser: | As your Terraform usage increases more team members want to collaborate. Let's add some teams and access rules for our organization. notes: - type: text contents: "A few months go by and you continue building more infrastructure with - Terraform Cloud. The devops team are all familiar with Terraform, but some members - are unable to access the Terraform Cloud organization. Your manager Hiro steps - into your cubicle with a clipboard in hand:\n\n>\U0001F468\U0001F3FB‍\U0001F4BC - Thank you for all your hard work on this Terraform project. I'd like to have read - access to your workspace, and we also need to get Lars and Aisha set up. Can you - please create some teams in our organization and add your co-workers to them?" + HCP Terraform. The devops team are all familiar with Terraform, but some members + are unable to access the HCP Terraform organization. Your manager Hiro steps into + your cubicle with a clipboard in hand:\n\n>\U0001F468\U0001F3FB‍\U0001F4BC Thank + you for all your hard work on this Terraform project. I'd like to have read access + to your workspace, and we also need to get Lars and Aisha set up. Can you please + create some teams in our organization and add your co-workers to them?" - type: text - contents: Teams and role-based access controls are a paid feature of Terraform Cloud. + contents: Teams and role-based access controls are a paid feature of HCP Terraform. Your instructor will need to upgrade your organization to a free trial in order to complete this challenge. tabs: @@ -28,7 +29,7 @@ tabs: difficulty: basic timelimit: 1800 --- -Teams and role-based access controls are a paid feature of Terraform Cloud. You will need to ensure your free trial has been activated from the earlier steps in order to complete this challenge. +Teams and role-based access controls are a paid feature of HCP Terraform. You will need to ensure your free trial has been activated from the earlier steps in order to complete this challenge. In this challenge you'll create teams with different levels of access to your workspace. You can then invite other users to collaborate on code changes, approvals, and Terraform runs. @@ -37,7 +38,7 @@ In this challenge you'll create teams with different levels of access to your wo 3. Add another team called **developers**. Developers should not have any organization-wide access.
4. Add a third team called **managers**. Managers should also not have any organization-wide access. -Next, assign access rights to the hashicat-aws workspace. Go into the **Team Access** page of the hashicat-aws workspace settings. If you don't see the Team Access link you might need to log out and back into Terraform Cloud. +Next, assign access rights to the hashicat-aws workspace. Go into the **Team Access** page of the hashicat-aws workspace settings. If you don't see the Team Access link you might need to log out and back into HCP Terraform. You'll want to click the "Add team and permissions" button and then click the "Select team" button next to each team to which you wish to grant workspace access. Then click the "Assign permissions" button for the desired permission. @@ -47,7 +48,7 @@ You'll want to click the "Add team and permissions" button and then click the "S Now that you have created teams and given them workspace access you can invite some users to your organization. Return to your **General Settings** for the organization, and select **Users**. Then click the "Invite a user" button. -If you're doing an instructor-led training, you can invite your instructor or a fellow student to your organization and place them on the developers team. You'll need the email address attached to their Terraform Cloud account to invite them. +If you're doing an instructor-led training, you can invite your instructor or a fellow student to your organization and place them on the developers team. You'll need the email address attached to their HCP Terraform account to invite them. Or you can use one of our example users below: diff --git a/instruqt-tracks/terraform-cloud-aws/06-sharing-is-caring/check-workstation b/instruqt-tracks/hcp-terraform-aws/06-sharing-is-caring/check-workstation similarity index 98% rename from instruqt-tracks/terraform-cloud-aws/06-sharing-is-caring/check-workstation rename to instruqt-tracks/hcp-terraform-aws/06-sharing-is-caring/check-workstation index 1cd4fd53..a3b8d708 100755 --- a/instruqt-tracks/terraform-cloud-aws/06-sharing-is-caring/check-workstation +++ b/instruqt-tracks/hcp-terraform-aws/06-sharing-is-caring/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-aws -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) # Get our team IDs. In the test environment these teams are pre-created. diff --git a/instruqt-tracks/terraform-cloud-aws/06-sharing-is-caring/setup-workstation b/instruqt-tracks/hcp-terraform-aws/06-sharing-is-caring/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/06-sharing-is-caring/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/06-sharing-is-caring/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/06-sharing-is-caring/solve-workstation b/instruqt-tracks/hcp-terraform-aws/06-sharing-is-caring/solve-workstation similarity index 96% rename from instruqt-tracks/terraform-cloud-aws/06-sharing-is-caring/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/06-sharing-is-caring/solve-workstation index 99a1694b..c6a52b2f 100755 --- a/instruqt-tracks/terraform-cloud-aws/06-sharing-is-caring/solve-workstation +++ b/instruqt-tracks/hcp-terraform-aws/06-sharing-is-caring/solve-workstation @@ -7,10 +7,10 @@ set -o history cd /root/hashicat-aws -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) -# These are the terraform cloud IDs of our fictional users. They are persistent and should not be deleted from TFC. +# These are the HCP Terraform IDs of our fictional users. They are persistent and should not be deleted from HCP Terraform. LARS_ID="user-V2Qt225RgAUzsWpz" HIRO_ID="user-egHewG9Z5eNa9u9m" AISHA_ID="user-CsBb94bVHrq7E5AA" diff --git a/instruqt-tracks/terraform-cloud-aws/07-quiz-2/assignment.md b/instruqt-tracks/hcp-terraform-aws/07-quiz-2/assignment.md similarity index 77% rename from instruqt-tracks/terraform-cloud-aws/07-quiz-2/assignment.md rename to instruqt-tracks/hcp-terraform-aws/07-quiz-2/assignment.md index 80a1f943..60c2f4dc 100755 --- a/instruqt-tracks/terraform-cloud-aws/07-quiz-2/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/07-quiz-2/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-2 +id: cyspiyfltakw type: quiz title: "\U0001F4DD Quiz 2 - Secure Variables" teaser: | @@ -10,8 +11,8 @@ notes: answers: - In your Terraform workspace - In a text file on your Desktop -- As encrypted environment variables in Terraform Cloud -- As Terraform variables in Terraform Cloud +- As encrypted environment variables in HCP Terraform +- As Terraform variables in HCP Terraform solution: - 2 difficulty: basic diff --git a/instruqt-tracks/terraform-cloud-aws/08-versioned-infrastructure/assignment.md b/instruqt-tracks/hcp-terraform-aws/08-versioned-infrastructure/assignment.md similarity index 88% rename from instruqt-tracks/terraform-cloud-aws/08-versioned-infrastructure/assignment.md rename to instruqt-tracks/hcp-terraform-aws/08-versioned-infrastructure/assignment.md index 892c9a72..6f309c44 100755 --- a/instruqt-tracks/terraform-cloud-aws/08-versioned-infrastructure/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/08-versioned-infrastructure/assignment.md @@ -1,9 +1,10 @@ --- slug: versioned-infrastructure +id: u80q33z53pnm type: challenge title: "\U0001F4BB Version Controlled Infrastructure" teaser: | - The team has grown and you need to implement code reviews. Terraform Cloud can connect to popular Version Control Systems to enable collaboration and testing. + The team has grown and you need to implement code reviews. HCP Terraform can connect to popular Version Control Systems to enable collaboration and testing. notes: - type: text contents: "As Terraform usage continues to increase across the organization, your @@ -15,7 +16,7 @@ notes: so we can implement code reviews?" - type: text contents: |- - Once you connect a VCS repository to your Terraform Cloud workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. + Once you connect a VCS repository to your HCP Terraform workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. In addition it allows you to enable features like code reviews, pull requests, and automated testing of your code. tabs: @@ -29,7 +30,7 @@ tabs: difficulty: basic timelimit: 1800 --- -In order for different teams and individuals to be able to work on the same Terraform code, you need to use a Version Control System (VCS). Terraform Cloud can integrate with the most popular VCS systems including GitHub, GitLab and Bitbucket. +In order for different teams and individuals to be able to work on the same Terraform code, you need to use a Version Control System (VCS). HCP Terraform can integrate with the most popular VCS systems including GitHub, GitLab and Bitbucket. You will need a free GitHub.com account for this challenge. We recommend using a personal account for training instead your work account (if you have one). @@ -80,7 +81,7 @@ https://github.com/settings/tokens Then click on **Personal Access Tokens** and generate a new token for the workshop. Give it at least the `repo | public_repo` scope, but you can grant the entire `repo` scope and other scopes if desired. You can delete the token afterwards if you like. This token enables you to push changes from your workstation to your public fork of the hashicat-aws repository. -Now that you have your own copy of the hashicat-aws repo to work with, follow the **Configuring GitHub Access** section of the TFC documentation to connect your GitHub account to your Terraform Organization. +Now that you have your own copy of the hashicat-aws repo to work with, follow the **Configuring GitHub Access** section of the HCP Terraform documentation to connect your GitHub account to your Terraform Organization. https://www.terraform.io/docs/cloud/vcs/github.html diff --git a/instruqt-tracks/terraform-cloud-aws/08-versioned-infrastructure/check-workstation b/instruqt-tracks/hcp-terraform-aws/08-versioned-infrastructure/check-workstation similarity index 90% rename from instruqt-tracks/terraform-cloud-aws/08-versioned-infrastructure/check-workstation rename to instruqt-tracks/hcp-terraform-aws/08-versioned-infrastructure/check-workstation index cc17995c..97ef114e 100755 --- a/instruqt-tracks/terraform-cloud-aws/08-versioned-infrastructure/check-workstation +++ b/instruqt-tracks/hcp-terraform-aws/08-versioned-infrastructure/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-aws -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) VCS_HASHICAT=$(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/hashicat-aws | jq -r '.data.attributes | .["vcs-repo"] | .identifier' | cut -f2 -d '/') diff --git a/instruqt-tracks/terraform-cloud-aws/08-versioned-infrastructure/setup-workstation b/instruqt-tracks/hcp-terraform-aws/08-versioned-infrastructure/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/08-versioned-infrastructure/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/08-versioned-infrastructure/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/08-versioned-infrastructure/solve-workstation b/instruqt-tracks/hcp-terraform-aws/08-versioned-infrastructure/solve-workstation similarity index 96% rename from instruqt-tracks/terraform-cloud-aws/08-versioned-infrastructure/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/08-versioned-infrastructure/solve-workstation index 154a9ad3..6c51c73a 100755 --- a/instruqt-tracks/terraform-cloud-aws/08-versioned-infrastructure/solve-workstation +++ b/instruqt-tracks/hcp-terraform-aws/08-versioned-infrastructure/solve-workstation @@ -7,7 +7,7 @@ set -o history cd /root/hashicat-aws -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) WORKSPACE_ID=$(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" https://app.terraform.io/api/v2/organizations/$ORG/workspaces/hashicat-aws | jq -r .data.id) diff --git a/instruqt-tracks/terraform-cloud-aws/09-vcs-collaboration/assignment.md b/instruqt-tracks/hcp-terraform-aws/09-vcs-collaboration/assignment.md similarity index 86% rename from instruqt-tracks/terraform-cloud-aws/09-vcs-collaboration/assignment.md rename to instruqt-tracks/hcp-terraform-aws/09-vcs-collaboration/assignment.md index b1088d76..38b3f3a7 100755 --- a/instruqt-tracks/terraform-cloud-aws/09-vcs-collaboration/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/09-vcs-collaboration/assignment.md @@ -1,9 +1,10 @@ --- slug: vcs-collaboration +id: nm5qavzp9umw type: challenge title: "\U0001F46C Collaborating with VCS" teaser: | - Now that you've got your version control system configured with Terraform Cloud, you can collaborate on changes to your Terraform built infrastructure. + Now that you've got your version control system configured with HCP Terraform, you can collaborate on changes to your Terraform built infrastructure. notes: - type: text contents: "The marketing team at ACME is running a special promotion next week and @@ -44,10 +45,10 @@ Welcome to ${PREFIX}'s app. Replace this text with your own. At the bottom of the screen, select the option that says "Create a new branch for this commit and start a pull request." Then, click the "Propose changes" button. Finally, submit a pull request by clicking the "Create pull request" button. -You'll notice that a check is run against your Terraform Cloud workspace. If you right-click the "Details" link of the check and then open the link in a new tab, you'll see the speculative plan that has been run in your workspace. +You'll notice that a check is run against your HCP Terraform workspace. If you right-click the "Details" link of the check and then open the link in a new tab, you'll see the speculative plan that has been run in your workspace. However, if you do open the link, you might need to refresh the GitHub page in order to see that the check has passed and so that the "Merge pull request" button will be enabled. Your partner should now review and approve the pull request. Or, if you're working alone you can review your own pull request and merge the changes. -Once you've merged your changes to the master branch, watch the Terraform run that starts in the Terraform Cloud UI. \ No newline at end of file +Once you've merged your changes to the master branch, watch the Terraform run that starts in the HCP Terraform UI. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-aws/09-vcs-collaboration/check-workstation b/instruqt-tracks/hcp-terraform-aws/09-vcs-collaboration/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/09-vcs-collaboration/check-workstation rename to instruqt-tracks/hcp-terraform-aws/09-vcs-collaboration/check-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/09-vcs-collaboration/setup-workstation b/instruqt-tracks/hcp-terraform-aws/09-vcs-collaboration/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/09-vcs-collaboration/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/09-vcs-collaboration/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/09-vcs-collaboration/solve-workstation b/instruqt-tracks/hcp-terraform-aws/09-vcs-collaboration/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/09-vcs-collaboration/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/09-vcs-collaboration/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/10-controlling-costs/assignment.md b/instruqt-tracks/hcp-terraform-aws/10-controlling-costs/assignment.md similarity index 80% rename from instruqt-tracks/terraform-cloud-aws/10-controlling-costs/assignment.md rename to instruqt-tracks/hcp-terraform-aws/10-controlling-costs/assignment.md index adbc7dce..ca75581a 100755 --- a/instruqt-tracks/terraform-cloud-aws/10-controlling-costs/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/10-controlling-costs/assignment.md @@ -1,6 +1,6 @@ --- slug: controlling-costs -id: dnfzjb1svs6k +id: eawwscfmhu42 type: challenge title: $ Controlling Costs with Cost Estimation teaser: | @@ -10,11 +10,11 @@ notes: contents: "Developers often run bigger VMs than are really necessary. Karen from finance pays you a visit to see if you can help:\n\n>\U0001F469\U0001F3FC‍\U0001F4BC\U0001F4C8 Hello sysadmin, we got a really big AWS bill last month and would like you to - inform developers using Terraform Cloud about estimated monthly costs of their - workspaces before they apply runs. Can you do that?" + inform developers using HCP Terraform about estimated monthly costs of their workspaces + before they apply runs. Can you do that?" - type: text contents: |- - You can learn more about Terraform Cloud's Cost Estimation feature with these links: + You can learn more about HCP Terraform's Cost Estimation feature with these links: * https://www.terraform.io/docs/cloud/cost-estimation/index.html * https://www.terraform.io/docs/enterprise/admin/integration.html#cost-estimation-integration @@ -37,15 +37,15 @@ tabs: difficulty: basic timelimit: 1800 --- -In this challenge you'll use Terraform Cloud's [Cost Estimation](https://www.terraform.io/docs/cloud/cost-estimation/index.html) feature to inform developers what the estimated monthly costs of their hashicat-aws workspace will be. +In this challenge you'll use HCP Terraform's [Cost Estimation](https://www.terraform.io/docs/cloud/cost-estimation/index.html) feature to inform developers what the estimated monthly costs of their hashicat-aws workspace will be. -Enabling Cost Estimation across all workspaces of an organization in Terraform Cloud is very easy. All you need to do is visit the "Settings | Cost estimation" page of your organization and check the "Enable Cost Estimation for all workspaces" checkbox. +Enabling Cost Estimation across all workspaces of an organization in HCP Terraform is very easy. All you need to do is visit the "Settings | Cost estimation" page of your organization and check the "Enable Cost Estimation for all workspaces" checkbox. Note that in Terraform Enterprise, you also need to provide cloud credentials for the clouds for which you want cost estimates. See this [link](https://www.terraform.io/docs/enterprise/admin/integration.html#cost-estimation-integration). To see a cost estimate for your hashicat-aws workspace, just trigger a new run in it by clicking the `Actions` drop-down and then selecting "Start a new plan". You will then see the estimated monthly cost of the workspace which is based on the costs of the `aws_instance` resource provisioned for the hashicat-aws workspace. -A complete list of AWS resources for which cost estimates are available in Terraform Cloud is [here](https://www.terraform.io/docs/cloud/cost-estimation/aws.html). +A complete list of AWS resources for which cost estimates are available in HCP Terraform is [here](https://www.terraform.io/docs/cloud/cost-estimation/aws.html). Finally, note that Sentinel's [tfrun](https://www.terraform.io/docs/cloud/sentinel/import/tfrun.html) import can be used to prevent runs from being applied when workspaces would incur excessive monthly costs or cost increases. diff --git a/instruqt-tracks/terraform-cloud-aws/10-controlling-costs/check-workstation b/instruqt-tracks/hcp-terraform-aws/10-controlling-costs/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/10-controlling-costs/check-workstation rename to instruqt-tracks/hcp-terraform-aws/10-controlling-costs/check-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/10-controlling-costs/setup-workstation b/instruqt-tracks/hcp-terraform-aws/10-controlling-costs/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/10-controlling-costs/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/10-controlling-costs/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/10-controlling-costs/solve-workstation b/instruqt-tracks/hcp-terraform-aws/10-controlling-costs/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/10-controlling-costs/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/10-controlling-costs/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/11-a-sentinel-stands-guard/assignment.md b/instruqt-tracks/hcp-terraform-aws/11-a-sentinel-stands-guard/assignment.md similarity index 97% rename from instruqt-tracks/terraform-cloud-aws/11-a-sentinel-stands-guard/assignment.md rename to instruqt-tracks/hcp-terraform-aws/11-a-sentinel-stands-guard/assignment.md index 15e0b8f7..af6c2819 100755 --- a/instruqt-tracks/terraform-cloud-aws/11-a-sentinel-stands-guard/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/11-a-sentinel-stands-guard/assignment.md @@ -1,6 +1,6 @@ --- slug: a-sentinel-stands-guard -id: hbfiys5uxsig +id: oqo9lrxivmfu type: challenge title: "\U0001F6E1️ Terraform Compliance with Sentinel" teaser: | @@ -44,7 +44,7 @@ Before moving on, please look at the [enforce-mandatory-tags](https://github.com 4. Under **Description** you can enter "Sentinel Policies for our AWS resources". -5. In the **More Options** menu set the **Policies Path** to `/aws`. This tells Terraform Cloud to use the AWS specific policies that are stored in the repo. +5. In the **More Options** menu set the **Policies Path** to `/aws`. This tells HCP Terraform to use the AWS specific policies that are stored in the repo. 6. Leave everything else at its default setting and click on the **Connect policy set** button at the bottom of the page. diff --git a/instruqt-tracks/terraform-cloud-aws/11-a-sentinel-stands-guard/check-workstation b/instruqt-tracks/hcp-terraform-aws/11-a-sentinel-stands-guard/check-workstation similarity index 90% rename from instruqt-tracks/terraform-cloud-aws/11-a-sentinel-stands-guard/check-workstation rename to instruqt-tracks/hcp-terraform-aws/11-a-sentinel-stands-guard/check-workstation index 2cc1e074..ad058fe8 100755 --- a/instruqt-tracks/terraform-cloud-aws/11-a-sentinel-stands-guard/check-workstation +++ b/instruqt-tracks/hcp-terraform-aws/11-a-sentinel-stands-guard/check-workstation @@ -7,7 +7,7 @@ if [ -f /tmp/skip-check ]; then exit 0 fi -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) curl -s --header "Authorization: Bearer $TOKEN" https://app.terraform.io/api/v2/organizations/$ORG/policy-sets | jq -r '.data | .[] | .attributes.name' | grep tfc-workshops-sentinel || fail-message "Uh oh, it looks like you haven't attached the tfc-workshops-sentinel policy set to your organization. Make sure you have forked the repo and added the policy set to your organization." diff --git a/instruqt-tracks/terraform-cloud-aws/11-a-sentinel-stands-guard/setup-workstation b/instruqt-tracks/hcp-terraform-aws/11-a-sentinel-stands-guard/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/11-a-sentinel-stands-guard/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/11-a-sentinel-stands-guard/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/11-a-sentinel-stands-guard/solve-workstation b/instruqt-tracks/hcp-terraform-aws/11-a-sentinel-stands-guard/solve-workstation similarity index 99% rename from instruqt-tracks/terraform-cloud-aws/11-a-sentinel-stands-guard/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/11-a-sentinel-stands-guard/solve-workstation index a8aafbdc..1f3a8edd 100755 --- a/instruqt-tracks/terraform-cloud-aws/11-a-sentinel-stands-guard/solve-workstation +++ b/instruqt-tracks/hcp-terraform-aws/11-a-sentinel-stands-guard/solve-workstation @@ -7,7 +7,7 @@ set -o history cd /root/hashicat-aws -# Get TFC ORG and TOKEN +# Get HCP Terraform ORG and TOKEN if [[ -f /root/skipconfig.json ]]; then ORG=$(jq -r .org < /root/skipconfig.json) TOKEN=$(jq -r .token < /root/skipconfig.json) diff --git a/instruqt-tracks/terraform-cloud-gcp/12-quiz-3/assignment.md b/instruqt-tracks/hcp-terraform-aws/12-quiz-3/assignment.md similarity index 96% rename from instruqt-tracks/terraform-cloud-gcp/12-quiz-3/assignment.md rename to instruqt-tracks/hcp-terraform-aws/12-quiz-3/assignment.md index 1d848507..8b135f1f 100755 --- a/instruqt-tracks/terraform-cloud-gcp/12-quiz-3/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/12-quiz-3/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-3 +id: xcgsb0ebliue type: quiz title: "\U0001F4DD Quiz 3 - Version Control and Terraform" teaser: | diff --git a/instruqt-tracks/terraform-cloud-aws/13-private-module-registry/assignment.md b/instruqt-tracks/hcp-terraform-aws/13-private-module-registry/assignment.md similarity index 79% rename from instruqt-tracks/terraform-cloud-aws/13-private-module-registry/assignment.md rename to instruqt-tracks/hcp-terraform-aws/13-private-module-registry/assignment.md index f11d84e7..807e15cb 100755 --- a/instruqt-tracks/terraform-cloud-aws/13-private-module-registry/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/13-private-module-registry/assignment.md @@ -1,10 +1,10 @@ --- slug: private-module-registry -id: cdvfxemjfqqs +id: chxhhmy1pwyz type: challenge -title: "\U0001F4DA Private Module Registry" +title: "\U0001F4DA Terraform Private Registry" teaser: | - Some of your users want a simple way to deploy S3 buckets. Enter the Private Module Registry, in which you can store standard, re-usable Terraform code that others can use in their own workspaces. + Some of your users want a simple way to deploy S3 buckets. Enter the Terraform Private Registry, in which you can store standard, re-usable Terraform code that others can use in their own workspaces. notes: - type: text contents: "Most of the devops team is using Terraform to build and configure their @@ -24,20 +24,20 @@ tabs: difficulty: basic timelimit: 1800 --- -In this challenge you'll learn to use the Private Module Registry, which allows you to store and version re-usable modules of Terraform code. +In this challenge you'll learn to use the Terraform Private Registry, which allows you to store and version re-usable modules of Terraform code. Instead of writing this module from scratch you can copy the existing AWS s3-bucket module from the public Terraform registry. Visit this [URL](https://registry.terraform.io/modules/terraform-aws-modules/s3-bucket/aws) to view the s3-bucket module. Note the "Source Code" link that points at the GitHub repository for this module. Click on the Source URL. As you did in previous challenges, create your own fork of this repository with the "Fork" button. Make sure you uncheck `Copy the master branch only` at the bottom of the **Create a new fork** page on Github so your fork contains tags that are used for publishing modules. -Back in the Terraform Cloud UI, click on the "Registry" tab at the top of the page. Then click the "Publish" button and the "Module" button that appears beneath it. Click on the "GitHub" button and select the terraform-aws-s3-bucket repository that you just forked. +Back in the HCP Terraform UI, click on the "Registry" tab at the top of the page. Then click the "Publish" button and the "Module" button that appears beneath it. Click on the "GitHub" button and select the terraform-aws-s3-bucket repository that you just forked. Click on the "Publish module" button. After the module is completely published, please select version `2.8.0` of the module by clicking `Change` under **Version** in the upper left section of your screen. If `2.8.0` is not visible, refresh the page once as versions may take a moment to publish. -Create a new Terraform file called `s3-bucket.tf` in the hashicat-aws directory and use the module in this file to create a new S3 bucket for Gaurav. You can copy the module creation code from the "Usage Instructions" section of the module's page in your Private Module Registry. +Create a new Terraform file called `s3-bucket.tf` in the hashicat-aws directory and use the module in this file to create a new S3 bucket for Gaurav. You can copy the module creation code from the "Usage Instructions" section of the module's page in your Terraform Private Registry. Click on the "Inputs" tab of the module. This indicates that you have to specify several module variables (inputs), but they are all marked as optional. We recommend that you set the `bucket_prefix` module variable (input) to the value of your `prefix` variable. The AWS provider will then generate a bucket name that starts with your prefix. diff --git a/instruqt-tracks/terraform-cloud-aws/13-private-module-registry/check-workstation b/instruqt-tracks/hcp-terraform-aws/13-private-module-registry/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/13-private-module-registry/check-workstation rename to instruqt-tracks/hcp-terraform-aws/13-private-module-registry/check-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/13-private-module-registry/setup-workstation b/instruqt-tracks/hcp-terraform-aws/13-private-module-registry/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/13-private-module-registry/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/13-private-module-registry/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/13-private-module-registry/solve-workstation b/instruqt-tracks/hcp-terraform-aws/13-private-module-registry/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/13-private-module-registry/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/13-private-module-registry/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/14-api-driven-workflows/assignment.md b/instruqt-tracks/hcp-terraform-aws/14-api-driven-workflows/assignment.md similarity index 76% rename from instruqt-tracks/terraform-cloud-aws/14-api-driven-workflows/assignment.md rename to instruqt-tracks/hcp-terraform-aws/14-api-driven-workflows/assignment.md index 0e07989b..6e54f3da 100755 --- a/instruqt-tracks/terraform-cloud-aws/14-api-driven-workflows/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/14-api-driven-workflows/assignment.md @@ -1,22 +1,22 @@ --- slug: api-driven-workflows -id: zlxyo7b8sjwh +id: bfc5bt7kjqhb type: challenge title: "\U0001F517 API Driven Workflows" teaser: | - Terraform Cloud has a fully featured RESTful API that you can use to integrate with external systems. Where we're going, we don't need a GUI! + HCP Terraform has a fully featured RESTful API that you can use to integrate with external systems. Where we're going, we don't need a GUI! notes: - type: text - contents: "You've mostly been using the Terraform Cloud Web UI and command line - interface (CLI) to build infrastructure. The devops team needs to integrate with - their CI/CD tool via the API. Lars sends you a chat message:\n\n>\U0001F468\U0001F3FB‍\U0001F9B2 + contents: "You've mostly been using the HCP Terraform Web UI and command line interface + (CLI) to build infrastructure. The devops team needs to integrate with their CI/CD + tool via the API. Lars sends you a chat message:\n\n>\U0001F468\U0001F3FB‍\U0001F9B2 Hey senior sysadmin, we have this new continuous integration tool that the developers are using to test their application code. I'd like you to test some API calls - to our Terraform Cloud organization and workspaces. Can you please take a look - at this and learn how the API works?" + to our HCP Terraform organization and workspaces. Can you please take a look at + this and learn how the API works?" - type: text contents: |- - Feeling stuck? Remember that the Terraform Cloud docs contain examples for all API endpoints: + Feeling stuck? Remember that the HCP Terraform docs contain examples for all API endpoints: https://www.terraform.io/docs/cloud/api/workspace-variables.html#create-a-variable https://www.terraform.io/docs/cloud/api/run.html#create-a-run - type: text @@ -41,7 +41,7 @@ tabs: difficulty: basic timelimit: 1800 --- -In the final challenge you'll directly interact with the Terraform Cloud API. Terraform Cloud has a rich API that lets you do everything you can do in the GUI and more. Intermediate and advanced users utilize the API to create complex integrations that work with external systems. +In the final challenge you'll directly interact with the HCP Terraform API. HCP Terraform has a rich API that lets you do everything you can do in the GUI and more. Intermediate and advanced users utilize the API to create complex integrations that work with external systems. Your goal is to configure three variables in the hashicat-aws workspace and then trigger a Terraform run using only the API. The three variables you need to configure are: - `placeholder` An image placeholder URL. Examples: placekitten.com, placedog.net, picsum.photos diff --git a/instruqt-tracks/terraform-cloud-aws/14-api-driven-workflows/check-workstation b/instruqt-tracks/hcp-terraform-aws/14-api-driven-workflows/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/14-api-driven-workflows/check-workstation rename to instruqt-tracks/hcp-terraform-aws/14-api-driven-workflows/check-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/14-api-driven-workflows/setup-workstation b/instruqt-tracks/hcp-terraform-aws/14-api-driven-workflows/setup-workstation similarity index 91% rename from instruqt-tracks/terraform-cloud-aws/14-api-driven-workflows/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/14-api-driven-workflows/setup-workstation index bb9699a7..95a245eb 100755 --- a/instruqt-tracks/terraform-cloud-aws/14-api-driven-workflows/setup-workstation +++ b/instruqt-tracks/hcp-terraform-aws/14-api-driven-workflows/setup-workstation @@ -29,7 +29,7 @@ cat <<-EOF > /root/hashicat-aws/json/apply.json "data": { "attributes": { "is-destroy":false, - "message": "Terraform Cloud API is Magic! 🦄 🌈 🧙‍♂️" + "message": "HCP Terraform API is Magic! 🦄 🌈 🧙‍♂️" }, "type":"runs", "relationships": { diff --git a/instruqt-tracks/terraform-cloud-aws/14-api-driven-workflows/solve-workstation b/instruqt-tracks/hcp-terraform-aws/14-api-driven-workflows/solve-workstation similarity index 98% rename from instruqt-tracks/terraform-cloud-aws/14-api-driven-workflows/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/14-api-driven-workflows/solve-workstation index 37f5e0fd..faf1486d 100755 --- a/instruqt-tracks/terraform-cloud-aws/14-api-driven-workflows/solve-workstation +++ b/instruqt-tracks/hcp-terraform-aws/14-api-driven-workflows/solve-workstation @@ -65,7 +65,7 @@ cat <<-EOF > /tmp/width.json } EOF -# Create our variables in terraform cloud +# Create our variables in HCP Terraform curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/placeholder.json https://app.terraform.io/api/v2/workspaces/$WORKSPACE_ID/vars curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/height.json https://app.terraform.io/api/v2/workspaces/$WORKSPACE_ID/vars diff --git a/instruqt-tracks/hcp-terraform-aws/15-quiz-4/assignment.md b/instruqt-tracks/hcp-terraform-aws/15-quiz-4/assignment.md new file mode 100755 index 00000000..775b4a1b --- /dev/null +++ b/instruqt-tracks/hcp-terraform-aws/15-quiz-4/assignment.md @@ -0,0 +1,20 @@ +--- +slug: quiz-4 +id: tyjatqeuagsr +type: quiz +title: "\U0001F4DD Quiz 4 - Terraform Private Registry" +teaser: | + A quiz about the Terraform Private Registry +notes: +- type: text + contents: "\U0001F431‍\U0001F4BB Congratulations! You've been promoted to HCP Terraform + Ninja." +answers: +- "True" +- "False" +solution: +- 1 +difficulty: basic +timelimit: 1800 +--- +The Terraform Terraform Private Registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-cloud-aws/16-this-is-the-end/assignment.md b/instruqt-tracks/hcp-terraform-aws/16-this-is-the-end/assignment.md similarity index 85% rename from instruqt-tracks/terraform-cloud-aws/16-this-is-the-end/assignment.md rename to instruqt-tracks/hcp-terraform-aws/16-this-is-the-end/assignment.md index fcfb86f9..c04aabf7 100755 --- a/instruqt-tracks/terraform-cloud-aws/16-this-is-the-end/assignment.md +++ b/instruqt-tracks/hcp-terraform-aws/16-this-is-the-end/assignment.md @@ -1,6 +1,6 @@ --- slug: this-is-the-end -id: v132xlm0hvhi +id: hxmknh1bxbfz type: challenge title: "\U0001F469\U0001F3FB‍\U0001F52C Open Lab" teaser: | @@ -19,6 +19,6 @@ tabs: difficulty: basic timelimit: 1800 --- -Congratulations, you've learned all the major features of Terraform Cloud. +Congratulations, you've learned all the major features of HCP Terraform. You can continue to build and experiment with Terraform, or simply click the Check button to complete the track. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-aws/16-this-is-the-end/check-workstation b/instruqt-tracks/hcp-terraform-aws/16-this-is-the-end/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/16-this-is-the-end/check-workstation rename to instruqt-tracks/hcp-terraform-aws/16-this-is-the-end/check-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/16-this-is-the-end/cleanup-workstation b/instruqt-tracks/hcp-terraform-aws/16-this-is-the-end/cleanup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/16-this-is-the-end/cleanup-workstation rename to instruqt-tracks/hcp-terraform-aws/16-this-is-the-end/cleanup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/16-this-is-the-end/setup-workstation b/instruqt-tracks/hcp-terraform-aws/16-this-is-the-end/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/16-this-is-the-end/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/16-this-is-the-end/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/16-this-is-the-end/solve-workstation b/instruqt-tracks/hcp-terraform-aws/16-this-is-the-end/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/16-this-is-the-end/solve-workstation rename to instruqt-tracks/hcp-terraform-aws/16-this-is-the-end/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws/Makefile b/instruqt-tracks/hcp-terraform-aws/Makefile similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/Makefile rename to instruqt-tracks/hcp-terraform-aws/Makefile diff --git a/instruqt-tracks/terraform-cloud-aws/assets/create_new_org.png b/instruqt-tracks/hcp-terraform-aws/assets/create_new_org.png similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/assets/create_new_org.png rename to instruqt-tracks/hcp-terraform-aws/assets/create_new_org.png diff --git a/instruqt-tracks/terraform-cloud-aws/config.yml b/instruqt-tracks/hcp-terraform-aws/config.yml similarity index 100% rename from instruqt-tracks/terraform-cloud-aws/config.yml rename to instruqt-tracks/hcp-terraform-aws/config.yml diff --git a/instruqt-tracks/terraform-cloud-aws/track.yml b/instruqt-tracks/hcp-terraform-aws/track.yml similarity index 79% rename from instruqt-tracks/terraform-cloud-aws/track.yml rename to instruqt-tracks/hcp-terraform-aws/track.yml index 08ccd0d0..8d743a06 100755 --- a/instruqt-tracks/terraform-cloud-aws/track.yml +++ b/instruqt-tracks/hcp-terraform-aws/track.yml @@ -2,37 +2,41 @@ # SPDX-License-Identifier: MPL-2.0 slug: terraform-cloud-aws -id: 2hgi8e9hftli -title: Terraform Cloud with AWS +title: HCP Terraform with AWS teaser: | Join the ACME devops team on their journey to fully automated provisioning with AWS Cloud. description: |- Work with the devops team at Acme Inc. as they go from manual provisioning with Terraform to a fully automated devops workflow with code reviews, testing, and automated provisioning in AWS Cloud. This workshop covers the following topics: - * Terraform Open Source - * Terraform Cloud + * Terraform Community Edition + * HCP Terraform * Remote State * Secure Variable Storage * Version Control Integration * Role-based Access Controls * Sentinel Security Policies * Collaboration on Changes - * Private Module Registry + * Terraform Private Registry * API Driven Workflows icon: https://storage.googleapis.com/instruqt-hashicorp-tracks/logo/terraform.png tags: -- terraform -- aws - cloud - enterprise +- aws +- terraform owner: hashicorp developers: - thomas@hashicorp.com - randy.keener@hashicorp.com -- gilberto@hashicorp.com - swalker@hashicorp.com +- jenna.wong@hashicorp.com show_timer: true +idle_timeout: 3000 +timelimit: 14400 lab_config: overlay: false width: 25 position: right + sidebar_enabled: true + feedback_recap_enabled: true + loadingMessages: true \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-aws/track_scripts/setup-workstation b/instruqt-tracks/hcp-terraform-aws/track_scripts/setup-workstation similarity index 94% rename from instruqt-tracks/terraform-cloud-aws/track_scripts/setup-workstation rename to instruqt-tracks/hcp-terraform-aws/track_scripts/setup-workstation index 9ccbf5d5..4a2ba00a 100755 --- a/instruqt-tracks/terraform-cloud-aws/track_scripts/setup-workstation +++ b/instruqt-tracks/hcp-terraform-aws/track_scripts/setup-workstation @@ -45,18 +45,18 @@ echo "******************************************************************" echo "* Skip to Challenge Configuration Script" echo "******************************************************************" echo -echo "This script will set up your Terraform Cloud token and organization" +echo "This script will set up your HCP Terraform token and organization" echo "configuration. Once that is done you may use the 'skip to challenge'" echo "feature of Instruqt to fast-forward to a particular point in the" echo "training." echo -echo "Please enter your Terraform Cloud organization name." +echo "Please enter your HCP Terraform organization name." read ORG echo echo "Please enter your workspace name." read WORKSPACE echo -echo "Please enter your Terraform Cloud user token." +echo "Please enter your HCP Terraform user token." read TOKEN echo echo "Please enter your GitHub user ID." diff --git a/instruqt-tracks/terraform-cloud-azure-v2/01-setup-our-environment/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/01-setup-our-environment/assignment.md similarity index 96% rename from instruqt-tracks/terraform-cloud-azure-v2/01-setup-our-environment/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/01-setup-our-environment/assignment.md index 557ee825..808c60b3 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/01-setup-our-environment/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/01-setup-our-environment/assignment.md @@ -1,5 +1,6 @@ --- slug: setup-our-environment +id: a5c1ykjye7aq type: challenge title: | Getting Started - Explore the lab @@ -84,7 +85,7 @@ In your workstation, there are two folders where you interact during the exercis 1. The hashicat-azure folder contains Terraform code for the application deployment. -2. The terraform-cloud folder provides utility code to set up your Terraform Cloud resources. +2. The hcp-terraform folder provides utility code to set up your HCP Terraform resources. --- There are other folders that contain utilities for the exercises. We exclude them from the Code Editor for simplicity. You do not need to edit anything in them. diff --git a/instruqt-tracks/terraform-cloud-azure-v2/01-setup-our-environment/check-workstation b/instruqt-tracks/hcp-terraform-azure-v2/01-setup-our-environment/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/01-setup-our-environment/check-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/01-setup-our-environment/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/01-setup-our-environment/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/01-setup-our-environment/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/01-setup-our-environment/setup-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/01-setup-our-environment/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/01-setup-our-environment/solve-workstation b/instruqt-tracks/hcp-terraform-azure-v2/01-setup-our-environment/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/01-setup-our-environment/solve-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/01-setup-our-environment/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/assignment.md similarity index 75% rename from instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/assignment.md index 7f794e89..243c77c5 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/assignment.md @@ -1,15 +1,16 @@ --- -slug: terraform-cloud-setup +slug: hcp-terraform-setup +id: 6ghxkztgt2vl type: challenge -title: Terraform Cloud Setup +title: HCP Terraform Setup teaser: | - Customize your Terraform Cloud resources. + Customize your HCP Terraform resources. notes: - type: text contents: | - With your Terraform Cloud account + With your HCP Terraform account - 1. Create a new Terraform Cloud Organization + 1. Create a new HCP Terraform Organization 2. Enable 14-day Trial Plan of "Plus Tier" features 3. Create a new personal account token 4. Create a dedicated workspace @@ -130,17 +131,17 @@ w { } -The first step to begin work with your deployment tasks is to set up your Terraform Cloud resources. +The first step to begin work with your deployment tasks is to set up your HCP Terraform resources. -1- Terraform Cloud Organization +1- HCP Terraform Organization === -- Sign up for a free Terraform Cloud account at https://app.terraform.io/signup/account. +- Sign up for a free HCP Terraform account at https://app.terraform.io/signup/account. - If you already have an account, sign in with your existing credentials. -2- Terraform Cloud Trial Plan +2- HCP Terraform Trial Plan === -- Click on [THIS](https://app.terraform.io/app/organizations/new?trial=workshop2023) link to create a Terraform Cloud Organization for this workshop. +- Click on [THIS](https://app.terraform.io/app/organizations/new?trial=workshop2023) link to create a HCP Terraform Organization for this workshop. - Use the Create organization & start 14 day trial button to enable "Plus Tier" features in your organization. Please see the image below. @@ -148,15 +149,15 @@ The first step to begin work with your deployment tasks is to set up your Terraf - If you have an existing account and already used a trial, please create a different organization and unlock the 14-day "Plus Tier" plan features. -3- Terraform Cloud Token +3- HCP Terraform Token === -- Use this [link](https://app.terraform.io/app/settings/tokens?source=terraform-login) to visit the User Settings-Tokens page in your Terraform Cloud account. +- Use this [link](https://app.terraform.io/app/settings/tokens?source=terraform-login) to visit the User Settings-Tokens page in your HCP Terraform account. - Use the Create API token button to generate a new **personal user token** to use in this workshop. -- Make sure to save your Terraform Cloud token. It will not be displayed again. +- Make sure to save your HCP Terraform token. It will not be displayed again. -- Move to the Terminal tab and store your Terraform Cloud Token locally with the following command: +- Move to the Terminal tab and store your HCP Terraform Token locally with the following command: ```bash terraform login @@ -164,33 +165,33 @@ terraform login ``` -4- Terraform Cloud Workspace +4- HCP Terraform Workspace === -Use local Terraform utility deployment code to create and configure a new Terraform Cloud Workspace. +Use local Terraform utility deployment code to create and configure a new HCP Terraform Workspace. -- Use the Code Editor tab and expand the terraform-cloud folder and open the file terraform.tfvars +- Use the Code Editor tab and expand the hcp-terraform folder and open the file terraform.tfvars -- Replace the `YOUR_ORGANIZATION` placeholder with your Terraform Cloud organization name. +- Replace the `YOUR_ORGANIZATION` placeholder with your HCP Terraform organization name. -- We default the name of your Terraform Cloud workspace to `hashicat-azure`. You can choose a different name at this time. +- We default the name of your HCP Terraform workspace to `hashicat-azure`. You can choose a different name at this time. --- - Move to the Terminal tab and execute the following commands: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform init # The following creates a workspace in -# Terraform Cloud called "hashicat-azure" +# HCP Terraform called "hashicat-azure" # ... unless the default is changed. terraform apply -auto-approve ``` -- On the Terraform Cloud portal, navigate to Projects & workspaces-hashicat-azure-Settings-General +- On the HCP Terraform portal, navigate to Projects & workspaces-hashicat-azure-Settings-General - Note that your new workspace is configured for Local execution. diff --git a/instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/check-workstation b/instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/check-workstation similarity index 71% rename from instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/check-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/check-workstation index bc75ced8..2d147e90 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/check-workstation +++ b/instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/check-workstation @@ -2,7 +2,7 @@ # Copyright (c) HashiCorp, Inc. set -euxvo pipefail -# Get TFC token and organization +# Get HCP Terraform token and organization # these jq commands may fail, that's okay, we account for # that later, so temporarily disable set -e set +e @@ -21,12 +21,12 @@ if [ -f /tmp/skip-check ]; then fi # Save the Terraform Org and Workspace name as env variables -export ORG=$(grep organization /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) -export WORKSPACE=$(grep workspace /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) +export ORG=$(grep organization /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) +export WORKSPACE=$(grep workspace /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) # Do we have a valid token if [ -z "${TFC_TOKEN}" ]; then - fail-message "Unable to find Terraform Cloud Token, please double-check the \"3- Terraform Cloud Token\" steps" + fail-message "Unable to find HCP Terraform Token, please double-check the \"3- HCP Terraform Token\" steps" exit 1 fi @@ -46,12 +46,12 @@ if [ "${STATUS}" != "200" ]; then cat /tmp/.out.json echo "End of output" fi - fail-message "Terraform Cloud Token is not valid, please double-check the \"3- Terraform Cloud Token\" steps" + fail-message "HCP Terraform Token is not valid, please double-check the \"3- HCP Terraform Token\" steps" exit 1 fi rm -f /tmp/.out.json -echo "We have a valid TFC token" +echo "We have a valid HCP Terraform token" # Is it a trial organization STATUS=$(curl \ @@ -70,20 +70,20 @@ if [ "${STATUS}" != "200" ]; then cat /tmp/.out.json echo "End of output" fi - fail-message "Unable to get TFC Organization Subscription, please go back to the \"2- Terraform Cloud Trial Plan\" steps" + fail-message "Unable to get HCP Terraform Organization Subscription, please go back to the \"2- HCP Terraform Trial Plan\" steps" exit 1 fi TRIAL=$(jq -r '.included[].attributes."identifier"' /tmp/.out.json 2>/dev/null) if [ -z "${TRIAL}" ]; then echo ".included[].attributes.\"identifier\" was empty" - fail-message "Unable to determine TFC Trial Status, please go back to the \"2- Terraform Cloud Trial Plan\" steps" + fail-message "Unable to determine HCP Terraform Trial Status, please go back to the \"2- HCP Terraform Trial Plan\" steps" exit 1 fi if [ "${TRIAL}" != "trial" ]; then echo ".included[].attributes.\"identifier\" was '${TRIAL}' not 'trial'" - fail-message "Your TFC Organization is not a trial one, please go back to the \"2- Terraform Cloud Trial Plan\" step" + fail-message "Your HCP Terraform Organization is not a trial one, please go back to the \"2- HCP Terraform Trial Plan\" step" exit 1 fi diff --git a/instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/cleanup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/cleanup-workstation similarity index 76% rename from instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/cleanup-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/cleanup-workstation index 29026858..db0a8c0f 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/cleanup-workstation +++ b/instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/cleanup-workstation @@ -2,8 +2,8 @@ # Copyright (c) HashiCorp, Inc. set -euxvo pipefail -ORG=$(grep organization /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) -WORKSPACE=$(grep workspace /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) +ORG=$(grep organization /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) +WORKSPACE=$(grep workspace /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) agent variable set TF_ORG $ORG agent variable set TF_WORKSPACE $WORKSPACE @@ -14,9 +14,9 @@ cd /root/hashicat-$CLOUD_ENV sed -i "s/YOUR_ORGANIZATION/$ORG/g" remote_backend.tf sed -i "s/YOUR_WORKSPACE/$WORKSPACE/g" remote_backend.tf -cp /root/terraform-cloud/terraform.tfvars.example /root/terraform-cloud/terraform.tfvars +cp /root/hcp-terraform/terraform.tfvars.example /root/hcp-terraform/terraform.tfvars -cd /root/terraform-cloud +cd /root/hcp-terraform sed -i "s/YOUR_ORGANIZATION/$ORG/g" terraform.tfvars sed -i "s/YOUR_WORKSPACE/$WORKSPACE/g" terraform.tfvars diff --git a/instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/setup-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/solve-workstation b/instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/02-terraform-cloud-setup/solve-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/02-hcp-terraform-setup/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/03-centralize-deployments/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/03-centralize-deployments/assignment.md similarity index 83% rename from instruqt-tracks/terraform-cloud-azure-v2/03-centralize-deployments/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/03-centralize-deployments/assignment.md index 8c760f40..2aebded0 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/03-centralize-deployments/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/03-centralize-deployments/assignment.md @@ -1,9 +1,10 @@ --- slug: centralize-deployments +id: bslinqhkhgjd type: challenge title: Safekeeping Your Terraform State teaser: | - Deploy your application to Azure. Execute Terraform commands locally and use Terraform Cloud to store and synchronize Terraform State. + Deploy your application to Azure. Execute Terraform commands locally and use HCP Terraform to store and synchronize Terraform State. notes: - type: text contents: |- @@ -11,7 +12,7 @@ notes: Senior operations admin, Robin, shows up at your desk. - > Last night we had trouble rebuilding the website because the deployment code is locked on Lars' laptop, and Lars is on vacation. Can you configure Terraform Cloud to deploy the application and centralize its dependencies? + > Last night we had trouble rebuilding the website because the deployment code is locked on Lars' laptop, and Lars is on vacation. Can you configure HCP Terraform to deploy the application and centralize its dependencies? tabs: - title: Code Editor type: service @@ -92,11 +93,11 @@ timelimit: 1800 display: inline-block; } -The objective of this challenge is to configure remote state using your Terraform Cloud account. +The objective of this challenge is to configure remote state using your HCP Terraform account. - When you perform the deployment of the `hashicat-azure` application, the Terraform code executes on your workstation. -- We want to centralize and secure the associated Terraform state of your deployment in your Terraform Cloud workspace. +- We want to centralize and secure the associated Terraform state of your deployment in your HCP Terraform workspace. 1- Configure the workspace backend === @@ -136,15 +137,15 @@ terraform apply -refresh-only - When completed, you can follow the `catapp_ip`, or the `catapp_url`, link to open the application instance. -3- See results in Terraform Cloud +3- See results in HCP Terraform === -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and click on Outputs. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and click on Outputs. Please see the example image below. ![Workspace Outputs](../assets/workspace_outputs.png) - From the user interface, you can follow the `catapp_ip`, or the `catapp_url`, link to open the application instance. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-States. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-States. Please see the example image below. ![Workspace State](../assets/workspace_state.png) @@ -156,6 +157,6 @@ Well done! - You successfully deployed the `hashicat-azure` application. -- The Terraform state is stored securely in the Terraform Cloud platform. +- The Terraform state is stored securely in the HCP Terraform platform. Report to Robin by clicking the Check button for this challenge. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-azure-v2/03-centralize-deployments/check-workstation b/instruqt-tracks/hcp-terraform-azure-v2/03-centralize-deployments/check-workstation similarity index 87% rename from instruqt-tracks/terraform-cloud-azure-v2/03-centralize-deployments/check-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/03-centralize-deployments/check-workstation index 9e4bfea2..4a049fde 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/03-centralize-deployments/check-workstation +++ b/instruqt-tracks/hcp-terraform-azure-v2/03-centralize-deployments/check-workstation @@ -31,14 +31,14 @@ if [[ $EXIT_CODE -ne 0 ]]; then fail-message "Oops, we couldn't find the hashicat-$CLOUD_ENV workspace in your remote_backend.tf config file. Try again." fi -# Verify the organization exists in TFC? +# Verify the organization exists in HCP Terraform? curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then - fail-message "I couldn't find your organization, $ORG in Terraform Cloud. Make sure you created it and that it is configured in your remote_backend.tf file." + fail-message "I couldn't find your organization, $ORG in HCP Terraform. Make sure you created it and that it is configured in your remote_backend.tf file." fi -# Verify the workspace exists in TFC? +# Verify the workspace exists in HCP Terraform? curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/$WORKSPACE | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then diff --git a/instruqt-tracks/terraform-cloud-azure-v2/03-centralize-deployments/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/03-centralize-deployments/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/03-centralize-deployments/setup-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/03-centralize-deployments/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/03-centralize-deployments/solve-workstation b/instruqt-tracks/hcp-terraform-azure-v2/03-centralize-deployments/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/03-centralize-deployments/solve-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/03-centralize-deployments/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/04-quiz-1/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/04-quiz-1/assignment.md similarity index 95% rename from instruqt-tracks/terraform-cloud-azure-v2/04-quiz-1/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/04-quiz-1/assignment.md index 8df0f835..94ca77e7 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/04-quiz-1/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/04-quiz-1/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-1 +id: yjkbxbh6bzaq type: quiz title: Quiz 1 - Terraform Remote State teaser: | diff --git a/instruqt-tracks/terraform-cloud-azure-v2/05-protecting-sensitive-variables/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/05-protecting-sensitive-variables/assignment.md similarity index 73% rename from instruqt-tracks/terraform-cloud-azure-v2/05-protecting-sensitive-variables/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/05-protecting-sensitive-variables/assignment.md index d8f04ac5..c61690e4 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/05-protecting-sensitive-variables/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/05-protecting-sensitive-variables/assignment.md @@ -1,9 +1,10 @@ --- slug: protecting-sensitive-variables +id: 762ayetyfhy1 type: challenge title: Workspace Variables and Securing Cloud Credentials teaser: | - The security team is concerned about protecting access to Cloud credentials. Create global variable sets, deployment variables and store them securely in Terraform Cloud. + The security team is concerned about protecting access to Cloud credentials. Create global variable sets, deployment variables and store them securely in HCP Terraform. notes: - type: text contents: |- @@ -11,14 +12,14 @@ notes: You get the following request from William, the lead infosec admin at ACME: - > Can you set the Terraform Cloud Organization to manage sensitive Cloud Principal credentials? Once that is done, we can rotate those items regularly, and we can remove any hard-coded Cloud credentials from our deployments. + > Can you set the HCP Terraform Organization to manage sensitive Cloud Principal credentials? Once that is done, we can rotate those items regularly, and we can remove any hard-coded Cloud credentials from our deployments. - type: text contents: |- Thousands of API and cryptographic keys and secrets are leaking on GitHub every day! https://nakedsecurity.sophos.com/2019/03/25/thousands-of-coders-are-leaving-their-crown-jewels-exposed-on-github/ - When you store your API keys as sensitive variables, they are encrypted and stored in the Terraform Cloud platform. These keys are only decrypted in trusted, secure containers that run Terraform commands. + When you store your API keys as sensitive variables, they are encrypted and stored in the HCP Terraform platform. These keys are only decrypted in trusted, secure containers that run Terraform commands. tabs: - title: Code Editor type: service @@ -107,12 +108,12 @@ The security team is looking to mitigate the exposure of Cloud credentials. - The second task is to set up the non-sensitive, deployment-specific variables for the `hashicat-azure` application with Workspace Variables. --- -- The utility code for Terraform Cloud is pre-configured with examples for Variable Sets and Workspace Variables. +- The utility code for HCP Terraform is pre-configured with examples for Variable Sets and Workspace Variables. -- In the Terminal tab, update your Terraform Cloud resources with Variable Sets and Workspace Variables: +- In the Terminal tab, update your HCP Terraform resources with Variable Sets and Workspace Variables: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create global variable set with Cloud # credentials marked as sensitive @@ -147,11 +148,11 @@ echo "ARM_TENANT_ID = $ARM_TENANT_ID" ``` -- Use the Code Editor tab and expand the terraform-cloud folder. Observe the updates to the file main.tf +- Use the Code Editor tab and expand the hcp-terraform folder. Observe the updates to the file main.tf - Note the update to configure a Variable Set named Cloud Crendentials (lines 51-121). These variables are sensitive and reflect a dedicated Azure Service Principal to support infrastructure deployments. -- On the Terraform Cloud portal, navigate to Settings-Variable sets. Please see the example image below. +- On the HCP Terraform portal, navigate to Settings-Variable sets. Please see the example image below. ![Variable Sets](../assets/variable_sets.png) @@ -159,7 +160,7 @@ echo "ARM_TENANT_ID = $ARM_TENANT_ID" --- -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Variable Sets Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Variable Sets Please see the example image below. ![Variable Sets Linked in Workspace](../assets/variable_sets_link.png) @@ -169,19 +170,19 @@ echo "ARM_TENANT_ID = $ARM_TENANT_ID" === Workspace variables always overwrite variables from variable sets that have the same type and the same key. -- Use the Code Editor tab and expand the terraform-cloud folder. Observe the updates to the file main.tf +- Use the Code Editor tab and expand the hcp-terraform folder. Observe the updates to the file main.tf - The application uses two Terraform variables, `prefix` and `location`. We configure these workspace-specific variables (lines 122-145). These are _not_ sensitive and relate to the properties that you can define in your TERRAFORM code for deployment. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Workspace Variables. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Workspace Variables. Please see the example image below. ![Workspace Variables](../assets/workspace_variables.png) 3- Test Remote Execution === -Your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace is updated to **Remote Execution** mode. This means plans and applies occur on Terraform Cloud's infrastructure. You and your team have the ability to review and collaborate on runs within the app. +Your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace is updated to **Remote Execution** mode. This means plans and applies occur on HCP Terraform's infrastructure. You and your team have the ability to review and collaborate on runs within the app. -- Use the Code Editor tab and expand the terraform-cloud folder. Observe the updates to the file main.tf in lines 38-50. +- Use the Code Editor tab and expand the hcp-terraform folder. Observe the updates to the file main.tf in lines 38-50. - Test your application deployment with REMOTE execution. In the Terminal tab, perform an update to your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace. @@ -189,15 +190,15 @@ Your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspa cd /root/hashicat-azure # Use local apply command option to trigger -# a remote run in Terraform Cloud +# a remote run in HCP Terraform terraform apply -auto-approve ``` -- The `terraform apply` command triggers your plans and applies to occur on Terraform Cloud's infrastructure. +- The `terraform apply` command triggers your plans and applies to occur on HCP Terraform's infrastructure. -- To examine the results, on the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview. Please see the example image below. +- To examine the results, on the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview. Please see the example image below. ![Remote Execution](../assets/remote_execution.gif) @@ -208,6 +209,6 @@ Congratulations, you have accomplished a number of things: 2. Your deployment properties are configured with your workspace-specific variables. -3. Terraform Cloud manages your application deployments and you can trigger work remotely. +3. HCP Terraform manages your application deployments and you can trigger work remotely. -Report back to William with the Check button below once you've successfully deployed the hashicat application via Terraform Cloud. \ No newline at end of file +Report back to William with the Check button below once you've successfully deployed the hashicat application via HCP Terraform. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-azure-v2/05-protecting-sensitive-variables/check-workstation b/instruqt-tracks/hcp-terraform-azure-v2/05-protecting-sensitive-variables/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/05-protecting-sensitive-variables/check-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/05-protecting-sensitive-variables/check-workstation diff --git a/instruqt-tracks/hcp-terraform-azure-v2/05-protecting-sensitive-variables/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/05-protecting-sensitive-variables/setup-workstation new file mode 100755 index 00000000..9703ca7c --- /dev/null +++ b/instruqt-tracks/hcp-terraform-azure-v2/05-protecting-sensitive-variables/setup-workstation @@ -0,0 +1,25 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/hcp-terraform + +# Replace the entire file. We need to do this +# in this manner as to replacethe code block for +# the TFE workspace. We can manipulate the code with +# bash but this is more straight forward. +cp -f /root/hcp-terraform/exercises/05-main.tf /root/hcp-terraform/main.tf + +# Aggregate the required content +# main.tf +cat /root/hcp-terraform/exercises/05-env_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/05-tf_vars_main.tf >> /root/hcp-terraform/main.tf + +# variables.tf +cat /root/hcp-terraform/exercises/05-env_vars_variables.tf >> /root/hcp-terraform/variables.tf +cat /root/hcp-terraform/exercises/05-tf_vars_variables.tf >> /root/hcp-terraform/variables.tf + +# Re-use deployment variables so we can upload to HCP Terraform +cat /root/hashicat-$CLOUD_ENV/terraform.tfvars >> /root/hcp-terraform/terraform.tfvars + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-azure-v2/05-protecting-sensitive-variables/solve-workstation b/instruqt-tracks/hcp-terraform-azure-v2/05-protecting-sensitive-variables/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/05-protecting-sensitive-variables/solve-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/05-protecting-sensitive-variables/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/06-team-management/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/06-team-management/assignment.md similarity index 65% rename from instruqt-tracks/terraform-cloud-azure-v2/06-team-management/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/06-team-management/assignment.md index 8697b36c..f7648297 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/06-team-management/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/06-team-management/assignment.md @@ -1,17 +1,18 @@ --- slug: team-management +id: gab6xarysibu type: challenge -title: Working with Teams in Terraform Cloud +title: Working with Teams in HCP Terraform teaser: | As your Terraform usage increases more team members want to collaborate. Create teams, add users and implement granular permissions. notes: - type: text contents: |- - A few months go by and you continue building more infrastructure with Terraform Cloud. The devops team are all familiar with Terraform, but some members are unable to access the Terraform Cloud organization. + A few months go by and you continue building more infrastructure with HCP Terraform. The devops team are all familiar with Terraform, but some members are unable to access the HCP Terraform organization. Product manager Hiro requests the following: - > Can you please configure teams in our Terraform Cloud organization? Please grant me read access to your workspace. And also, setup admin access for Lars and development privileges to Aisha. + > Can you please configure teams in our HCP Terraform organization? Please grant me read access to your workspace. And also, setup admin access for Lars and development privileges to Aisha. tabs: - title: Code Editor type: service @@ -103,12 +104,12 @@ The purpose of this challenge is to create an access strategy with Team Manageme - With Team Management you can invite other users to collaborate on code changes, approvals, and Terraform runs. -- If you are on an instructor-led training, you can invite your fellow students to your Terraform Cloud organization and place them on your teams, using the email address attached to their Terraform Cloud account. +- If you are on an instructor-led training, you can invite your fellow students to your HCP Terraform organization and place them on your teams, using the email address attached to their HCP Terraform account. - In the Terminal tab, configure your teams, workspace permissions and users with the following: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create admin, developers and # managers teams. @@ -123,19 +124,19 @@ terraform apply -auto-approve === Teams let you group users into specific categories to enable finer grained access control policies. -- On the Terraform Cloud portal, navigate to Settings-Teams. Please see the example image below. +- On the HCP Terraform portal, navigate to Settings-Teams. Please see the example image below. ![Organization Teams](../assets/org_teams.png) - Review each of your teams and their assigned Organization Access. -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the assignment for your teams (Lines 146-189). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the assignment for your teams (Lines 146-189). 2- Workspace Permissions === -Terraform Cloud's access model is team-based. There are two ways to choose which permissions a given team has on a workspace: fixed permission sets, and custom permissions. +HCP Terraform's access model is team-based. There are two ways to choose which permissions a given team has on a workspace: fixed permission sets, and custom permissions. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Team Access. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Team Access. Please see the example image below. ![Workspace Teams](../assets/workspace_teams.png) @@ -143,28 +144,28 @@ Terraform Cloud's access model is team-based. There are two ways to choose which - Use Edit Permissions to review the permissions assigned for each team on the hashicat-azure workspace. -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the association between the hashicat-azure workspace and your teams (Lines 190-247). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the association between the hashicat-azure workspace and your teams (Lines 190-247). 3- Assign Users === User accounts belong to individual people. Each user can be part of one or more teams, which are granted permissions on workspaces within an organization. A user can be a member of multiple organizations. -- On the Terraform Cloud portal, navigate to Settings-Users-Invited. Please see the example image below. +- On the HCP Terraform portal, navigate to Settings-Users-Invited. Please see the example image below. ![Users Invited](../assets/users_invited.png) -- When a user sends you an invitation to join an existing Terraform Cloud organization, the email includes a sign-up link. +- When a user sends you an invitation to join an existing HCP Terraform organization, the email includes a sign-up link. -- With existing accounts, you can automatically join that organization and can begin using Terraform Cloud. +- With existing accounts, you can automatically join that organization and can begin using HCP Terraform. -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review how users invited to an organization and added to a team (Lines 248-289). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review how users invited to an organization and added to a team (Lines 248-289). --- Excellent work. You have a foundational access strategy for teams, workspaces and users. You can write the following notes in your report: -1. Team Management is configured with appropriate assignments for TFC admins, developers and managers. The next step is to configure SSO and map TFC teams to ACME teams. Then we need to configure 2FA to comply with corporate security policies. +1. Team Management is configured with appropriate assignments for HCP Terraform admins, developers and managers. The next step is to configure SSO and map HCP Terraform teams to ACME teams. Then we need to configure 2FA to comply with corporate security policies. -2. Workspace permission grants are aligned with TFC Teams based on specific roles, not individual identities. +2. Workspace permission grants are aligned with HCP Terraform Teams based on specific roles, not individual identities. 3. Users can join the organization with their corporate account. Admins can grant team privileges manually or through automated utilities triggered by onboarding workflows. diff --git a/instruqt-tracks/terraform-cloud-aws-v2/06-team-management/check-workstation b/instruqt-tracks/hcp-terraform-azure-v2/06-team-management/check-workstation similarity index 98% rename from instruqt-tracks/terraform-cloud-aws-v2/06-team-management/check-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/06-team-management/check-workstation index e5d9be16..e000d8bc 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/06-team-management/check-workstation +++ b/instruqt-tracks/hcp-terraform-azure-v2/06-team-management/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-$CLOUD_ENV -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) # Get our team IDs. In the test environment these teams are pre-created. diff --git a/instruqt-tracks/hcp-terraform-azure-v2/06-team-management/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/06-team-management/setup-workstation new file mode 100755 index 00000000..91a450c6 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-azure-v2/06-team-management/setup-workstation @@ -0,0 +1,10 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/hcp-terraform + +cat /root/hcp-terraform/exercises/06-main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/06-variables.tf >> /root/hcp-terraform/variables.tf + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-azure-v2/06-team-management/solve-workstation b/instruqt-tracks/hcp-terraform-azure-v2/06-team-management/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/06-team-management/solve-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/06-team-management/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/07-quiz-2/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/07-quiz-2/assignment.md similarity index 77% rename from instruqt-tracks/terraform-cloud-azure-v2/07-quiz-2/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/07-quiz-2/assignment.md index b9d358d1..ca0c2647 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/07-quiz-2/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/07-quiz-2/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-2 +id: 7cgrivpgipgy type: quiz title: Quiz 2 - Secure Variables teaser: | @@ -11,8 +12,8 @@ notes: answers: - In your Terraform workspace - In a text file on your Desktop -- As encrypted environment variables in Terraform Cloud -- As Terraform variables in Terraform Cloud +- As encrypted environment variables in HCP Terraform +- As Terraform variables in HCP Terraform solution: - 2 difficulty: basic diff --git a/instruqt-tracks/terraform-cloud-azure-v2/08-versioned-infrastructure/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/08-versioned-infrastructure/assignment.md similarity index 78% rename from instruqt-tracks/terraform-cloud-azure-v2/08-versioned-infrastructure/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/08-versioned-infrastructure/assignment.md index 4a44f492..b668173d 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/08-versioned-infrastructure/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/08-versioned-infrastructure/assignment.md @@ -1,9 +1,10 @@ --- slug: versioned-infrastructure +id: kwlpxdgt4u4a type: challenge title: Version Controlled Infrastructure teaser: | - The team has grown and you need to implement code reviews. Terraform Cloud can connect to popular Version Control Systems to enable collaboration and testing. + The team has grown and you need to implement code reviews. HCP Terraform can connect to popular Version Control Systems to enable collaboration and testing. notes: - type: text contents: |- @@ -17,7 +18,7 @@ notes: process. Can you add the `hashicat-azure` application code to a GitHub repository so we can implement code reviews? - type: text contents: |- - Once you connect a VCS repository to your Terraform Cloud workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. + Once you connect a VCS repository to your HCP Terraform workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. In addition it allows you to enable features like code reviews, pull requests, and automated testing of your code. tabs: @@ -147,7 +148,7 @@ The objectives of this challenge are to configure a VCS integration for your org 1- Create a GitHub Repository === -To trigger Terraform Cloud runs from changes to VCS, you first need to create a new repository in your personal GitHub account. +To trigger HCP Terraform runs from changes to VCS, you first need to create a new repository in your personal GitHub account. - In the Terminal tab run the helper script to cache your GitHub credentials temporarily. @@ -208,26 +209,26 @@ echo "" ![Populated Git Repo](../assets/git_repo_populated.png) -3- Integrate Terraform Cloud VCS +3- Integrate HCP Terraform VCS === Version control (VCS) integration allows you to manually approve changes or automate a run as soon as a pull request is merged into a repository branch. -- In the Terminal tab, create a VCS connection to your GitHub organization, and link the Terraform Cloud workspace to your GitHub repository. +- In the Terminal tab, create a VCS connection to your GitHub organization, and link the HCP Terraform workspace to your GitHub repository. ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create an OAuth Client as the connection -# for your TFC organization and the +# for your HCP Terraform organization and the # GitHub provider terraform apply -auto-approve ``` -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the OAuth Client configuration (Lines 315-328). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the OAuth Client configuration (Lines 315-328). -- On the Terraform Cloud portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Settings-Version Control-Providers +- On the HCP Terraform portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Settings-Version Control-Providers Please see the example image below. @@ -237,9 +238,9 @@ Please see the example image below. --- -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the VCS Configuration for your `[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]` workspace (Lines 69-72). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the VCS Configuration for your `[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]` workspace (Lines 69-72). -- On the Terraform Cloud portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Version Control. Please see the example image below. +- On the HCP Terraform portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Version Control. Please see the example image below. ![Workspace VCS](../assets/workspace_vcs.png) @@ -255,9 +256,9 @@ echo "" ``` -- Terraform Cloud registers webhooks with your VCS provider, then automatically queues a Terraform run whenever new commits are merged to the branch of the linked repository. +- HCP Terraform registers webhooks with your VCS provider, then automatically queues a Terraform run whenever new commits are merged to the branch of the linked repository. -- When GitHub registers a `Pull Request` or a `Push` succesfully to the repository, there is a secure sequence to push the code and trigger a run in Terraform Cloud. +- When GitHub registers a `Pull Request` or a `Push` succesfully to the repository, there is a secure sequence to push the code and trigger a run in HCP Terraform. --- Congratulations, you have implemented a significant milestone to support code reviews. diff --git a/instruqt-tracks/terraform-cloud-azure-v2/08-versioned-infrastructure/check-workstation b/instruqt-tracks/hcp-terraform-azure-v2/08-versioned-infrastructure/check-workstation similarity index 90% rename from instruqt-tracks/terraform-cloud-azure-v2/08-versioned-infrastructure/check-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/08-versioned-infrastructure/check-workstation index c5ec92e2..214d4923 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/08-versioned-infrastructure/check-workstation +++ b/instruqt-tracks/hcp-terraform-azure-v2/08-versioned-infrastructure/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-$CLOUD_ENV -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) VCS_HASHICAT=$(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/$WORKSPACE | jq -r '.data.attributes | .["vcs-repo"] | .identifier' | cut -f2 -d '/') diff --git a/instruqt-tracks/hcp-terraform-azure-v2/08-versioned-infrastructure/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/08-versioned-infrastructure/setup-workstation new file mode 100755 index 00000000..f3e3230b --- /dev/null +++ b/instruqt-tracks/hcp-terraform-azure-v2/08-versioned-infrastructure/setup-workstation @@ -0,0 +1,23 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/terraform-github + +# Replace the entire file. We need to do this +# in this manner as to replacethe code block for +# the TFE workspace. We can manipulate the code with +# bash but this is more straight forward. +cp -f /root/hcp-terraform/exercises/08-main.tf /root/hcp-terraform/main.tf + +# Aggregate the required content +# main.tf +cat /root/hcp-terraform/exercises/05-env_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/05-tf_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-users_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-github_main.tf >> /root/hcp-terraform/main.tf + +# Aggregate with new variables +cat /root/hcp-terraform/exercises/08-variables.tf >> /root/hcp-terraform/variables.tf + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-azure-v2/08-versioned-infrastructure/solve-workstation b/instruqt-tracks/hcp-terraform-azure-v2/08-versioned-infrastructure/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/08-versioned-infrastructure/solve-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/08-versioned-infrastructure/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/09-vcs-collaboration/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/09-vcs-collaboration/assignment.md similarity index 80% rename from instruqt-tracks/terraform-cloud-azure-v2/09-vcs-collaboration/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/09-vcs-collaboration/assignment.md index 35f8169a..e432f136 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/09-vcs-collaboration/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/09-vcs-collaboration/assignment.md @@ -1,9 +1,10 @@ --- slug: vcs-collaboration +id: ovzo6fc0uywv type: challenge title: Collaborating with VCS teaser: | - Now that you've got your version control system configured with Terraform Cloud, you can collaborate on changes to your application deployment. + Now that you've got your version control system configured with HCP Terraform, you can collaborate on changes to your application deployment. notes: - type: text contents: |- @@ -156,7 +157,7 @@ On your Web browser, open the page to your GitHub repository.
4 - Confirm merge
5 - Delete branch -- When you execute the Create pull request step, ensure you explore the Terraform Cloud Check to review the changes to the deployment. For reference, please see the example image below. +- When you execute the Create pull request step, ensure you explore the HCP Terraform Check to review the changes to the deployment. For reference, please see the example image below. ![Git PR Check](../assets/git_pr_check.png) @@ -181,21 +182,21 @@ git pull origin main ``` -3- See results in Terraform Cloud +3- See results in HCP Terraform === -With an approved pull request/merge request to a branch, any Terraform Cloud workspaces based on that branch will perform a speculative plan with the contents of the request and links to the results on the PR's page. +With an approved pull request/merge request to a branch, any HCP Terraform workspaces based on that branch will perform a speculative plan with the contents of the request and links to the results on the PR's page. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and note that a new deployment is occuring. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and note that a new deployment is occuring. Please see the example image below. ![Workspace PR Merge](../assets/workspace_pr_merge.png) -- When a workspace is linked to a VCS repository, Terraform Cloud runs start automatically when you merge or commit changes to version control. +- When a workspace is linked to a VCS repository, HCP Terraform runs start automatically when you merge or commit changes to version control. --- Amazing! You have enabled your team to collaborate using GitHub as a VCS provider. You can report the following: -- With approved commits to a branch, any Terraform Cloud workspaces based on that branch will begin a Terraform run. +- With approved commits to a branch, any HCP Terraform workspaces based on that branch will begin a Terraform run. -- Although any contributor to the repository can see the status indicators for pull request plans, only members of your Terraform Cloud organization with permission to read runs for the affected workspaces can click through and view the complete plan output. +- Although any contributor to the repository can see the status indicators for pull request plans, only members of your HCP Terraform organization with permission to read runs for the affected workspaces can click through and view the complete plan output. Report to Lars with the Check button below and let him know that the updates are working through the VCS workflow process. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-azure-v2/09-vcs-collaboration/check-workstation b/instruqt-tracks/hcp-terraform-azure-v2/09-vcs-collaboration/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/09-vcs-collaboration/check-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/09-vcs-collaboration/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/09-vcs-collaboration/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/09-vcs-collaboration/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/09-vcs-collaboration/setup-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/09-vcs-collaboration/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/09-vcs-collaboration/solve-workstation b/instruqt-tracks/hcp-terraform-azure-v2/09-vcs-collaboration/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/09-vcs-collaboration/solve-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/09-vcs-collaboration/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/10-policy-as-code/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/10-policy-as-code/assignment.md similarity index 86% rename from instruqt-tracks/terraform-cloud-azure-v2/10-policy-as-code/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/10-policy-as-code/assignment.md index 6ae8884d..35d38b93 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/10-policy-as-code/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/10-policy-as-code/assignment.md @@ -1,5 +1,6 @@ --- slug: policy-as-code +id: ukfi9purdqsx type: challenge title: Terraform Compliance with Sentinel teaser: | @@ -105,7 +106,7 @@ In this challenge we use HashiCorp Sentinel policies to enforce two rules: To get started, use the Terminal tab to create a new Policy Set and assign it to the hashicat-azure workspace with the following: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create a policy set from VCS. # 2. Enable automated policy as code @@ -132,23 +133,23 @@ For a comprehensive collection of Sentinel Policies, please visit this [HashiCor 2- Policy Sets === -In our environment, Terraform Cloud looks at your GitHub repo that contains the Sentinel Policy Sets to use in your own organization. +In our environment, HCP Terraform looks at your GitHub repo that contains the Sentinel Policy Sets to use in your own organization. -- Use the Code Editor tab and expand the terraform-cloud folder. +- Use the Code Editor tab and expand the hcp-terraform folder. - Note the changes to the file main.tf which automatically configures a Policy Set and links it to the hashicat-azure workspace (lines 329-348). -- On the Terraform Cloud portal, navigate to [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]]-Settings-Policy Sets and explore the Hashicat-Social policy set. +- On the HCP Terraform portal, navigate to [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]]-Settings-Policy Sets and explore the Hashicat-Social policy set. ![Organization Policy Set](../assets/org_policy_sets.png) -- To view the results of this new configuration, issue a manual run in the Terraform Cloud UI. +- To view the results of this new configuration, issue a manual run in the HCP Terraform UI. -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-azure, choose + New run and Start run. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-azure, choose + New run and Start run. Please see the example image below. ![Workspace New Run](../assets/workspace_new_run.png) -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-azure-Runs and, on the Current Run note the application of the policies AFTER the plan, but BEFORE the apply phase. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-azure-Runs and, on the Current Run note the application of the policies AFTER the plan, but BEFORE the apply phase. Please see the example image below. ![Workspace Policy Checks](../assets/workspace_policy_checks.png) @@ -158,7 +159,7 @@ In our environment, Terraform Cloud looks at your GitHub repo that contains the - Use the Code Editor tab to expand the hashicat-azure folder, and browse the policies folder. -- Read the sentinel.hcl file. This file is used to direct Terraform Cloud how to apply these policies. +- Read the sentinel.hcl file. This file is used to direct HCP Terraform how to apply these policies. - Notice that the policies are set to **soft-mandatory** - which implies that failed policies stop the run, and someone with authority can override a failed policy check during a run. Other possible values are: diff --git a/instruqt-tracks/terraform-cloud-aws-v2/10-policy-as-code/check-workstation b/instruqt-tracks/hcp-terraform-azure-v2/10-policy-as-code/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-aws-v2/10-policy-as-code/check-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/10-policy-as-code/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/10-policy-as-code/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/10-policy-as-code/setup-workstation similarity index 88% rename from instruqt-tracks/terraform-cloud-gcp-v2/10-policy-as-code/setup-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/10-policy-as-code/setup-workstation index 5193e753..5e96021f 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/10-policy-as-code/setup-workstation +++ b/instruqt-tracks/hcp-terraform-azure-v2/10-policy-as-code/setup-workstation @@ -4,7 +4,7 @@ set -e cd /root/hashicat-$CLOUD_ENV git pull origin main -cat /root/terraform-cloud/exercises/11-main.tf >> /root/terraform-cloud/main.tf +cat /root/hcp-terraform/exercises/11-main.tf >> /root/hcp-terraform/main.tf TFC_TOKEN=$(jq -r '.credentials."app.terraform.io".token' /root/.terraform.d/credentials.tfrc.json 2>/dev/null) TF_ORG=$(agent variable get TF_ORG) diff --git a/instruqt-tracks/terraform-cloud-azure-v2/10-policy-as-code/solve-workstation b/instruqt-tracks/hcp-terraform-azure-v2/10-policy-as-code/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/10-policy-as-code/solve-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/10-policy-as-code/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/11-quiz-3/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/11-quiz-3/assignment.md similarity index 96% rename from instruqt-tracks/terraform-cloud-gcp-v2/11-quiz-3/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/11-quiz-3/assignment.md index 7d09b5f7..afdca600 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/11-quiz-3/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/11-quiz-3/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-3 +id: xj4i15jfomaq type: quiz title: Quiz 3 - Version Control and Terraform teaser: | diff --git a/instruqt-tracks/terraform-cloud-azure-v2/12-private-module-registry/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/12-private-module-registry/assignment.md similarity index 86% rename from instruqt-tracks/terraform-cloud-azure-v2/12-private-module-registry/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/12-private-module-registry/assignment.md index 7711b7bf..6196c99e 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/12-private-module-registry/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/12-private-module-registry/assignment.md @@ -1,9 +1,10 @@ --- slug: private-module-registry +id: rayhhyqjlgp4 type: challenge -title: Private Module Registry +title: Terraform Private Registry teaser: | - Some of your users want a simple way to deploy Azure Backup Storage for our application. Use the Private Module Registry, in which you can store standard, re-usable Terraform code for IaC consumers. + Some of your users want a simple way to deploy Azure Backup Storage for our application. Use the Terraform Private Registry, in which you can store standard, re-usable Terraform code for IaC consumers. notes: - type: text contents: |- @@ -116,7 +117,7 @@ timelimit: 1800 } -In this challenge you'll learn to use the Private Module Registry, which allows you to store and version re-usable modules of Terraform code. +In this challenge you'll learn to use the Terraform Private Registry, which allows you to store and version re-usable modules of Terraform code. 1- Terraform Registry === @@ -154,7 +155,7 @@ git push origin main ``` -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-azure-Runs and, on the Current Run note the application of the new **module**. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-azure-Runs and, on the Current Run note the application of the new **module**. Please see the example image below. ![Workspace Public Module](../assets/workspace_public_module.png) @@ -162,7 +163,7 @@ This provides an adequate technical solution. However, Gaurav and the developmen 2- Private Registry === -Terraform Cloud's private registry works similarly to the public Terraform Registry and helps you share Terraform providers and Terraform modules across your organization. +HCP Terraform's private registry works similarly to the public Terraform Registry and helps you share Terraform providers and Terraform modules across your organization. - Visit the [Terraform Azure Backup Storage](https://registry.terraform.io/modules/ravensorb/azure-backup/azurerm/latest) page on the Terraform Registry to work with the module. Complete the following steps: @@ -183,7 +184,7 @@ The private registry uses your configured Version Control System (VCS) integrati To implement this private module in your Private Registry do the following: -- Use the Code Editor tab and expand the terraform-cloud folder. +- Use the Code Editor tab and expand the hcp-terraform folder. - Open the file terraform.tfvars.tf and ensure value for the variable `module_repo` matches your own module repository name. @@ -192,7 +193,7 @@ To implement this private module in your Private Registry do the following: - Use the Terminal tab to register your Private Registry with the following command: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform apply -auto-approve @@ -200,11 +201,11 @@ terraform apply -auto-approve --- -Your Terraform modules can be imported to your Private Module Registry using a workflow method in the Terraform Cloud portal. +Your Terraform modules can be imported to your Terraform Private Registry using a workflow method in the HCP Terraform portal. You do not need to perform these actions with the selected Terraform module, but you can experiment with your own Terraform modules. -- On the Terraform Cloud portal, navigate to Registry-Modules and use Publish. +- On the HCP Terraform portal, navigate to Registry-Modules and use Publish. - Follow the workflow: @@ -225,7 +226,7 @@ The main difference between these two methods is automation. In this workshop, w - Use the Code Editor tab and expand the hashicat-azure folder. -- Revise the `module "azure-backup"` code snippet in the file main.tf and update with a reference to your Private Module registry. The code currently reads: +- Revise the `module "azure-backup"` code snippet in the file main.tf and update with a reference to your Terraform Private Registry. The code currently reads: ```bash module "azure-backup" { @@ -235,7 +236,7 @@ module "azure-backup" { } ``` -- Update the code with the example below. Notice the update to the module reference with your Terraform Cloud and your Organization name. +- Update the code with the example below. Notice the update to the module reference with your HCP Terraform and your Organization name. ```bash module "backupstorage" { @@ -258,7 +259,7 @@ git push origin main - The end result is the implementation of a private module that supports your decision criteria. -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-azure-Runs to view the effective changes. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-azure-Runs to view the effective changes. - For reference, please see the example image below. diff --git a/instruqt-tracks/terraform-cloud-azure-v2/12-private-module-registry/check-workstation b/instruqt-tracks/hcp-terraform-azure-v2/12-private-module-registry/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/12-private-module-registry/check-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/12-private-module-registry/check-workstation diff --git a/instruqt-tracks/hcp-terraform-azure-v2/12-private-module-registry/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/12-private-module-registry/setup-workstation new file mode 100755 index 00000000..368489c2 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-azure-v2/12-private-module-registry/setup-workstation @@ -0,0 +1,18 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/hcp-terraform + +cp -a /root/hashicat-$CLOUD_ENV/exercises/13-main.tf /root/hashicat-$CLOUD_ENV/main.tf + +sed -i "s/STORAGE_MODULE/azure-backup-storage/g" /root/hcp-terraform/exercises/13-main.tf +cat /root/hcp-terraform/exercises/13-main.tf >> /root/hcp-terraform/main.tf + +sed -i "s/STORAGE_MODULE/terraform-azurerm-azure-backup/g" /root/hcp-terraform/exercises/13-variables.tf +cat /root/hcp-terraform/exercises/13-variables.tf >> /root/hcp-terraform/variables.tf + +sed -i "s/STORAGE_MODULE/terraform-azurerm-azure-backup/g" /root/hcp-terraform/exercises/13-terraform.tfvars +cat /root/hcp-terraform/exercises/13-terraform.tfvars >> /root/hcp-terraform/terraform.tfvars + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-azure-v2/12-private-module-registry/solve-workstation b/instruqt-tracks/hcp-terraform-azure-v2/12-private-module-registry/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/12-private-module-registry/solve-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/12-private-module-registry/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/13-api-driven-workflows/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/13-api-driven-workflows/assignment.md similarity index 80% rename from instruqt-tracks/terraform-cloud-azure-v2/13-api-driven-workflows/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/13-api-driven-workflows/assignment.md index 1b6f2ea7..154ad4cd 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/13-api-driven-workflows/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/13-api-driven-workflows/assignment.md @@ -1,13 +1,14 @@ --- slug: api-driven-workflows +id: cxk54o6pdaav type: challenge title: API Driven Workflows teaser: | - Terraform Cloud has a fully featured RESTful API that you can use to integrate with external systems. + HCP Terraform has a fully featured RESTful API that you can use to integrate with external systems. notes: - type: text contents: |- - You've mostly been using the Terraform Cloud Web UI and command line + You've mostly been using the HCP Terraform Web UI and command line interface (CLI) to build infrastructure. The devops team needs to integrate with their CI/CD tool via the API. @@ -15,7 +16,7 @@ notes: > Hey Sysadmin, we have this new continuous integration tool that the developers are using to test their application code. I'd like you to test some API calls - to our Terraform Cloud organization and workspaces. Can you please take a look + to our HCP Terraform organization and workspaces. Can you please take a look at this and learn how the API works? tabs: - title: Code Editor @@ -120,19 +121,19 @@ timelimit: 1800 margin-left: 30px; } -In the final challenge you'll directly interact with the Terraform Cloud API. +In the final challenge you'll directly interact with the HCP Terraform API. -- Terraform Cloud has a rich API that lets you do everything you can do in the GUI and more. +- HCP Terraform has a rich API that lets you do everything you can do in the GUI and more. - Intermediate and advanced users utilize the API to create complex integrations that work with external systems. 1. API Subsets === -The Terraform Cloud API will continue to evolve, but we consider it stable for general use, and HashiCorp will maintain all stable API endpoints in a backwards compatible manner. +The HCP Terraform API will continue to evolve, but we consider it stable for general use, and HashiCorp will maintain all stable API endpoints in a backwards compatible manner. ### 1.1 HTTP API Core -This is the most straight-forward method to access the Terraform Cloud API. All requests must include the following: +This is the most straight-forward method to access the HCP Terraform API. All requests must include the following: Authentication All requests must be authenticated with a bearer token. @@ -174,7 +175,7 @@ Before planning an API integration, it is important to consider whether the [TFE It can't create or approve runs in response to arbitrary events, but it's a useful tool for managing your organizations, teams, and workspaces as code. - - In the workshop we assumed **producer** and **consumer** roles. The producer code is in the terraform-cloud folder as it helps create, read, update and delete the resources in Terraform Cloud. + - In the workshop we assumed **producer** and **consumer** roles. The producer code is in the hcp-terraform folder as it helps create, read, update and delete the resources in HCP Terraform. ### 1.3 CDK for Terraform @@ -211,7 +212,7 @@ curl -s \ ``` -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. ![API Create](../assets/api_create.png) @@ -250,7 +251,7 @@ curl \ ``` -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. ![API Update](../assets/api_update.png) @@ -270,13 +271,13 @@ curl \ ``` -- On the Terraform Cloud portal and reload your page. Please see the example image below. +- On the HCP Terraform portal and reload your page. Please see the example image below. ![API Delete](../assets/api_delete.png) 3. Automation with wrappers === -Terraform Cloud's main unit of organization is a workspace. A workspace is a collection of everything Terraform needs to run: a Terraform configuration (usually from a VCS repo), values for that configuration's variables, and state data to keep track of operations between runs. +HCP Terraform's main unit of organization is a workspace. A workspace is a collection of everything Terraform needs to run: a Terraform configuration (usually from a VCS repo), values for that configuration's variables, and state data to keep track of operations between runs. Automation of Terraform can come in various forms, and to varying degrees. The Vending Machine simulates how teams continue to run Terraform locally but use wrapper scripts to prepare a consistent working directory for Terraform to run in, while other teams run Terraform entirely within an orchestration tool such as Jenkins. @@ -292,9 +293,9 @@ bash vending_macheen.bash ``` - There is an assumption that the infrastructure deliverables are supported with tested and secure code modules. -- The workflow manager is responsible for picking the appropriate implementation of those modules and allocating Terraform Cloud resources. +- The workflow manager is responsible for picking the appropriate implementation of those modules and allocating HCP Terraform resources. -- On the Terraform Cloud portal, navigate to Projects & workspaces and pick Vending_Macheen to see your resources. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces and pick Vending_Macheen to see your resources. Please see the example image below. ![API Vending Macheen](../assets/api_vending_macheen.png) @@ -310,28 +311,28 @@ terraform destroy -auto-approve 4. Automation with CI/CD === -While Terraform Cloud offers version control system integrations, including GitHub, using CI/CD tasks in your workflow enables you to add status checks before or after Terraform Cloud remote runs are triggered, better adapting Terraform Cloud to your use case. +While HCP Terraform offers version control system integrations, including GitHub, using CI/CD tasks in your workflow enables you to add status checks before or after HCP Terraform remote runs are triggered, better adapting HCP Terraform to your use case. To illustrate, set up GitHub Actions for your deployment. - Use the Terminal tab to update your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace configuration. In this case, we are removing the VCS setup: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform apply -auto-approve ``` -- Create a secret to access Terraform Cloud from your GitHub deployment repo. +- Create a secret to access HCP Terraform from your GitHub deployment repo. ```bash # Move to /root/hashicat-azure which has # a proper .git and GitHub credentials cd /root/hashicat-azure -# Configure the TFC Token so Github Actions -# can interact with Terraform Cloud +# Configure the HCP Terraform Token so Github Actions +# can interact with HCP Terraform gh secret set TF_API_TOKEN \ --body "$TFC_TOKEN" @@ -358,15 +359,15 @@ git push -u origin main ![GitHub Actions TF Job](../assets/github_actions_tf_job.png) -- Expand and explore any of the job steps. This example showcases how the work is triggered from the CICD workflow, but the permissions for users, Cloud identity authorization, deployment policies and private module resources are all managed in Terraform Cloud. +- Expand and explore any of the job steps. This example showcases how the work is triggered from the CICD workflow, but the permissions for users, Cloud identity authorization, deployment policies and private module resources are all managed in HCP Terraform. --- Congratulations, Senior Cloud Admin. With this exercise we conclude that: -- Terraform Cloud provides a fundamental and secure API to manage its features. +- HCP Terraform provides a fundamental and secure API to manage its features. -- The [Terraform Cloud/Enterprise Provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs) meet most of our needs to support prescriptive workflows. +- The [HCP Terraform/Terraform Enterprise Provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs) meet most of our needs to support prescriptive workflows. - You can use the API endpoints to create your own CRUD operations wrappers to integrate into your workflows. diff --git a/instruqt-tracks/terraform-cloud-azure-v2/13-api-driven-workflows/check-workstation b/instruqt-tracks/hcp-terraform-azure-v2/13-api-driven-workflows/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/13-api-driven-workflows/check-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/13-api-driven-workflows/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/13-api-driven-workflows/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/13-api-driven-workflows/setup-workstation similarity index 54% rename from instruqt-tracks/terraform-cloud-gcp-v2/13-api-driven-workflows/setup-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/13-api-driven-workflows/setup-workstation index 5025b8c3..0c91a9d4 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/13-api-driven-workflows/setup-workstation +++ b/instruqt-tracks/hcp-terraform-azure-v2/13-api-driven-workflows/setup-workstation @@ -15,15 +15,15 @@ sed -i 's/terraform.yml/# terraform.yml/g' /root/hashicat-$CLOUD_ENV/.gitignore # in this manner as to replacethe code block for # the TFE workspace. We can manipulate the code with # bash but this is more straight forward. -cp /root/terraform-cloud/exercises/14-main.tf /root/terraform-cloud/main.tf +cp /root/hcp-terraform/exercises/14-main.tf /root/hcp-terraform/main.tf # Aggregate the required content # main.tf -cat /root/terraform-cloud/exercises/05-env_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/05-tf_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-users_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-github_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/11-main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/13-main.tf >> /root/terraform-cloud/main.tf +cat /root/hcp-terraform/exercises/05-env_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/05-tf_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-users_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-github_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/11-main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/13-main.tf >> /root/hcp-terraform/main.tf exit 0 diff --git a/instruqt-tracks/terraform-cloud-azure-v2/13-api-driven-workflows/solve-workstation b/instruqt-tracks/hcp-terraform-azure-v2/13-api-driven-workflows/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/13-api-driven-workflows/solve-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/13-api-driven-workflows/solve-workstation diff --git a/instruqt-tracks/hcp-terraform-azure-v2/14-quiz-4/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/14-quiz-4/assignment.md new file mode 100755 index 00000000..bdbc8ad7 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-azure-v2/14-quiz-4/assignment.md @@ -0,0 +1,19 @@ +--- +slug: quiz-4 +id: i0sfn0mfycg0 +type: quiz +title: Quiz 4 - Terraform Private Registry +teaser: | + A quiz about the Terraform Private Registry +notes: +- type: text + contents: Congratulations! You've been promoted to HCP Terraform Ninja. +answers: +- "True" +- "False" +solution: +- 1 +difficulty: basic +timelimit: 1800 +--- +The Terraform Private Registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-cloud-azure-v2/15-clean-up-and-teardown/assignment.md b/instruqt-tracks/hcp-terraform-azure-v2/15-clean-up-and-teardown/assignment.md similarity index 89% rename from instruqt-tracks/terraform-cloud-azure-v2/15-clean-up-and-teardown/assignment.md rename to instruqt-tracks/hcp-terraform-azure-v2/15-clean-up-and-teardown/assignment.md index 44769944..39662d7a 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/15-clean-up-and-teardown/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure-v2/15-clean-up-and-teardown/assignment.md @@ -1,5 +1,6 @@ --- slug: clean-up-and-teardown +id: sl4ke0e7vmxm type: challenge title: Clean up teaser: | @@ -8,7 +9,7 @@ notes: - type: text contents: |- 1. Destroy infrastructure. - 2. Remove TFC Configurations + 2. Remove HCP Terraform Configurations 3. Delete GitHub repository tabs: - title: Code Editor @@ -113,7 +114,7 @@ timelimit: 1800 margin-left: 30px; } -Congratulations, you've learned all the major features of Terraform Cloud. +Congratulations, you've learned all the major features of HCP Terraform. Destroy hashicat infrastructure === @@ -151,17 +152,17 @@ curl \ - Ensure that the `hashicat-azure` deployment **Triggered Destroy** finishes. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview to confirm. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview to confirm. Please see the example image below. ![Destroy Workspace](../assets/workspace_destroy.png) -Remove TFC Configurations +Remove HCP Terraform Configurations === - Remove workspace, variables, users, policies, VCS, private module ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform destroy -auto-approve diff --git a/instruqt-tracks/terraform-cloud-azure-v2/15-clean-up-and-teardown/check-workstation b/instruqt-tracks/hcp-terraform-azure-v2/15-clean-up-and-teardown/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/15-clean-up-and-teardown/check-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/15-clean-up-and-teardown/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/15-clean-up-and-teardown/cleanup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/15-clean-up-and-teardown/cleanup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/15-clean-up-and-teardown/cleanup-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/15-clean-up-and-teardown/cleanup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/15-clean-up-and-teardown/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/15-clean-up-and-teardown/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/15-clean-up-and-teardown/setup-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/15-clean-up-and-teardown/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/15-clean-up-and-teardown/solve-workstation b/instruqt-tracks/hcp-terraform-azure-v2/15-clean-up-and-teardown/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/15-clean-up-and-teardown/solve-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/15-clean-up-and-teardown/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/Makefile b/instruqt-tracks/hcp-terraform-azure-v2/Makefile similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/Makefile rename to instruqt-tracks/hcp-terraform-azure-v2/Makefile diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/api_create.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/api_create.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/api_create.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/api_create.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/api_delete.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/api_delete.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/api_delete.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/api_delete.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/api_update.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/api_update.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/api_update.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/api_update.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/api_vending_macheen.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/api_vending_macheen.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/api_vending_macheen.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/api_vending_macheen.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/bash-icon.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/bash-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/bash-icon.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/bash-icon.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/close_vs_code_tabs.gif b/instruqt-tracks/hcp-terraform-azure-v2/assets/close_vs_code_tabs.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/close_vs_code_tabs.gif rename to instruqt-tracks/hcp-terraform-azure-v2/assets/close_vs_code_tabs.gif diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/create_new_org.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/create_new_org.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/create_new_org.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/create_new_org.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/enable_trial.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/enable_trial.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/enable_trial.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/enable_trial.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/file-icon.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/file-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/file-icon.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/file-icon.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/folder.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/folder.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/folder.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/folder.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/git_pr_check.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/git_pr_check.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/git_pr_check.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/git_pr_check.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/git_repo_new.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/git_repo_new.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/git_repo_new.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/git_repo_new.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/git_repo_populated.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/git_repo_populated.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/git_repo_populated.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/git_repo_populated.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/github_actions_tf_job.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/github_actions_tf_job.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/github_actions_tf_job.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/github_actions_tf_job.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/hcl-icon.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/hcl-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/hcl-icon.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/hcl-icon.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/module_fork.gif b/instruqt-tracks/hcp-terraform-azure-v2/assets/module_fork.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/module_fork.gif rename to instruqt-tracks/hcp-terraform-azure-v2/assets/module_fork.gif diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/new_workspace.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/new_workspace.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/new_workspace.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/new_workspace.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/one.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/one.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/one.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/one.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/org_cost_estimation.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/org_cost_estimation.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/org_cost_estimation.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/org_cost_estimation.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/org_policy_sets.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/org_policy_sets.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/org_policy_sets.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/org_policy_sets.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/org_teams.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/org_teams.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/org_teams.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/org_teams.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/org_vcs.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/org_vcs.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/org_vcs.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/org_vcs.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/pmr_private_module.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/pmr_private_module.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/pmr_private_module.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/pmr_private_module.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/pmr_register_module.gif b/instruqt-tracks/hcp-terraform-azure-v2/assets/pmr_register_module.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/pmr_register_module.gif rename to instruqt-tracks/hcp-terraform-azure-v2/assets/pmr_register_module.gif diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/pull_request.gif b/instruqt-tracks/hcp-terraform-azure-v2/assets/pull_request.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/pull_request.gif rename to instruqt-tracks/hcp-terraform-azure-v2/assets/pull_request.gif diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/readme.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/readme.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/readme.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/readme.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/remote_execution.gif b/instruqt-tracks/hcp-terraform-azure-v2/assets/remote_execution.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/remote_execution.gif rename to instruqt-tracks/hcp-terraform-azure-v2/assets/remote_execution.gif diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/shell.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/shell.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/shell.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/shell.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/tf-icon.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/tf-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/tf-icon.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/tf-icon.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/three.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/three.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/three.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/three.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/two.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/two.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/two.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/two.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/users_invited.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/users_invited.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/users_invited.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/users_invited.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/variable_sets.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/variable_sets.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/variable_sets.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/variable_sets.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/variable_sets_link.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/variable_sets_link.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/variable_sets_link.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/variable_sets_link.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/vsc-explorer-icon.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/vsc-explorer-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/vsc-explorer-icon.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/vsc-explorer-icon.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/vscode-extensions.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/vscode-extensions.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/vscode-extensions.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/vscode-extensions.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/web.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/web.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/web.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/web.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_cost_estimation.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_cost_estimation.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_cost_estimation.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_cost_estimation.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_destroy.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_destroy.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_destroy.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_destroy.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_new_run.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_new_run.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_new_run.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_new_run.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_outputs.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_outputs.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_outputs.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_outputs.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_policy_checks.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_policy_checks.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_policy_checks.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_policy_checks.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_pr_merge.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_pr_merge.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_pr_merge.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_pr_merge.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_public_module.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_public_module.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_public_module.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_public_module.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_state.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_state.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_state.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_state.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_teams.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_teams.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_teams.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_teams.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_variables.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_variables.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_variables.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_variables.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_vcs.png b/instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_vcs.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/assets/workspace_vcs.png rename to instruqt-tracks/hcp-terraform-azure-v2/assets/workspace_vcs.png diff --git a/instruqt-tracks/terraform-cloud-azure-v2/config.yml b/instruqt-tracks/hcp-terraform-azure-v2/config.yml similarity index 100% rename from instruqt-tracks/terraform-cloud-azure-v2/config.yml rename to instruqt-tracks/hcp-terraform-azure-v2/config.yml diff --git a/instruqt-tracks/terraform-cloud-azure-v2/track.yml b/instruqt-tracks/hcp-terraform-azure-v2/track.yml similarity index 77% rename from instruqt-tracks/terraform-cloud-azure-v2/track.yml rename to instruqt-tracks/hcp-terraform-azure-v2/track.yml index 662c097b..3cfac709 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/track.yml +++ b/instruqt-tracks/hcp-terraform-azure-v2/track.yml @@ -2,10 +2,9 @@ # SPDX-License-Identifier: MPL-2.0 slug: terraform-cloud-azure-v2 -id: w0mxyr7gzpwb -title: Terraform Cloud with Azure +title: HCP Terraform with Azure teaser: | - Terraform Cloud enables infrastructure automation for provisioning, compliance, and management of any cloud, data center, and service. + HCP Terraform enables infrastructure automation for provisioning, compliance, and management of any cloud, data center, and service. description: |- Work with the devops team at ACME as they go from manual provisioning with Terraform to a fully automated devops workflow with code reviews, testing, and automated provisioning in Azure Cloud. @@ -20,17 +19,21 @@ description: |- icon: https://storage.googleapis.com/instruqt-hashicorp-tracks/logo/terraform.png level: beginner tags: -- terraform +- azure - cloud - enterprise -- azure +- terraform owner: hashicorp developers: -- jthompson@hashicorp.com - thomas@hashicorp.com -- gilberto@hashicorp.com +- jenna.wong@hashicorp.com show_timer: true +idle_timeout: 300 +timelimit: 14400 lab_config: overlay: false width: 33 position: right + sidebar_enabled: true + feedback_recap_enabled: true + loadingMessages: true \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-azure-v2/track_scripts/setup-workstation b/instruqt-tracks/hcp-terraform-azure-v2/track_scripts/setup-workstation similarity index 78% rename from instruqt-tracks/terraform-cloud-azure-v2/track_scripts/setup-workstation rename to instruqt-tracks/hcp-terraform-azure-v2/track_scripts/setup-workstation index 5101a74f..8aad143e 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/track_scripts/setup-workstation +++ b/instruqt-tracks/hcp-terraform-azure-v2/track_scripts/setup-workstation @@ -35,7 +35,7 @@ rm -fR /root/hashicat-$CLOUD_ENV/policies/$CLOUD_ENV rm -fR /root/hashicat-$CLOUD_ENV/policies/aws rm -fR /root/hashicat-$CLOUD_ENV/policies/gcp -mv /root/se-workshop-hashicat-app/terraform-cloud /root/terraform-cloud +mv /root/se-workshop-hashicat-app/hcp-terraform /root/hcp-terraform mv /root/se-workshop-hashicat-app/terraform-github /root/terraform-github mv /root/se-workshop-hashicat-app/terraform-api /root/terraform-api mv /root/se-workshop-hashicat-app/scripts /root/scripts @@ -46,7 +46,7 @@ rm -fR /root/se-workshop-hashicat-app # ├── hashicat-azure # │ ├── files # │ └── policies -# ├── terraform-cloud +# ├── hcp-terraform # │ └── exercises # └── terraform-github # └── terraform-api @@ -54,8 +54,8 @@ rm -fR /root/se-workshop-hashicat-app # Set the initial workspace name export WORKSPACE="hashicat-${CLOUD_ENV}" -cp /root/terraform-cloud/terraform.tfvars.example /root/terraform-cloud/terraform.tfvars -cd /root/terraform-cloud +cp /root/hcp-terraform/terraform.tfvars.example /root/hcp-terraform/terraform.tfvars +cd /root/hcp-terraform sed -i "s/YOUR_WORKSPACE/$WORKSPACE/g" terraform.tfvars # We do this to ear-mark the variables associated @@ -162,12 +162,12 @@ if [ $CLOUD_ENV == "aws" ]; then echo "export TF_VAR_instruqt_aws_secret_access_key=\$AWS_SECRET_ACCESS_KEY" >> /root/.bashrc # Set up TF code block for AWS - mv /root/terraform-cloud/exercises/aws-env_vars_main.tf /root/terraform-cloud/exercises/05-env_vars_main.tf - mv /root/terraform-cloud/exercises/aws-env_vars_variables.tf /root/terraform-cloud/exercises/05-env_vars_variables.tf + mv /root/hcp-terraform/exercises/aws-env_vars_main.tf /root/hcp-terraform/exercises/05-env_vars_main.tf + mv /root/hcp-terraform/exercises/aws-env_vars_variables.tf /root/hcp-terraform/exercises/05-env_vars_variables.tf # Remove other templates - rm -f /root/terraform-cloud/exercises/azure-env_vars*.tf - rm -f /root/terraform-cloud/exercises/gcp-env_vars*.tf + rm -f /root/hcp-terraform/exercises/azure-env_vars*.tf + rm -f /root/hcp-terraform/exercises/gcp-env_vars*.tf elif [ $CLOUD_ENV == "azure" ]; then # Create required variables spec in TF echo "export TF_VAR_instruqt_azure_arm_client_id=\$ARM_CLIENT_ID" >> /root/.bashrc @@ -176,25 +176,25 @@ elif [ $CLOUD_ENV == "azure" ]; then echo "export TF_VAR_instruqt_azure_arm_tenant_id=\$ARM_TENANT_ID" >> /root/.bashrc # Set up TF code block for Azure - mv /root/terraform-cloud/exercises/azure-env_vars_main.tf /root/terraform-cloud/exercises/05-env_vars_main.tf - mv /root/terraform-cloud/exercises/azure-env_vars_variables.tf /root/terraform-cloud/exercises/05-env_vars_variables.tf + mv /root/hcp-terraform/exercises/azure-env_vars_main.tf /root/hcp-terraform/exercises/05-env_vars_main.tf + mv /root/hcp-terraform/exercises/azure-env_vars_variables.tf /root/hcp-terraform/exercises/05-env_vars_variables.tf # Remove other templates - rm -f /root/terraform-cloud/exercises/aws-env_vars*.tf - rm -f /root/terraform-cloud/exercises/gcp-env_vars*.tf + rm -f /root/hcp-terraform/exercises/aws-env_vars*.tf + rm -f /root/hcp-terraform/exercises/gcp-env_vars*.tf # Change region (aws) to location (azure) in 05-tf_vars_variables.tf - sed -i "s/region/location/g" /root/terraform-cloud/exercises/05-tf_vars_variables.tf - sed -i "s/region/location/g" /root/terraform-cloud/exercises/05-tf_vars_main.tf - sed -i "s/REGION/LOCATION/g" /root/terraform-cloud/exercises/05-tf_vars_main.tf + sed -i "s/region/location/g" /root/hcp-terraform/exercises/05-tf_vars_variables.tf + sed -i "s/region/location/g" /root/hcp-terraform/exercises/05-tf_vars_main.tf + sed -i "s/REGION/LOCATION/g" /root/hcp-terraform/exercises/05-tf_vars_main.tf elif [ $CLOUD_ENV == "gcp" ]; then # Set up TF code block for GCP - mv /root/terraform-cloud/exercises/gcp-env_vars_main.tf /root/terraform-cloud/exercises/05-env_vars_main.tf - mv /root/terraform-cloud/exercises/gcp-env_vars_variables.tf /root/terraform-cloud/exercises/05-env_vars_variables.tf + mv /root/hcp-terraform/exercises/gcp-env_vars_main.tf /root/hcp-terraform/exercises/05-env_vars_main.tf + mv /root/hcp-terraform/exercises/gcp-env_vars_variables.tf /root/hcp-terraform/exercises/05-env_vars_variables.tf # Remove other templates - rm -f /root/terraform-cloud/exercises/aws-env_vars*.tf - rm -f /root/terraform-cloud/exercises/azure-env_vars*.tf + rm -f /root/hcp-terraform/exercises/aws-env_vars*.tf + rm -f /root/hcp-terraform/exercises/azure-env_vars*.tf fi # Dealing with "mesg: ttyname failed: Inappropriate ioctl for device" diff --git a/instruqt-tracks/terraform-cloud-azure/01-setup-our-environment/assignment.md b/instruqt-tracks/hcp-terraform-azure/01-setup-our-environment/assignment.md similarity index 99% rename from instruqt-tracks/terraform-cloud-azure/01-setup-our-environment/assignment.md rename to instruqt-tracks/hcp-terraform-azure/01-setup-our-environment/assignment.md index c7b03cda..0d81329c 100755 --- a/instruqt-tracks/terraform-cloud-azure/01-setup-our-environment/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/01-setup-our-environment/assignment.md @@ -1,5 +1,6 @@ --- slug: setup-our-environment +id: pmagolxtigjv type: challenge title: "\U0001F3E1 Moving in - Set Up Your Workspace" teaser: | diff --git a/instruqt-tracks/terraform-cloud-azure/01-setup-our-environment/check-workstation b/instruqt-tracks/hcp-terraform-azure/01-setup-our-environment/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/01-setup-our-environment/check-workstation rename to instruqt-tracks/hcp-terraform-azure/01-setup-our-environment/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/01-setup-our-environment/setup-workstation b/instruqt-tracks/hcp-terraform-azure/01-setup-our-environment/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/01-setup-our-environment/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/01-setup-our-environment/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/01-setup-our-environment/solve-workstation b/instruqt-tracks/hcp-terraform-azure/01-setup-our-environment/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/01-setup-our-environment/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/01-setup-our-environment/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/02-terraform-cloud-setup/assignment.md b/instruqt-tracks/hcp-terraform-azure/02-hcp-terraform-setup/assignment.md similarity index 71% rename from instruqt-tracks/terraform-cloud-azure/02-terraform-cloud-setup/assignment.md rename to instruqt-tracks/hcp-terraform-azure/02-hcp-terraform-setup/assignment.md index 80c618c4..444a7ac2 100755 --- a/instruqt-tracks/terraform-cloud-azure/02-terraform-cloud-setup/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/02-hcp-terraform-setup/assignment.md @@ -1,12 +1,13 @@ --- -slug: terraform-cloud-setup +slug: hcp-terraform-setup +id: jf632yvz3ipa type: challenge -title: Terraform Cloud Setup +title: HCP Terraform Setup teaser: | - Terraform Cloud offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in Terraform Cloud. + HCP Terraform offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in HCP Terraform. notes: - type: text - contents: Terraform Cloud remote state storage is free for all users. + contents: HCP Terraform remote state storage is free for all users. tabs: - title: Shell type: terminal @@ -18,17 +19,17 @@ tabs: difficulty: basic timelimit: 1800 --- -Terraform Cloud Setup +HCP Terraform Setup === -1. Sign up for a free Terraform Cloud account: +1. Sign up for a free HCP Terraform account: - Go to the [Sign-in page](https://portal.cloud.hashicorp.com/sign-in) and create a new account - If you already have an account, sign in with your existing credentials -2. Create a new Terraform Cloud Organization +2. Create a new HCP Terraform Organization - - Navigate to the [Create a new organization](https://app.terraform.io/app/organizations/new?trial=workshop2023) page and create a Terraform Cloud Organization for this workshop + - Navigate to the [Create a new organization](https://app.terraform.io/app/organizations/new?trial=workshop2023) page and create a HCP Terraform Organization for this workshop - Use the `Create organization & start 14 day trial` button to enable Team and Governance features in your organization. Please see reference below. @@ -45,7 +46,7 @@ Workspace Configuration No really...you *must* name your workspace **hashicat-azure**. If you don't the exercises will break. Do not attempt to name it something else. -**Note:** If you already have a **hashicat-azure** workspace, please delete the workspace by selecting the workspace-level **Settings >> Destruction and Deletion** menu, clicking the **Delete from Terraform Cloud** button, typing **hashicat-azure** to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you already played this track in the past. +**Note:** If you already have a **hashicat-azure** workspace, please delete the workspace by selecting the workspace-level **Settings >> Destruction and Deletion** menu, clicking the **Delete from HCP Terraform** button, typing **hashicat-azure** to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you already played this track in the past. --- diff --git a/instruqt-tracks/terraform-cloud-azure/02-terraform-cloud-setup/check-workstation b/instruqt-tracks/hcp-terraform-azure/02-hcp-terraform-setup/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/02-terraform-cloud-setup/check-workstation rename to instruqt-tracks/hcp-terraform-azure/02-hcp-terraform-setup/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/02-terraform-cloud-setup/setup-workstation b/instruqt-tracks/hcp-terraform-azure/02-hcp-terraform-setup/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/02-terraform-cloud-setup/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/02-hcp-terraform-setup/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/02-terraform-cloud-setup/solve-workstation b/instruqt-tracks/hcp-terraform-azure/02-hcp-terraform-setup/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/02-terraform-cloud-setup/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/02-hcp-terraform-setup/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/03-oh-no-an-outage/assignment.md b/instruqt-tracks/hcp-terraform-azure/03-oh-no-an-outage/assignment.md similarity index 88% rename from instruqt-tracks/terraform-cloud-azure/03-oh-no-an-outage/assignment.md rename to instruqt-tracks/hcp-terraform-azure/03-oh-no-an-outage/assignment.md index dcff37ed..d1cc3fc6 100755 --- a/instruqt-tracks/terraform-cloud-azure/03-oh-no-an-outage/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/03-oh-no-an-outage/assignment.md @@ -1,9 +1,10 @@ --- slug: oh-no-an-outage +id: wwapcfnmx85v type: challenge title: "\U0001F4D2 Safekeeping Your Terraform State" teaser: | - An unexpected outage has taken down one of the production websites. It took longer than expected to recover because the Terraform state file was stored on someone's laptop. Terraform Cloud's remote state feature is here to help. + An unexpected outage has taken down one of the production websites. It took longer than expected to recover because the Terraform state file was stored on someone's laptop. HCP Terraform's remote state feature is here to help. notes: - type: text contents: "It's Monday morning and you're the first one into the office. Most of @@ -28,15 +29,15 @@ tabs: difficulty: basic timelimit: 1800 --- -Your task is to configure remote state using your Terraform Cloud account. In order to complete this challenge you'll need the following: +Your task is to configure remote state using your HCP Terraform account. In order to complete this challenge you'll need the following: -1. A free Terraform Cloud account - log in at https://app.terraform.io
-2. A Terraform Cloud organization. You just created this in the previous exercise.
+1. A free HCP Terraform account - log in at https://app.terraform.io
+2. An HCP Terraform organization. You just created this in the previous exercise.
3. A workspace named **hashicat-azure** with its Execution Mode set to **Local** (not Remote)
4. A *user* token for authentication
5. A `remote_backend` config stored in your workspace
-Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in Terraform Cloud: +Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in HCP Terraform: https://app.terraform.io/app/settings/tokens @@ -44,7 +45,7 @@ Click on the **Create an API token** button. You can name the token whatever you Back in the Instruqt track, you need to add your API token to a file called "credentials.tfrc.json". Select the "Credentials File" tab and open the `/root/.terraform.d/credentials.tfrc.json` file directly. -Replace the part that says YOURTOKEN with what you copied from Terraform Cloud. Be sure to save the file. +Replace the part that says YOURTOKEN with what you copied from HCP Terraform. Be sure to save the file. Your token is now safely stored in the "credentials.tfrc.json" file. @@ -89,7 +90,7 @@ Please click on the second URL to test that your application is working. To see a valid value for the `catapp_ip` output, you sometimes might first need to run `terraform refresh`. -Additionally, you should see a new state file on the "States" tab of your Terraform Cloud workspace. +Additionally, you should see a new state file on the "States" tab of your HCP Terraform workspace. Note: If you ran terraform locally before configuring the remote backend, you might have a local state file called `terraform.tfstate`. If so, please delete it by running `rm terraform.tfstate`. diff --git a/instruqt-tracks/terraform-cloud-azure/03-oh-no-an-outage/check-workstation b/instruqt-tracks/hcp-terraform-azure/03-oh-no-an-outage/check-workstation similarity index 89% rename from instruqt-tracks/terraform-cloud-azure/03-oh-no-an-outage/check-workstation rename to instruqt-tracks/hcp-terraform-azure/03-oh-no-an-outage/check-workstation index 71e02fc2..660ad115 100755 --- a/instruqt-tracks/terraform-cloud-azure/03-oh-no-an-outage/check-workstation +++ b/instruqt-tracks/hcp-terraform-azure/03-oh-no-an-outage/check-workstation @@ -34,14 +34,14 @@ if [[ $EXIT_CODE -ne 0 ]]; then fail-message "Oops, we couldn't find the hashicat-azure workspace in your remote_backend.tf config file. Try again." fi -# Verify the organization exists in TFC +# Verify the organization exists in HCP Terraform curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then - fail-message "I couldn't find your organization, $ORG in Terraform Cloud. Make sure you created it and that it is configured in your remote_backend.tf file." + fail-message "I couldn't find your organization, $ORG in HCP Terraform. Make sure you created it and that it is configured in your remote_backend.tf file." fi -# Verify the workspace exists in TFC +# Verify the workspace exists in HCP Terraform curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/hashicat-azure | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then diff --git a/instruqt-tracks/terraform-cloud-azure/03-oh-no-an-outage/setup-workstation b/instruqt-tracks/hcp-terraform-azure/03-oh-no-an-outage/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/03-oh-no-an-outage/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/03-oh-no-an-outage/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/03-oh-no-an-outage/solve-workstation b/instruqt-tracks/hcp-terraform-azure/03-oh-no-an-outage/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/03-oh-no-an-outage/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/03-oh-no-an-outage/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/04-quiz-1/assignment.md b/instruqt-tracks/hcp-terraform-azure/04-quiz-1/assignment.md similarity index 95% rename from instruqt-tracks/terraform-cloud-gcp/04-quiz-1/assignment.md rename to instruqt-tracks/hcp-terraform-azure/04-quiz-1/assignment.md index 8271af01..367634fe 100755 --- a/instruqt-tracks/terraform-cloud-gcp/04-quiz-1/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/04-quiz-1/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-1 +id: xycwdxwukkbe type: quiz title: "\U0001F4DD Quiz 1 - Terraform Remote State" teaser: | diff --git a/instruqt-tracks/terraform-cloud-azure/05-protecting-sensitive-variables/assignment.md b/instruqt-tracks/hcp-terraform-azure/05-protecting-sensitive-variables/assignment.md similarity index 87% rename from instruqt-tracks/terraform-cloud-azure/05-protecting-sensitive-variables/assignment.md rename to instruqt-tracks/hcp-terraform-azure/05-protecting-sensitive-variables/assignment.md index a00f7f1e..22eebdc0 100755 --- a/instruqt-tracks/terraform-cloud-azure/05-protecting-sensitive-variables/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/05-protecting-sensitive-variables/assignment.md @@ -1,5 +1,6 @@ --- slug: protecting-sensitive-variables +id: m38q8t5bj5s4 type: challenge title: "\U0001F510 Securing Cloud Credentials" teaser: | @@ -12,7 +13,7 @@ notes: You get this email from William, the lead infosec admin at ACME:\n\n>\U0001F46E\U0001F3FF‍♂️ Hello junior admin, we ran a remote scan on your laptop last night and found some unsecured Azure credentials. We need you to move those off your laptop and store - them in Terraform Cloud by the end of the day." + them in HCP Terraform by the end of the day." - type: text contents: "\U0001F914 Did you know?\n\nThousands of API and cryptographic keys and secrets are leaking on GitHub every day!\n\nhttps://nakedsecurity.sophos.com/2019/03/25/thousands-of-coders-are-leaving-their-crown-jewels-exposed-on-github/\n\nWhen @@ -22,10 +23,10 @@ notes: - type: text contents: "\U0001F469\U0001F3FC‍\U0001F4BB Remote Execution, Local Code\n\nRemote Execution allows you to use the same Terraform commands that you're familiar with, - but the run and all your variables are safely stored in your Terraform Cloud workspace. + but the run and all your variables are safely stored in your HCP Terraform workspace. This can be helpful when you're upgrading tools that were originally written for - Terraform Open Source.\n\nWith Remote Execution your Terraform code is still stored - on your local machine and sent to the server each time you run." + Terraform Community Edition.\n\nWith Remote Execution your Terraform code is still + stored on your local machine and sent to the server each time you run." tabs: - title: Shell type: terminal @@ -37,7 +38,7 @@ tabs: difficulty: basic timelimit: 1800 --- -After the Azure credentials issue, the security team is tightening down access to your Azure account. API creds must now be secured as stored variables in Terraform Cloud. Your task is to find your Azure credentials, and move them into your workspace as secure environment variables. +After the Azure credentials issue, the security team is tightening down access to your Azure account. API creds must now be secured as stored variables in HCP Terraform. Your task is to find your Azure credentials, and move them into your workspace as secure environment variables. In order to complete this challenge you'll need to do the following: @@ -55,12 +56,12 @@ Test your work by running `terraform init`. Your backend configuration will be u Next try running `terraform plan`. This will trigger what's known as a speculative plan. You can view this plan by copying the link from your "Shell" tab. This plan will not show up in your ordinary terraform runs that are triggered via the UI or API. A copy of the plan output will be streamed back to your "Shell" tab. -Run a terraform apply. This apply **will** show up if you navigate to the runs page in the Terraform Cloud UI. +Run a terraform apply. This apply **will** show up if you navigate to the runs page in the HCP Terraform UI. ``` terraform apply ``` -Congratulations, your Azure credentials are now safely encrypted and stored in your Terraform Cloud workspace. +Congratulations, your Azure credentials are now safely encrypted and stored in your HCP Terraform workspace. -You can continue to run `terraform plan` and `terraform apply` in your "Shell" tab, but the execution is now done in Terraform Cloud. \ No newline at end of file +You can continue to run `terraform plan` and `terraform apply` in your "Shell" tab, but the execution is now done in HCP Terraform. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-azure/05-protecting-sensitive-variables/check-workstation b/instruqt-tracks/hcp-terraform-azure/05-protecting-sensitive-variables/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/05-protecting-sensitive-variables/check-workstation rename to instruqt-tracks/hcp-terraform-azure/05-protecting-sensitive-variables/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/05-protecting-sensitive-variables/setup-workstation b/instruqt-tracks/hcp-terraform-azure/05-protecting-sensitive-variables/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/05-protecting-sensitive-variables/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/05-protecting-sensitive-variables/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/05-protecting-sensitive-variables/solve-workstation b/instruqt-tracks/hcp-terraform-azure/05-protecting-sensitive-variables/solve-workstation similarity index 99% rename from instruqt-tracks/terraform-cloud-azure/05-protecting-sensitive-variables/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/05-protecting-sensitive-variables/solve-workstation index da59fff9..f2d616b2 100755 --- a/instruqt-tracks/terraform-cloud-azure/05-protecting-sensitive-variables/solve-workstation +++ b/instruqt-tracks/hcp-terraform-azure/05-protecting-sensitive-variables/solve-workstation @@ -180,7 +180,7 @@ cat <<-EOF > /tmp/location.json } EOF -# Create our variables in terraform cloud +# Create our variables in HCP Terraform curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/client_id.json https://app.terraform.io/api/v2/vars curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/client_secret.json https://app.terraform.io/api/v2/vars diff --git a/instruqt-tracks/terraform-cloud-azure/06-sharing-is-caring/assignment.md b/instruqt-tracks/hcp-terraform-azure/06-sharing-is-caring/assignment.md similarity index 75% rename from instruqt-tracks/terraform-cloud-azure/06-sharing-is-caring/assignment.md rename to instruqt-tracks/hcp-terraform-azure/06-sharing-is-caring/assignment.md index 2dc13842..b80bf9e1 100755 --- a/instruqt-tracks/terraform-cloud-azure/06-sharing-is-caring/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/06-sharing-is-caring/assignment.md @@ -1,20 +1,21 @@ --- slug: sharing-is-caring +id: g0cl06ae6kpe type: challenge -title: "\U0001F91D\U0001F3FC Working with Teams in Terraform Cloud" +title: "\U0001F91D\U0001F3FC Working with Teams in HCP Terraform" teaser: | As your Terraform usage increases more team members want to collaborate. Let's add some teams and access rules for our organization. notes: - type: text contents: "A few months go by and you continue building more infrastructure with - Terraform Cloud. The devops team are all familiar with Terraform, but some members - are unable to access the Terraform Cloud organization. Your manager Hiro steps - into your cubicle with a clipboard in hand:\n\n>\U0001F468\U0001F3FB‍\U0001F4BC - Thank you for all your hard work on this Terraform project. I'd like to have read - access to your workspace, and we also need to get Lars and Aisha set up. Can you - please create some teams in our organization and add your co-workers to them?" + HCP Terraform. The devops team are all familiar with Terraform, but some members + are unable to access the HCP Terraform organization. Your manager Hiro steps into + your cubicle with a clipboard in hand:\n\n>\U0001F468\U0001F3FB‍\U0001F4BC Thank + you for all your hard work on this Terraform project. I'd like to have read access + to your workspace, and we also need to get Lars and Aisha set up. Can you please + create some teams in our organization and add your co-workers to them?" - type: text - contents: Teams and role-based access controls are a paid feature of Terraform Cloud. + contents: Teams and role-based access controls are a paid feature of HCP Terraform. Your instructor will need to upgrade your organization to a free trial in order to complete this challenge. tabs: @@ -28,7 +29,7 @@ tabs: difficulty: basic timelimit: 1800 --- -Teams and role-based access controls are a paid feature of Terraform Cloud. You will need to ensure your free trial has been activated from the earlier steps in order to complete this challenge. +Teams and role-based access controls are a paid feature of HCP Terraform. You will need to ensure your free trial has been activated from the earlier steps in order to complete this challenge. In this challenge you'll create teams with different levels of access to your workspace. You can then invite other users to collaborate on code changes, approvals, and Terraform runs. @@ -37,7 +38,7 @@ In this challenge you'll create teams with different levels of access to your wo 3. Add another team called **developers**. Developers should not have any organization-wide access.
4. Add a third team called **managers**. Managers should also not have any organization-wide access. -Next, assign access rights to the hashicat-azure workspace. Go into the **Team Access** page of the hashicat-azure workspace settings. If you don't see the Team Access link you might need to log out and back into Terraform Cloud. +Next, assign access rights to the hashicat-azure workspace. Go into the **Team Access** page of the hashicat-azure workspace settings. If you don't see the Team Access link you might need to log out and back into HCP Terraform. You'll want to click the "Add team and permissions" button and then click the "Select team" button next to each team to which you wish to grant workspace access. Then click the "Assign permissions" button for the desired permission. @@ -47,7 +48,7 @@ You'll want to click the "Add team and permissions" button and then click the "S Now that you have created teams and given them workspace access you can invite some users to your organization. Return to your **General Settings** for the organization, and select **Users**. Then click the "Invite a user" button. -If you're doing an instructor-led training, you can invite your instructor or a fellow student to your organization and place them on the developers team. You'll need the email address attached to their Terraform Cloud account to invite them. +If you're doing an instructor-led training, you can invite your instructor or a fellow student to your organization and place them on the developers team. You'll need the email address attached to their HCP Terraform account to invite them. Or you can use one of our example users below: diff --git a/instruqt-tracks/terraform-cloud-azure/06-sharing-is-caring/check-workstation b/instruqt-tracks/hcp-terraform-azure/06-sharing-is-caring/check-workstation similarity index 98% rename from instruqt-tracks/terraform-cloud-azure/06-sharing-is-caring/check-workstation rename to instruqt-tracks/hcp-terraform-azure/06-sharing-is-caring/check-workstation index b0e1dbc4..d697a78c 100755 --- a/instruqt-tracks/terraform-cloud-azure/06-sharing-is-caring/check-workstation +++ b/instruqt-tracks/hcp-terraform-azure/06-sharing-is-caring/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-azure -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) # Get our team IDs. In the test environment these teams are pre-created. diff --git a/instruqt-tracks/terraform-cloud-azure/06-sharing-is-caring/setup-workstation b/instruqt-tracks/hcp-terraform-azure/06-sharing-is-caring/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/06-sharing-is-caring/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/06-sharing-is-caring/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/06-sharing-is-caring/solve-workstation b/instruqt-tracks/hcp-terraform-azure/06-sharing-is-caring/solve-workstation similarity index 96% rename from instruqt-tracks/terraform-cloud-azure/06-sharing-is-caring/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/06-sharing-is-caring/solve-workstation index 763bcb8b..98715198 100755 --- a/instruqt-tracks/terraform-cloud-azure/06-sharing-is-caring/solve-workstation +++ b/instruqt-tracks/hcp-terraform-azure/06-sharing-is-caring/solve-workstation @@ -7,10 +7,10 @@ set -o history cd /root/hashicat-azure -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) -# These are the terraform cloud IDs of our fictional users. They are persistent and should not be deleted from TFC. +# These are the HCP Terraform IDs of our fictional users. They are persistent and should not be deleted from HCP Terraform. LARS_ID="user-V2Qt225RgAUzsWpz" HIRO_ID="user-egHewG9Z5eNa9u9m" AISHA_ID="user-CsBb94bVHrq7E5AA" diff --git a/instruqt-tracks/terraform-cloud-gcp/07-quiz-2/assignment.md b/instruqt-tracks/hcp-terraform-azure/07-quiz-2/assignment.md similarity index 77% rename from instruqt-tracks/terraform-cloud-gcp/07-quiz-2/assignment.md rename to instruqt-tracks/hcp-terraform-azure/07-quiz-2/assignment.md index 80a1f943..5d29b255 100755 --- a/instruqt-tracks/terraform-cloud-gcp/07-quiz-2/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/07-quiz-2/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-2 +id: vj1bl1mdakio type: quiz title: "\U0001F4DD Quiz 2 - Secure Variables" teaser: | @@ -10,8 +11,8 @@ notes: answers: - In your Terraform workspace - In a text file on your Desktop -- As encrypted environment variables in Terraform Cloud -- As Terraform variables in Terraform Cloud +- As encrypted environment variables in HCP Terraform +- As Terraform variables in HCP Terraform solution: - 2 difficulty: basic diff --git a/instruqt-tracks/terraform-cloud-azure/08-versioned-infrastructure/assignment.md b/instruqt-tracks/hcp-terraform-azure/08-versioned-infrastructure/assignment.md similarity index 89% rename from instruqt-tracks/terraform-cloud-azure/08-versioned-infrastructure/assignment.md rename to instruqt-tracks/hcp-terraform-azure/08-versioned-infrastructure/assignment.md index 90be558f..bd1c03fa 100755 --- a/instruqt-tracks/terraform-cloud-azure/08-versioned-infrastructure/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/08-versioned-infrastructure/assignment.md @@ -1,9 +1,10 @@ --- slug: versioned-infrastructure +id: nxdq2pprchti type: challenge title: "\U0001F4BB Version Controlled Infrastructure" teaser: | - The team has grown and you need to implement code reviews. Terraform Cloud can connect to popular Version Control Systems to enable collaboration and testing. + The team has grown and you need to implement code reviews. HCP Terraform can connect to popular Version Control Systems to enable collaboration and testing. notes: - type: text contents: "As Terraform usage continues to increase across the organization, your @@ -15,7 +16,7 @@ notes: so we can implement code reviews?" - type: text contents: |- - Once you connect a VCS repository to your Terraform Cloud workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. + Once you connect a VCS repository to your HCP Terraform workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. In addition it allows you to enable features like code reviews, pull requests, and automated testing of your code. tabs: @@ -29,7 +30,7 @@ tabs: difficulty: basic timelimit: 1800 --- -In order for different teams and individuals to be able to work on the same Terraform code, you need to use a Version Control System (VCS). Terraform Cloud can integrate with the most popular VCS systems including GitHub, GitLab and Bitbucket. +In order for different teams and individuals to be able to work on the same Terraform code, you need to use a Version Control System (VCS). HCP Terraform can integrate with the most popular VCS systems including GitHub, GitLab and Bitbucket. You will need a free GitHub.com account for this challenge. We recommend using a personal account for training instead your work account (if you have one). @@ -80,7 +81,7 @@ https://github.com/settings/tokens Then click on **Personal Access Tokens** and generate a new token for the workshop. Give it at least the `repo | public_repo` scope, but you can grant the entire `repo` scope and other scopes if desired. You can delete the token afterwards if you like. This token enables you to push changes from your workstation to your public fork of the hashicat-azure repository. -Now that you have your own copy of the hashicat-azure repo to work with, follow the **Configuring GitHub Access** section of the TFC documentation to connect your GitHub account to your Terraform Organization. +Now that you have your own copy of the hashicat-azure repo to work with, follow the **Configuring GitHub Access** section of the HCP Terraform documentation to connect your GitHub account to your Terraform Organization. https://www.terraform.io/docs/cloud/vcs/github.html diff --git a/instruqt-tracks/terraform-cloud-azure/08-versioned-infrastructure/check-workstation b/instruqt-tracks/hcp-terraform-azure/08-versioned-infrastructure/check-workstation similarity index 91% rename from instruqt-tracks/terraform-cloud-azure/08-versioned-infrastructure/check-workstation rename to instruqt-tracks/hcp-terraform-azure/08-versioned-infrastructure/check-workstation index 0d7ad013..baee64b0 100755 --- a/instruqt-tracks/terraform-cloud-azure/08-versioned-infrastructure/check-workstation +++ b/instruqt-tracks/hcp-terraform-azure/08-versioned-infrastructure/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-azure -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) VCS_HASHICAT=$(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/hashicat-azure | jq -r '.data.attributes | .["vcs-repo"] | .identifier' | cut -f2 -d '/') diff --git a/instruqt-tracks/terraform-cloud-azure/08-versioned-infrastructure/setup-workstation b/instruqt-tracks/hcp-terraform-azure/08-versioned-infrastructure/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/08-versioned-infrastructure/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/08-versioned-infrastructure/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/08-versioned-infrastructure/solve-workstation b/instruqt-tracks/hcp-terraform-azure/08-versioned-infrastructure/solve-workstation similarity index 96% rename from instruqt-tracks/terraform-cloud-azure/08-versioned-infrastructure/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/08-versioned-infrastructure/solve-workstation index 15a5316d..476b704c 100755 --- a/instruqt-tracks/terraform-cloud-azure/08-versioned-infrastructure/solve-workstation +++ b/instruqt-tracks/hcp-terraform-azure/08-versioned-infrastructure/solve-workstation @@ -7,7 +7,7 @@ set -o history cd /root/hashicat-azure -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) WORKSPACE_ID=$(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" https://app.terraform.io/api/v2/organizations/$ORG/workspaces/hashicat-azure | jq -r .data.id) diff --git a/instruqt-tracks/terraform-cloud-azure/09-vcs-collaboration/assignment.md b/instruqt-tracks/hcp-terraform-azure/09-vcs-collaboration/assignment.md similarity index 86% rename from instruqt-tracks/terraform-cloud-azure/09-vcs-collaboration/assignment.md rename to instruqt-tracks/hcp-terraform-azure/09-vcs-collaboration/assignment.md index 40eebdc0..e577cc81 100755 --- a/instruqt-tracks/terraform-cloud-azure/09-vcs-collaboration/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/09-vcs-collaboration/assignment.md @@ -1,9 +1,10 @@ --- slug: vcs-collaboration +id: fpri25yhry3y type: challenge title: "\U0001F46C Collaborating with VCS" teaser: | - Now that you've got your version control system configured with Terraform Cloud, you can collaborate on changes to your Terraform built infrastructure. + Now that you've got your version control system configured with HCP Terraform, you can collaborate on changes to your Terraform built infrastructure. notes: - type: text contents: "The marketing team at ACME is running a special promotion next week and @@ -44,10 +45,10 @@ Welcome to ${PREFIX}'s app. Replace this text with your own. At the bottom of the screen, select the option that says "Create a new branch for this commit and start a pull request." Then, click the "Propose changes" button. Finally, submit a pull request by clicking the "Create pull request" button. -You'll notice that a check is run against your Terraform Cloud workspace. If you right-click the "Details" link of the check and then open the link in a new tab, you'll see the speculative plan that has been run in your workspace. +You'll notice that a check is run against your HCP Terraform workspace. If you right-click the "Details" link of the check and then open the link in a new tab, you'll see the speculative plan that has been run in your workspace. However, if you do open the link, you might need to refresh the GitHub page in order to see that the check has passed and so that the "Merge pull request" button will be enabled. Your partner should now review and approve the pull request. Or, if you're working alone you can review your own pull request and merge the changes. -Once you've merged your changes to the master branch, watch the Terraform run that starts in the Terraform Cloud UI. \ No newline at end of file +Once you've merged your changes to the master branch, watch the Terraform run that starts in the HCP Terraform UI. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-azure/09-vcs-collaboration/check-workstation b/instruqt-tracks/hcp-terraform-azure/09-vcs-collaboration/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/09-vcs-collaboration/check-workstation rename to instruqt-tracks/hcp-terraform-azure/09-vcs-collaboration/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/09-vcs-collaboration/setup-workstation b/instruqt-tracks/hcp-terraform-azure/09-vcs-collaboration/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/09-vcs-collaboration/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/09-vcs-collaboration/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/09-vcs-collaboration/solve-workstation b/instruqt-tracks/hcp-terraform-azure/09-vcs-collaboration/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/09-vcs-collaboration/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/09-vcs-collaboration/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/10-controlling-costs/assignment.md b/instruqt-tracks/hcp-terraform-azure/10-controlling-costs/assignment.md similarity index 80% rename from instruqt-tracks/terraform-cloud-azure/10-controlling-costs/assignment.md rename to instruqt-tracks/hcp-terraform-azure/10-controlling-costs/assignment.md index abebd3cb..acf52511 100755 --- a/instruqt-tracks/terraform-cloud-azure/10-controlling-costs/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/10-controlling-costs/assignment.md @@ -1,5 +1,6 @@ --- slug: controlling-costs +id: bftlxed2bfvk type: challenge title: $ Controlling Costs with Cost Estimation teaser: | @@ -9,11 +10,11 @@ notes: contents: "Developers often run bigger VMs than are really necessary. Karen from finance pays you a visit to see if you can help:\n\n>\U0001F469\U0001F3FC‍\U0001F4BC\U0001F4C8 Hello sysadmin, we got a really big Azure bill last month and would like you to - inform developers using Terraform Cloud about estimated monthly costs of their - workspaces before they apply runs. Can you do that?" + inform developers using HCP Terraform about estimated monthly costs of their workspaces + before they apply runs. Can you do that?" - type: text contents: |- - You can learn more about Terraform Cloud's Cost Estimation feature with these links: + You can learn more about HCP Terraform's Cost Estimation feature with these links: * https://www.terraform.io/docs/cloud/cost-estimation/index.html * https://www.terraform.io/docs/enterprise/admin/integration.html#cost-estimation-integration @@ -36,15 +37,15 @@ tabs: difficulty: basic timelimit: 1800 --- -In this challenge you'll use Terraform Cloud's [Cost Estimation](https://www.terraform.io/docs/cloud/cost-estimation/index.html) feature to inform developers what the estimated monthly costs of their hashicat-azure workspace will be. +In this challenge you'll use HCP Terraform's [Cost Estimation](https://www.terraform.io/docs/cloud/cost-estimation/index.html) feature to inform developers what the estimated monthly costs of their hashicat-azure workspace will be. -Enabling Cost Estimation across all workspaces of an organization in Terraform Cloud is very easy. All you need to do is visit the "Settings | Cost estimation" page of your organization and check the "Enable Cost Estimation for all workspaces" checkbox. +Enabling Cost Estimation across all workspaces of an organization in HCP Terraform is very easy. All you need to do is visit the "Settings | Cost estimation" page of your organization and check the "Enable Cost Estimation for all workspaces" checkbox. Note that in Terraform Enterprise, you also need to provide cloud credentials for the clouds for which you want cost estimates. See this [link](https://www.terraform.io/docs/enterprise/admin/integration.html#cost-estimation-integration). To see a cost estimate for your hashicat-azure workspace, just trigger a new run in it by clicking the `Actions` drop-down and then selecting "Start a new plan". You will then see the estimated monthly cost of the workspace which is based on the costs of the `azurerm_virtual_machine` resource provisioned for the hashicat-azure workspace. -A complete list of Azure resources for which cost estimates are available in Terraform Cloud is [here](https://www.terraform.io/docs/cloud/cost-estimation/azure.html). +A complete list of Azure resources for which cost estimates are available in HCP Terraform is [here](https://www.terraform.io/docs/cloud/cost-estimation/azure.html). Finally, note that Sentinel's [tfrun](https://www.terraform.io/docs/cloud/sentinel/import/tfrun.html) import can be used to prevent runs from being applied when workspaces would incur excessive monthly costs or cost increases. diff --git a/instruqt-tracks/terraform-cloud-azure/10-controlling-costs/check-workstation b/instruqt-tracks/hcp-terraform-azure/10-controlling-costs/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/10-controlling-costs/check-workstation rename to instruqt-tracks/hcp-terraform-azure/10-controlling-costs/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/10-controlling-costs/setup-workstation b/instruqt-tracks/hcp-terraform-azure/10-controlling-costs/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/10-controlling-costs/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/10-controlling-costs/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/10-controlling-costs/solve-workstation b/instruqt-tracks/hcp-terraform-azure/10-controlling-costs/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/10-controlling-costs/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/10-controlling-costs/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/11-a-sentinel-stands-guard/assignment.md b/instruqt-tracks/hcp-terraform-azure/11-a-sentinel-stands-guard/assignment.md similarity index 97% rename from instruqt-tracks/terraform-cloud-azure/11-a-sentinel-stands-guard/assignment.md rename to instruqt-tracks/hcp-terraform-azure/11-a-sentinel-stands-guard/assignment.md index 70a78a91..00b49f2b 100755 --- a/instruqt-tracks/terraform-cloud-azure/11-a-sentinel-stands-guard/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/11-a-sentinel-stands-guard/assignment.md @@ -1,5 +1,6 @@ --- slug: a-sentinel-stands-guard +id: coqv9hvuxqno type: challenge title: "\U0001F6E1️ Terraform Compliance with Sentinel" teaser: | @@ -43,7 +44,7 @@ Before moving on, please look at the [enforce-mandatory-tags](https://github.com 4. Under **Description** you can enter "Sentinel Policies for our Azure resources". -5. In the **More Options** menu set the **Policies Path** to `/azure`. This tells Terraform Cloud to use the Azure specific policies that are stored in the repo. +5. In the **More Options** menu set the **Policies Path** to `/azure`. This tells HCP Terraform to use the Azure specific policies that are stored in the repo. 6. Leave everything else at its default setting and click on the **Connect policy set** button at the bottom of the page. diff --git a/instruqt-tracks/terraform-cloud-azure/11-a-sentinel-stands-guard/check-workstation b/instruqt-tracks/hcp-terraform-azure/11-a-sentinel-stands-guard/check-workstation similarity index 90% rename from instruqt-tracks/terraform-cloud-azure/11-a-sentinel-stands-guard/check-workstation rename to instruqt-tracks/hcp-terraform-azure/11-a-sentinel-stands-guard/check-workstation index d2ae23fd..9e7ac5cc 100755 --- a/instruqt-tracks/terraform-cloud-azure/11-a-sentinel-stands-guard/check-workstation +++ b/instruqt-tracks/hcp-terraform-azure/11-a-sentinel-stands-guard/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-azure -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) curl -s --header "Authorization: Bearer $TOKEN" https://app.terraform.io/api/v2/organizations/$ORG/policy-sets | jq -r '.data | .[] | .attributes.name' | grep tfc-workshops-sentinel || fail-message "Uh oh, it looks like you haven't attached the tfc-workshops-sentinel policy set to your organization. Make sure you have forked the repo and added the policy set to your organization." diff --git a/instruqt-tracks/terraform-cloud-azure/11-a-sentinel-stands-guard/setup-workstation b/instruqt-tracks/hcp-terraform-azure/11-a-sentinel-stands-guard/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/11-a-sentinel-stands-guard/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/11-a-sentinel-stands-guard/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/11-a-sentinel-stands-guard/solve-workstation b/instruqt-tracks/hcp-terraform-azure/11-a-sentinel-stands-guard/solve-workstation similarity index 99% rename from instruqt-tracks/terraform-cloud-azure/11-a-sentinel-stands-guard/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/11-a-sentinel-stands-guard/solve-workstation index 4dc60e43..df539ea9 100755 --- a/instruqt-tracks/terraform-cloud-azure/11-a-sentinel-stands-guard/solve-workstation +++ b/instruqt-tracks/hcp-terraform-azure/11-a-sentinel-stands-guard/solve-workstation @@ -7,7 +7,7 @@ set -o history cd /root/hashicat-azure -# Get TFC ORG and TOKEN +# Get HCP Terraform ORG and TOKEN if [[ -f /root/skipconfig.json ]]; then ORG=$(jq -r .org < /root/skipconfig.json) TOKEN=$(jq -r .token < /root/skipconfig.json) diff --git a/instruqt-tracks/terraform-cloud-aws/12-quiz-3/assignment.md b/instruqt-tracks/hcp-terraform-azure/12-quiz-3/assignment.md similarity index 96% rename from instruqt-tracks/terraform-cloud-aws/12-quiz-3/assignment.md rename to instruqt-tracks/hcp-terraform-azure/12-quiz-3/assignment.md index 89c7d260..3487faf7 100755 --- a/instruqt-tracks/terraform-cloud-aws/12-quiz-3/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/12-quiz-3/assignment.md @@ -1,6 +1,6 @@ --- slug: quiz-3 -id: ebrlegkixdmz +id: xqpzxbnefzl1 type: quiz title: "\U0001F4DD Quiz 3 - Version Control and Terraform" teaser: | diff --git a/instruqt-tracks/terraform-cloud-azure/13-private-module-registry/assignment.md b/instruqt-tracks/hcp-terraform-azure/13-private-module-registry/assignment.md similarity index 80% rename from instruqt-tracks/terraform-cloud-azure/13-private-module-registry/assignment.md rename to instruqt-tracks/hcp-terraform-azure/13-private-module-registry/assignment.md index f72e52b0..512a08ba 100755 --- a/instruqt-tracks/terraform-cloud-azure/13-private-module-registry/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/13-private-module-registry/assignment.md @@ -1,9 +1,10 @@ --- slug: private-module-registry +id: peerq25uiais type: challenge -title: "\U0001F4DA Private Module Registry" +title: "\U0001F4DA Terraform Private Registry" teaser: | - Some of your users want a simple way to deploy databases and network configurations. Enter the Private Module Registry, in which you can store standard, re-usable Terraform code that others can use in their own workspaces. + Some of your users want a simple way to deploy databases and network configurations. Enter the Terraform Private Registry, in which you can store standard, re-usable Terraform code that others can use in their own workspaces. notes: - type: text contents: "Most of the devops team is using Terraform to build and configure their @@ -23,7 +24,7 @@ tabs: difficulty: basic timelimit: 1800 --- -In this challenge you'll learn to use the Private Module Registry, which allows you to store and version re-usable modules of Terraform code. +In this challenge you'll learn to use the Terraform Private Registry, which allows you to store and version re-usable modules of Terraform code. Instead of writing this module from scratch you can copy the existing Azure network module from the public Terraform registry. Visit this [URL](https://registry.terraform.io/modules/Azure/network/azurerm) to view the Azure Network module. @@ -33,7 +34,7 @@ Note the "Source Code" link that points at the GitHub repository for this module * Uncheck `Copy the master branch only` at the bottom of the **Create a new fork** page on Github so your fork contains tags that are used for publishing modules. -Back in the Terraform Cloud UI, click on the "Registry" tab at the top of the page. Then click the "Publish" button and the "Module" button that appears beneath it. Click on the "GitHub" button and select the terraform-azurerm-network repository that you just forked. +Back in the HCP Terraform UI, click on the "Registry" tab at the top of the page. Then click the "Publish" button and the "Module" button that appears beneath it. Click on the "GitHub" button and select the terraform-azurerm-network repository that you just forked. Click on the "Publish module" button. @@ -41,7 +42,7 @@ After the module is completely published, please select version `3.5.0` of the m Click on the "Inputs" tab of the module. This indicates that you have to specify the `resource_group_name` module variable when creating an instance of the module. For inputs that reference resources already created in your main.tf file, we recommend that you use references that refer to the appropriate attributes of those resources. But you can also use hard-coded values if you prefer. -Create a new Terraform file called `network.tf` in the hashicat-azure directory and use the module in this file to create a new Virtual Network for Gaurav. You can copy the module creation code from the "Usage Instructions" section of the module's page in your Private Module Registry and just add the required `resource_group_name` module variable. +Create a new Terraform file called `network.tf` in the hashicat-azure directory and use the module in this file to create a new Virtual Network for Gaurav. You can copy the module creation code from the "Usage Instructions" section of the module's page in your Terraform Private Registry and just add the required `resource_group_name` module variable. After you have saved the `network.tf` file, you can add, commit, and push your latest changes to your remote fork. You will be prompted to log onto your github account to push the change. diff --git a/instruqt-tracks/terraform-cloud-azure/13-private-module-registry/check-workstation b/instruqt-tracks/hcp-terraform-azure/13-private-module-registry/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/13-private-module-registry/check-workstation rename to instruqt-tracks/hcp-terraform-azure/13-private-module-registry/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/13-private-module-registry/setup-workstation b/instruqt-tracks/hcp-terraform-azure/13-private-module-registry/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/13-private-module-registry/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/13-private-module-registry/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/13-private-module-registry/solve-workstation b/instruqt-tracks/hcp-terraform-azure/13-private-module-registry/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/13-private-module-registry/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/13-private-module-registry/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/14-api-driven-workflows/assignment.md b/instruqt-tracks/hcp-terraform-azure/14-api-driven-workflows/assignment.md similarity index 76% rename from instruqt-tracks/terraform-cloud-azure/14-api-driven-workflows/assignment.md rename to instruqt-tracks/hcp-terraform-azure/14-api-driven-workflows/assignment.md index c27fed7a..08e54b9b 100755 --- a/instruqt-tracks/terraform-cloud-azure/14-api-driven-workflows/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/14-api-driven-workflows/assignment.md @@ -1,21 +1,22 @@ --- slug: api-driven-workflows +id: srbdhf4xf3rj type: challenge title: "\U0001F517 API Driven Workflows" teaser: | - Terraform Cloud has a fully featured RESTful API that you can use to integrate with external systems. Where we're going, we don't need a GUI! + HCP Terraform has a fully featured RESTful API that you can use to integrate with external systems. Where we're going, we don't need a GUI! notes: - type: text - contents: "You've mostly been using the Terraform Cloud Web UI and command line - interface (CLI) to build infrastructure. The devops team needs to integrate with - their CI/CD tool via the API. Lars sends you a chat message:\n\n>\U0001F468\U0001F3FB‍\U0001F9B2 + contents: "You've mostly been using the HCP Terraform Web UI and command line interface + (CLI) to build infrastructure. The devops team needs to integrate with their CI/CD + tool via the API. Lars sends you a chat message:\n\n>\U0001F468\U0001F3FB‍\U0001F9B2 Hey senior sysadmin, we have this new continuous integration tool that the developers are using to test their application code. I'd like you to test some API calls - to our Terraform Cloud organization and workspaces. Can you please take a look - at this and learn how the API works?" + to our HCP Terraform organization and workspaces. Can you please take a look at + this and learn how the API works?" - type: text contents: |- - Feeling stuck? Remember that the Terraform Cloud docs contain examples for all API endpoints: + Feeling stuck? Remember that the HCP Terraform docs contain examples for all API endpoints: https://www.terraform.io/docs/cloud/api/workspace-variables.html#create-a-variable https://www.terraform.io/docs/cloud/api/run.html#create-a-run - type: text @@ -40,7 +41,7 @@ tabs: difficulty: basic timelimit: 1800 --- -In the final challenge you'll directly interact with the Terraform Cloud API. Terraform Cloud has a rich API that lets you do everything you can do in the GUI and more. Intermediate and advanced users utilize the API to create complex integrations that work with external systems. +In the final challenge you'll directly interact with the HCP Terraform API. HCP Terraform has a rich API that lets you do everything you can do in the GUI and more. Intermediate and advanced users utilize the API to create complex integrations that work with external systems. Your goal is to configure three variables in the hashicat-azure workspace and then trigger a Terraform run using only the API. The three variables you need to configure are: - `placeholder` An image placeholder URL. Examples: placekitten.com, placedog.net, picsum.photos diff --git a/instruqt-tracks/terraform-cloud-azure/14-api-driven-workflows/check-workstation b/instruqt-tracks/hcp-terraform-azure/14-api-driven-workflows/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/14-api-driven-workflows/check-workstation rename to instruqt-tracks/hcp-terraform-azure/14-api-driven-workflows/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/14-api-driven-workflows/setup-workstation b/instruqt-tracks/hcp-terraform-azure/14-api-driven-workflows/setup-workstation similarity index 91% rename from instruqt-tracks/terraform-cloud-azure/14-api-driven-workflows/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/14-api-driven-workflows/setup-workstation index ea585dba..6c7df3cf 100755 --- a/instruqt-tracks/terraform-cloud-azure/14-api-driven-workflows/setup-workstation +++ b/instruqt-tracks/hcp-terraform-azure/14-api-driven-workflows/setup-workstation @@ -29,7 +29,7 @@ cat <<-EOF > /root/hashicat-azure/json/apply.json "data": { "attributes": { "is-destroy":false, - "message": "Terraform Cloud API is Magic! 🦄 🌈 🧙‍♂️" + "message": "HCP Terraform API is Magic! 🦄 🌈 🧙‍♂️" }, "type":"runs", "relationships": { diff --git a/instruqt-tracks/terraform-cloud-azure/14-api-driven-workflows/solve-workstation b/instruqt-tracks/hcp-terraform-azure/14-api-driven-workflows/solve-workstation similarity index 98% rename from instruqt-tracks/terraform-cloud-azure/14-api-driven-workflows/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/14-api-driven-workflows/solve-workstation index 0d4c1735..9d30c3c6 100755 --- a/instruqt-tracks/terraform-cloud-azure/14-api-driven-workflows/solve-workstation +++ b/instruqt-tracks/hcp-terraform-azure/14-api-driven-workflows/solve-workstation @@ -65,7 +65,7 @@ cat <<-EOF > /tmp/width.json } EOF -# Create our variables in terraform cloud +# Create our variables in HCP Terraform curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/placeholder.json https://app.terraform.io/api/v2/workspaces/$WORKSPACE_ID/vars curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/height.json https://app.terraform.io/api/v2/workspaces/$WORKSPACE_ID/vars diff --git a/instruqt-tracks/hcp-terraform-azure/15-quiz-4/assignment.md b/instruqt-tracks/hcp-terraform-azure/15-quiz-4/assignment.md new file mode 100755 index 00000000..15ab89c4 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-azure/15-quiz-4/assignment.md @@ -0,0 +1,20 @@ +--- +slug: quiz-4 +id: seewsjogvrwl +type: quiz +title: "\U0001F4DD Quiz 4 - Terraform Private Registry" +teaser: | + A quiz about the Terraform Private Registry +notes: +- type: text + contents: "\U0001F431‍\U0001F4BB Congratulations! You've been promoted to HCP Terraform + Ninja." +answers: +- "True" +- "False" +solution: +- 1 +difficulty: basic +timelimit: 1800 +--- +The Terraform Terraform Private Registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-cloud-azure/16-this-is-the-end/assignment.md b/instruqt-tracks/hcp-terraform-azure/16-this-is-the-end/assignment.md similarity index 85% rename from instruqt-tracks/terraform-cloud-azure/16-this-is-the-end/assignment.md rename to instruqt-tracks/hcp-terraform-azure/16-this-is-the-end/assignment.md index 44fe2bc0..5499f0e3 100755 --- a/instruqt-tracks/terraform-cloud-azure/16-this-is-the-end/assignment.md +++ b/instruqt-tracks/hcp-terraform-azure/16-this-is-the-end/assignment.md @@ -1,5 +1,6 @@ --- slug: this-is-the-end +id: hoky4yzrv9yr type: challenge title: "\U0001F469\U0001F3FB‍\U0001F52C Open Lab" teaser: | @@ -18,6 +19,6 @@ tabs: difficulty: basic timelimit: 1800 --- -Congratulations, you've learned all the major features of Terraform Cloud. +Congratulations, you've learned all the major features of HCP Terraform. You can continue to build and experiment with Terraform, or simply click the Check button to complete the track. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-azure/16-this-is-the-end/check-workstation b/instruqt-tracks/hcp-terraform-azure/16-this-is-the-end/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/16-this-is-the-end/check-workstation rename to instruqt-tracks/hcp-terraform-azure/16-this-is-the-end/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/16-this-is-the-end/cleanup-workstation b/instruqt-tracks/hcp-terraform-azure/16-this-is-the-end/cleanup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/16-this-is-the-end/cleanup-workstation rename to instruqt-tracks/hcp-terraform-azure/16-this-is-the-end/cleanup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/16-this-is-the-end/setup-workstation b/instruqt-tracks/hcp-terraform-azure/16-this-is-the-end/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/16-this-is-the-end/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/16-this-is-the-end/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/16-this-is-the-end/solve-workstation b/instruqt-tracks/hcp-terraform-azure/16-this-is-the-end/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/16-this-is-the-end/solve-workstation rename to instruqt-tracks/hcp-terraform-azure/16-this-is-the-end/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/Makefile b/instruqt-tracks/hcp-terraform-azure/Makefile similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/Makefile rename to instruqt-tracks/hcp-terraform-azure/Makefile diff --git a/instruqt-tracks/terraform-cloud-azure/assets/create_new_org.png b/instruqt-tracks/hcp-terraform-azure/assets/create_new_org.png similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/assets/create_new_org.png rename to instruqt-tracks/hcp-terraform-azure/assets/create_new_org.png diff --git a/instruqt-tracks/terraform-cloud-azure/config.yml b/instruqt-tracks/hcp-terraform-azure/config.yml similarity index 100% rename from instruqt-tracks/terraform-cloud-azure/config.yml rename to instruqt-tracks/hcp-terraform-azure/config.yml diff --git a/instruqt-tracks/terraform-cloud-azure/track.yml b/instruqt-tracks/hcp-terraform-azure/track.yml similarity index 79% rename from instruqt-tracks/terraform-cloud-azure/track.yml rename to instruqt-tracks/hcp-terraform-azure/track.yml index 5231d2f4..79c86507 100755 --- a/instruqt-tracks/terraform-cloud-azure/track.yml +++ b/instruqt-tracks/hcp-terraform-azure/track.yml @@ -2,40 +2,41 @@ # SPDX-License-Identifier: MPL-2.0 slug: terraform-cloud-azure -id: ywejivwkxtlp -title: Terraform Cloud with Azure +title: HCP Terraform with Azure teaser: | Join the ACME devops team on their journey to fully automated provisioning with Azure Cloud. description: |- Work with the devops team at Acme Inc. as they go from manual provisioning with Terraform to a fully automated devops workflow with code reviews, testing, and automated provisioning in Azure Cloud. This workshop covers the following topics: - * Terraform Open Source - * Terraform Cloud + * Terraform Community Edition + * HCP Terraform * Remote State * Secure Variable Storage * Version Control Integration * Role-based Access Controls * Sentinel Security Policies * Collaboration on Changes - * Private Module Registry + * Terraform Private Registry * API Driven Workflows icon: https://storage.googleapis.com/instruqt-hashicorp-tracks/logo/terraform.png tags: -- terraform - azure - cloud - enterprise +- terraform owner: hashicorp developers: -- roger@hashicorp.com -- sean.carolan@hashicorp.com - thomas@hashicorp.com - swalker@hashicorp.com - randy.keener@hashicorp.com -- gilberto@hashicorp.com +- jenna.wong@hashicorp.com show_timer: true +idle_timeout: 3000 +timelimit: 14400 lab_config: overlay: false width: 25 position: right -checksum: "8536292711623770361" + sidebar_enabled: true + feedback_recap_enabled: true + loadingMessages: true \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-azure/track_scripts/setup-workstation b/instruqt-tracks/hcp-terraform-azure/track_scripts/setup-workstation similarity index 94% rename from instruqt-tracks/terraform-cloud-azure/track_scripts/setup-workstation rename to instruqt-tracks/hcp-terraform-azure/track_scripts/setup-workstation index 94625724..4e08dd3a 100755 --- a/instruqt-tracks/terraform-cloud-azure/track_scripts/setup-workstation +++ b/instruqt-tracks/hcp-terraform-azure/track_scripts/setup-workstation @@ -45,18 +45,18 @@ echo "******************************************************************" echo "* Skip to Challenge Configuration Script" echo "******************************************************************" echo -echo "This script will set up your Terraform Cloud token and organization" +echo "This script will set up your HCP Terraform token and organization" echo "configuration. Once that is done you may use the 'skip to challenge'" echo "feature of Instruqt to fast-forward to a particular point in the" echo "training." echo -echo "Please enter your Terraform Cloud organization name." +echo "Please enter your HCP Terraform organization name." read ORG echo echo "Please enter your workspace name." read WORKSPACE echo -echo "Please enter your Terraform Cloud user token." +echo "Please enter your HCP Terraform user token." read TOKEN echo echo "Please enter your GitHub user ID." diff --git a/instruqt-tracks/terraform-cloud-bonus-lab/Makefile b/instruqt-tracks/hcp-terraform-bonus-lab/Makefile similarity index 100% rename from instruqt-tracks/terraform-cloud-bonus-lab/Makefile rename to instruqt-tracks/hcp-terraform-bonus-lab/Makefile diff --git a/instruqt-tracks/terraform-cloud-bonus-lab/config.yml b/instruqt-tracks/hcp-terraform-bonus-lab/config.yml similarity index 100% rename from instruqt-tracks/terraform-cloud-bonus-lab/config.yml rename to instruqt-tracks/hcp-terraform-bonus-lab/config.yml diff --git a/instruqt-tracks/terraform-cloud-bonus-lab/setup-our-environment/check-workstation b/instruqt-tracks/hcp-terraform-bonus-lab/setup-our-environment/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-bonus-lab/setup-our-environment/check-workstation rename to instruqt-tracks/hcp-terraform-bonus-lab/setup-our-environment/check-workstation diff --git a/instruqt-tracks/terraform-cloud-bonus-lab/setup-our-environment/setup-workstation b/instruqt-tracks/hcp-terraform-bonus-lab/setup-our-environment/setup-workstation similarity index 94% rename from instruqt-tracks/terraform-cloud-bonus-lab/setup-our-environment/setup-workstation rename to instruqt-tracks/hcp-terraform-bonus-lab/setup-our-environment/setup-workstation index 413489f3..c888c7b2 100644 --- a/instruqt-tracks/terraform-cloud-bonus-lab/setup-our-environment/setup-workstation +++ b/instruqt-tracks/hcp-terraform-bonus-lab/setup-our-environment/setup-workstation @@ -45,18 +45,18 @@ echo "******************************************************************" echo "* Skip to Challenge Configuration Script" echo "******************************************************************" echo -echo "This script will set up your Terraform Cloud token and organization" +echo "This script will set up your HCP Terraform token and organization" echo "configuration. Once that is done you may use the 'skip to challenge'" echo "feature of Instruqt to fast-forward to a particular point in the" echo "training." echo -echo "Please enter your Terraform Cloud organization name." +echo "Please enter your HCP Terraform organization name." read ORG echo echo "Please enter your workspace name." read WORKSPACE echo -echo "Please enter your Terraform Cloud user token." +echo "Please enter your HCP Terraform user token." read TOKEN echo eecho "Please enter your GitHub user ID." diff --git a/instruqt-tracks/terraform-cloud-bonus-lab/setup-our-environment/solve-workstation b/instruqt-tracks/hcp-terraform-bonus-lab/setup-our-environment/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-bonus-lab/setup-our-environment/solve-workstation rename to instruqt-tracks/hcp-terraform-bonus-lab/setup-our-environment/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-bonus-lab/track.yml b/instruqt-tracks/hcp-terraform-bonus-lab/track.yml similarity index 85% rename from instruqt-tracks/terraform-cloud-bonus-lab/track.yml rename to instruqt-tracks/hcp-terraform-bonus-lab/track.yml index 434faf54..9410c1b3 100644 --- a/instruqt-tracks/terraform-cloud-bonus-lab/track.yml +++ b/instruqt-tracks/hcp-terraform-bonus-lab/track.yml @@ -2,31 +2,28 @@ # SPDX-License-Identifier: MPL-2.0 slug: terraform-cloud-bonus-lab -id: gxdsws9y9bsu -type: track -title: Bonus Lab - Terraform Cloud +title: Bonus Lab - HCP Terraform teaser: | - Ready for more? Test your Terraform Cloud skills with this intermediate level lab challenge. -description: If you've completed one of the Terraform Cloud tracks and would like - an extra challenge, try this bonus lab. In this track you'll build an approval pipeline + Ready for more? Test your HCP Terraform skills with this intermediate level lab challenge. +description: If you've completed one of the HCP Terraform tracks and would like an + extra challenge, try this bonus lab. In this track you'll build an approval pipeline and development branch for your Terraform code, then ensure that all tests pass in a dev environment before approving the change to production. icon: https://storage.googleapis.com/instruqt-hashicorp-tracks/logo/terraform.png tags: -- terraform - azure - aws +- terraform - gcp owner: hashicorp developers: - roger@hashicorp.com - jthompson@hashicorp.com -private: true -published: true +- jenna.wong@hashicorp.com show_timer: true challenges: - slug: setup-our-environment - id: b0ek2h24eln1 + id: ywxxkfdjwvmb type: challenge title: "\U0001F432 Bonus Lab - The Gauntlet \U0001F9D9\U0001F3FC‍♀️" teaser: | @@ -34,14 +31,14 @@ challenges: notes: - type: text contents: "\U0001F3F0 Welcome to the Gauntlet! This challenging lab will require - all the skills you learned in the Terraform Cloud workshop. \U0001F9DD\U0001F3FB" + all the skills you learned in the HCP Terraform workshop. \U0001F9DD\U0001F3FB" - type: text contents: Branch protection allows you to create rules that must be passed before any changes get merged into your master branch. - type: image url: https://storage.googleapis.com/instruqt-hashicorp-tracks/terraform-cloud-bonuslab/git_branch_protection.png assignment: |- - Welcome back! This is the bonus lab for the Terraform Cloud tracks. There are prerequisites that must be set up before you can begin the bonus lab. This is an intermediate level challenge. + Welcome back! This is the bonus lab for the HCP Terraform tracks. There are prerequisites that must be set up before you can begin the bonus lab. This is an intermediate level challenge. During this lab you'll use the "Code Editor" tab on the left. As you work through the setup steps below, you'll see some Terraform configuration files for the hashicat application show up. When you edit any of these files, you will see a blue dot and a disk icon on the tab above it. **Be sure to click the disk icon to save your changes** -- there is no "auto-saving" in the Instruqt editor! @@ -55,8 +52,8 @@ challenges: 5. Open the file called `main.tf`. Note that the file type at the bottom of the screen was automatically set to "hcl" to give optimized syntax highlighting and colors. 6. Add, commit, and push your changes to the remote **dev** branch. - ### Terraform Cloud Setup - 1. Log onto your Terraform Cloud organization and create a new workspace called **hashicat-dev**. + ### HCP Terraform Setup + 1. Log onto your HCP Terraform organization and create a new workspace called **hashicat-dev**. 2. This time make sure it pulls from the **dev** branch instead of the master branch. Remember that you can choose which branch to target when you set up your workspace. 3. Enable another policy set from your **tfc-workshop-sentinel** repo, this time use the `bonus_lab` directory as the source. Name the policy **tfc-workshop-bonuslab**. Set this policy to be enforced organization-wide. HINT: You'll be connecting to the same sentinel repo we used before, but pointing at a **different directory**. You can select the directory you want to use when you create the policy set. 4. Echo out your credentials and store them as sensitive variables in both dev and production workspaces. You'll need to replace the credentials you used in the previous lab, as they may already be expired. @@ -115,4 +112,12 @@ challenges: hostname: workstation difficulty: basic timelimit: 7200 -checksum: "9533558204772732614" +idle_timeout: 300 +timelimit: 14400 +lab_config: + overlay: false + width: 33 + position: right + sidebar_enabled: true + feedback_recap_enabled: true + loadingMessages: true \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/01-setup-our-environment/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/01-setup-our-environment/assignment.md similarity index 96% rename from instruqt-tracks/terraform-cloud-gcp-v2/01-setup-our-environment/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/01-setup-our-environment/assignment.md index 2234dbcf..c324e415 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/01-setup-our-environment/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/01-setup-our-environment/assignment.md @@ -1,5 +1,6 @@ --- slug: setup-our-environment +id: noly3kbyvobp type: challenge title: | Getting Started - Explore the lab @@ -84,7 +85,7 @@ In your workstation, there are two folders where you interact during the exercis 1. The hashicat-gcp folder contains Terraform code for the application deployment. -2. The terraform-cloud folder provides utility code to set up your Terraform Cloud resources. +2. The hcp-terraform folder provides utility code to set up your HCP Terraform resources. --- There are other folders that contain utilities for the exercises. We exclude them from the Code Editor for simplicity. You do not need to edit anything in them. diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/01-setup-our-environment/check-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/01-setup-our-environment/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/01-setup-our-environment/check-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/01-setup-our-environment/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/01-setup-our-environment/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/01-setup-our-environment/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/01-setup-our-environment/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/01-setup-our-environment/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/01-setup-our-environment/solve-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/01-setup-our-environment/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/01-setup-our-environment/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/01-setup-our-environment/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/assignment.md similarity index 75% rename from instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/assignment.md index 277e1d8d..fe9a0119 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/assignment.md @@ -1,15 +1,16 @@ --- -slug: terraform-cloud-setup +slug: hcp-terraform-setup +id: 4syvvo287jo1 type: challenge -title: Terraform Cloud Setup +title: HCP Terraform Setup teaser: | - Customize your Terraform Cloud resources. + Customize your HCP Terraform resources. notes: - type: text contents: | - With your Terraform Cloud account + With your HCP Terraform account - 1. Create a new Terraform Cloud Organization + 1. Create a new HCP Terraform Organization 2. Enable 14-day Trial Plan of "Plus Tier" features 3. Create a new personal account token 4. Create a dedicated workspace @@ -130,17 +131,17 @@ w { } -The first step to begin work with your deployment tasks is to set up your Terraform Cloud resources. +The first step to begin work with your deployment tasks is to set up your HCP Terraform resources. -1- Terraform Cloud Organization +1- HCP Terraform Organization === -- Sign up for a free Terraform Cloud account at https://app.terraform.io/signup/account. +- Sign up for a free HCP Terraform account at https://app.terraform.io/signup/account. - If you already have an account, sign in with your existing credentials. -2- Terraform Cloud Trial Plan +2- HCP Terraform Trial Plan === -- Click on [THIS](https://app.terraform.io/app/organizations/new?trial=workshop2023) link to create a Terraform Cloud Organization for this workshop. +- Click on [THIS](https://app.terraform.io/app/organizations/new?trial=workshop2023) link to create a HCP Terraform Organization for this workshop. - Use the Create organization & start 14 day trial button to enable "Plus Tier" features in your organization. Please see the image below. @@ -148,15 +149,15 @@ The first step to begin work with your deployment tasks is to set up your Terraf - If you have an existing account and already used a trial, please create a different organization and unlock the 14-day "Plus Tier" plan features. -3- Terraform Cloud Token +3- HCP Terraform Token === -- Use this [link](https://app.terraform.io/app/settings/tokens?source=terraform-login) to visit the User Settings-Tokens page in your Terraform Cloud account. +- Use this [link](https://app.terraform.io/app/settings/tokens?source=terraform-login) to visit the User Settings-Tokens page in your HCP Terraform account. - Use the Create API token button to generate a new **personal user token** to use in this workshop. -- Make sure to save your Terraform Cloud token. It will not be displayed again. +- Make sure to save your HCP Terraform token. It will not be displayed again. -- Move to the Terminal tab and store your Terraform Cloud Token locally with the following command: +- Move to the Terminal tab and store your HCP Terraform Token locally with the following command: ```bash terraform login @@ -164,33 +165,33 @@ terraform login ``` -4- Terraform Cloud Workspace +4- HCP Terraform Workspace === -Use local Terraform utility deployment code to create and configure a new Terraform Cloud Workspace. +Use local Terraform utility deployment code to create and configure a new HCP Terraform Workspace. -- Use the Code Editor tab and expand the terraform-cloud folder and open the file terraform.tfvars +- Use the Code Editor tab and expand the hcp-terraform folder and open the file terraform.tfvars -- Replace the `YOUR_ORGANIZATION` placeholder with your Terraform Cloud organization name. +- Replace the `YOUR_ORGANIZATION` placeholder with your HCP Terraform organization name. -- We default the name of your Terraform Cloud workspace to `hashicat-gcp`. You can choose a different name at this time. +- We default the name of your HCP Terraform workspace to `hashicat-gcp`. You can choose a different name at this time. --- - Move to the Terminal tab and execute the following commands: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform init # The following creates a workspace in -# Terraform Cloud called "hashicat-gcp" +# HCP Terraform called "hashicat-gcp" # ... unless the default is changed. terraform apply -auto-approve ``` -- On the Terraform Cloud portal, navigate to Projects & workspaces-hashicat-gcp-Settings-General +- On the HCP Terraform portal, navigate to Projects & workspaces-hashicat-gcp-Settings-General - Note that your new workspace is configured for Local execution. diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/check-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/check-workstation similarity index 71% rename from instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/check-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/check-workstation index ad563a0a..0e636ee9 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/check-workstation +++ b/instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/check-workstation @@ -2,7 +2,7 @@ # Copyright (c) HashiCorp, Inc. set -euxvo pipefail -# Get TFC token and organization +# Get HCP Terraform token and organization # these jq commands may fail, that's okay, we account for # that later, so temporarily disable set -e set +e @@ -20,13 +20,13 @@ if [ -f /tmp/skip-check ]; then fi # Save the Terraform Org and Workspace name as env variables -export ORG=$(grep organization /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) -export WORKSPACE=$(grep workspace /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) +export ORG=$(grep organization /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) +export WORKSPACE=$(grep workspace /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) # VCDL-103 # Do we have a valid token if [ -z "${TFC_TOKEN}" ]; then - fail-message "Unable to find Terraform Cloud Token, please double-check the \"3- Terraform Cloud Token\" steps" + fail-message "Unable to find HCP Terraform Token, please double-check the \"3- HCP Terraform Token\" steps" exit 1 fi @@ -46,12 +46,12 @@ if [ "${STATUS}" != "200" ]; then cat /tmp/.out.json echo "End of output" fi - fail-message "Terraform Cloud Token is not valid, please double-check the \"3- Terraform Cloud Token\" steps" + fail-message "HCP Terraform Token is not valid, please double-check the \"3- HCP Terraform Token\" steps" exit 1 fi rm -f /tmp/.out.json -echo "We have a valid TFC token" +echo "We have a valid HCP Terraform token" # VCDL-103 # Is it a trial organization @@ -71,20 +71,20 @@ if [ "${STATUS}" != "200" ]; then cat /tmp/.out.json echo "End of output" fi - fail-message "Unable to get TFC Organization Subscriptions, please go back to the \"2- Terraform Cloud Trial Plan\" steps" + fail-message "Unable to get HCP Terraform Organization Subscriptions, please go back to the \"2- HCP Terraform Trial Plan\" steps" exit 1 fi TRIAL=$(jq -r '.included[].attributes."identifier"' /tmp/.out.json 2>/dev/null) if [ -z "${TRIAL}" ]; then echo ".included[].attributes.\"identifier\" was empty" - fail-message "Unable to determine TFC Trial Status, please go back to the \"2- Terraform Cloud Trial Plan\" steps" + fail-message "Unable to determine HCP Terraform Trial Status, please go back to the \"2- HCP Terraform Trial Plan\" steps" exit 1 fi if [ "${TRIAL}" != "trial" ]; then echo ".included[].attributes.\"identifier\" was '${TRIAL}' not 'trial'" - fail-message "Your TFC Organization is not a trial one, please go back to the \"2- Terraform Cloud Trial Plan\" step" + fail-message "Your HCP Terraform Organization is not a trial one, please go back to the \"2- HCP Terraform Trial Plan\" step" exit 1 fi diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/cleanup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/cleanup-workstation similarity index 81% rename from instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/cleanup-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/cleanup-workstation index c099b022..5c896bca 100644 --- a/instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/cleanup-workstation +++ b/instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/cleanup-workstation @@ -3,8 +3,8 @@ set -euxvo pipefail # Save the Terraform Org and Workspace name as env variables -export ORG=$(grep organization /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) -export WORKSPACE=$(grep workspace /root/terraform-cloud/terraform.tfvars | cut -d '"' -f2) +export ORG=$(grep organization /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) +export WORKSPACE=$(grep workspace /root/hcp-terraform/terraform.tfvars | cut -d '"' -f2) # These are considered runtime variables, which allow you to use dynamic content in the challenge # assignments and lifecycle scripts. @@ -19,9 +19,9 @@ cd /root/hashicat-$CLOUD_ENV sed -i "s/YOUR_ORGANIZATION/$ORG/g" remote_backend.tf sed -i "s/YOUR_WORKSPACE/$WORKSPACE/g" remote_backend.tf -cp /root/terraform-cloud/terraform.tfvars.example /root/terraform-cloud/terraform.tfvars +cp /root/hcp-terraform/terraform.tfvars.example /root/hcp-terraform/terraform.tfvars -cd /root/terraform-cloud +cd /root/hcp-terraform sed -i "s/YOUR_ORGANIZATION/$ORG/g" terraform.tfvars # This was originally looking in terraform.tfvars.example sed -i "s/YOUR_WORKSPACE/$WORKSPACE/g" terraform.tfvars diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/solve-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/02-terraform-cloud-setup/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/02-hcp-terraform-setup/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/03-centralize-deployments/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/03-centralize-deployments/assignment.md similarity index 83% rename from instruqt-tracks/terraform-cloud-gcp-v2/03-centralize-deployments/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/03-centralize-deployments/assignment.md index aa8d28ec..5e99cf0d 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/03-centralize-deployments/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/03-centralize-deployments/assignment.md @@ -1,9 +1,10 @@ --- slug: centralize-deployments +id: tzh0yl5mqijh type: challenge title: Safekeeping Your Terraform State teaser: | - Deploy your application to Google Cloud. Execute Terraform commands locally and use Terraform Cloud to store and synchronize Terraform State. + Deploy your application to Google Cloud. Execute Terraform commands locally and use HCP Terraform to store and synchronize Terraform State. notes: - type: text contents: |- @@ -11,7 +12,7 @@ notes: Senior operations admin, Robin, shows up at your desk. - > Last night we had trouble rebuilding the website because the deployment code is locked on Lars' laptop, and Lars is on vacation. Can you configure Terraform Cloud to deploy the application and centralize its dependencies? + > Last night we had trouble rebuilding the website because the deployment code is locked on Lars' laptop, and Lars is on vacation. Can you configure HCP Terraform to deploy the application and centralize its dependencies? tabs: - title: Code Editor type: service @@ -92,11 +93,11 @@ timelimit: 1800 display: inline-block; } -The objective of this challenge is to configure remote state using your Terraform Cloud account. +The objective of this challenge is to configure remote state using your HCP Terraform account. - When you perform the deployment of the `hashicat-gcp` application, the Terraform code executes on your workstation. -- We want to centralize and secure the associated Terraform state of your deployment in your Terraform Cloud workspace. +- We want to centralize and secure the associated Terraform state of your deployment in your HCP Terraform workspace. 1- Configure the workspace backend === @@ -132,15 +133,15 @@ terraform apply -auto-approve - When completed, you can follow the `catapp_ip`, or the `catapp_url`, link to open the application instance. -3- See results in Terraform Cloud +3- See results in HCP Terraform === -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and click on Outputs. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and click on Outputs. Please see the example image below. ![Workspace Outputs](../assets/workspace_outputs.png) - From the user interface, you can follow the `catapp_ip`, or the `catapp_url`, link to open the application instance. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-States. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-States. Please see the example image below. ![Workspace State](../assets/workspace_state.png) @@ -152,6 +153,6 @@ Well done! - You successfully deployed the `hashicat-gcp` application. -- The Terraform state is stored securely in the Terraform Cloud platform. +- The Terraform state is stored securely in the HCP Terraform platform. Report to Robin by clicking the Check button for this challenge. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/03-centralize-deployments/check-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/03-centralize-deployments/check-workstation similarity index 87% rename from instruqt-tracks/terraform-cloud-gcp-v2/03-centralize-deployments/check-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/03-centralize-deployments/check-workstation index 9e4bfea2..4a049fde 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/03-centralize-deployments/check-workstation +++ b/instruqt-tracks/hcp-terraform-gcp-v2/03-centralize-deployments/check-workstation @@ -31,14 +31,14 @@ if [[ $EXIT_CODE -ne 0 ]]; then fail-message "Oops, we couldn't find the hashicat-$CLOUD_ENV workspace in your remote_backend.tf config file. Try again." fi -# Verify the organization exists in TFC? +# Verify the organization exists in HCP Terraform? curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then - fail-message "I couldn't find your organization, $ORG in Terraform Cloud. Make sure you created it and that it is configured in your remote_backend.tf file." + fail-message "I couldn't find your organization, $ORG in HCP Terraform. Make sure you created it and that it is configured in your remote_backend.tf file." fi -# Verify the workspace exists in TFC? +# Verify the workspace exists in HCP Terraform? curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/$WORKSPACE | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/03-centralize-deployments/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/03-centralize-deployments/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/03-centralize-deployments/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/03-centralize-deployments/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/03-centralize-deployments/solve-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/03-centralize-deployments/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/03-centralize-deployments/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/03-centralize-deployments/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/04-quiz-1/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/04-quiz-1/assignment.md similarity index 95% rename from instruqt-tracks/terraform-cloud-aws-v2/04-quiz-1/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/04-quiz-1/assignment.md index 8df0f835..a53d7758 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/04-quiz-1/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/04-quiz-1/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-1 +id: ovallurbjkft type: quiz title: Quiz 1 - Terraform Remote State teaser: | diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/05-protecting-sensitive-variables/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/05-protecting-sensitive-variables/assignment.md similarity index 73% rename from instruqt-tracks/terraform-cloud-gcp-v2/05-protecting-sensitive-variables/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/05-protecting-sensitive-variables/assignment.md index ea775abb..e99042da 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/05-protecting-sensitive-variables/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/05-protecting-sensitive-variables/assignment.md @@ -1,9 +1,10 @@ --- slug: protecting-sensitive-variables +id: z04idrw9rihh type: challenge title: Workspace Variables and Securing Cloud Credentials teaser: | - The security team is concerned about protecting access to Cloud credentials. Create global variable sets, deployment variables and store them securely in Terraform Cloud. + The security team is concerned about protecting access to Cloud credentials. Create global variable sets, deployment variables and store them securely in HCP Terraform. notes: - type: text contents: |- @@ -11,14 +12,14 @@ notes: You get the following request from William, the lead infosec admin at ACME: - > Can you set the Terraform Cloud Organization to manage sensitive Cloud Principal credentials? Once that is done, we can rotate those items regularly, and we can remove any hard-coded Cloud credentials from our deployments. + > Can you set the HCP Terraform Organization to manage sensitive Cloud Principal credentials? Once that is done, we can rotate those items regularly, and we can remove any hard-coded Cloud credentials from our deployments. - type: text contents: |- Thousands of API and cryptographic keys and secrets are leaking on GitHub every day! https://nakedsecurity.sophos.com/2019/03/25/thousands-of-coders-are-leaving-their-crown-jewels-exposed-on-github/ - When you store your API keys as sensitive variables, they are encrypted and stored in the Terraform Cloud platform. These keys are only decrypted in trusted, secure containers that run Terraform commands. + When you store your API keys as sensitive variables, they are encrypted and stored in the HCP Terraform platform. These keys are only decrypted in trusted, secure containers that run Terraform commands. tabs: - title: Code Editor type: service @@ -107,12 +108,12 @@ The security team is looking to mitigate the exposure of Cloud credentials. - The second task is to set up the non-sensitive, deployment-specific variables for the `hashicat-gcp` application with Workspace Variables. --- -- The utility code for Terraform Cloud is pre-configured with examples for Variable Sets and Workspace Variables. +- The utility code for HCP Terraform is pre-configured with examples for Variable Sets and Workspace Variables. -- In the Terminal tab, update your Terraform Cloud resources with Variable Sets and Workspace Variables: +- In the Terminal tab, update your HCP Terraform resources with Variable Sets and Workspace Variables: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create global variable set with Cloud # credentials marked as sensitive @@ -145,11 +146,11 @@ echo "GOOGLE_PROJECT_ID = $INSTRUQT_GCP_PROJECT_GCPPROJECT_PROJECT_ID" ``` -- Use the Code Editor tab and expand the terraform-cloud folder. Observe the updates to the file main.tf +- Use the Code Editor tab and expand the hcp-terraform folder. Observe the updates to the file main.tf - Note the update to configure a Variable Set named Cloud Crendentials (lines 51-95). These variables are sensitive and reflect a dedicated Google Cloud Service Principal to support infrastructure deployments. -- On the Terraform Cloud portal, navigate to Settings-Variable sets. Please see the example image below. +- On the HCP Terraform portal, navigate to Settings-Variable sets. Please see the example image below. ![Variable Sets](../assets/variable_sets.png) @@ -157,7 +158,7 @@ echo "GOOGLE_PROJECT_ID = $INSTRUQT_GCP_PROJECT_GCPPROJECT_PROJECT_ID" --- -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Variable Sets Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Variable Sets Please see the example image below. ![Variable Sets Linked in Workspace](../assets/variable_sets_link.png) @@ -167,19 +168,19 @@ echo "GOOGLE_PROJECT_ID = $INSTRUQT_GCP_PROJECT_GCPPROJECT_PROJECT_ID" === Workspace variables always overwrite variables from variable sets that have the same type and the same key. -- Use the Code Editor tab and expand the terraform-cloud folder. Observe the updates to the file main.tf +- Use the Code Editor tab and expand the hcp-terraform folder. Observe the updates to the file main.tf - The application uses two Terraform variables, `region` and `prefix`. We configure these workspace-specific variables (lines 96-119). These are _not_ sensitive and relate to the properties that you can define in your TERRAFORM code for deployment. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Workspace Variables. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Variables-Workspace Variables. Please see the example image below. ![Workspace Variables](../assets/workspace_variables.png) 3- Test Remote Execution === -Your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace is updated to **Remote Execution** mode. This means plans and applies occur on Terraform Cloud's infrastructure. You and your team have the ability to review and collaborate on runs within the app. +Your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace is updated to **Remote Execution** mode. This means plans and applies occur on HCP Terraform's infrastructure. You and your team have the ability to review and collaborate on runs within the app. -- Use the Code Editor tab and expand the terraform-cloud folder. Observe the updates to the file main.tf in lines 38-50. +- Use the Code Editor tab and expand the hcp-terraform folder. Observe the updates to the file main.tf in lines 38-50. - Test your application deployment with REMOTE execution. In the Terminal tab, perform an update to your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace. @@ -187,15 +188,15 @@ Your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspa cd /root/hashicat-gcp # Use local apply command option to trigger -# a remote run in Terraform Cloud +# a remote run in HCP Terraform terraform apply -auto-approve ``` -- The `terraform apply` command triggers your plans and applies to occur on Terraform Cloud's infrastructure. +- The `terraform apply` command triggers your plans and applies to occur on HCP Terraform's infrastructure. -- To examine the results, on the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview. Please see the example image below. +- To examine the results, on the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview. Please see the example image below. ![Remote Execution](../assets/remote_execution.gif) @@ -206,6 +207,6 @@ Congratulations, you have accomplished a number of things: 2. Your deployment properties are configured with your workspace-specific variables. -3. Terraform Cloud manages your application deployments and you can trigger work remotely. +3. HCP Terraform manages your application deployments and you can trigger work remotely. -Report back to William with the Check button below once you've successfully deployed the hashicat application via Terraform Cloud. \ No newline at end of file +Report back to William with the Check button below once you've successfully deployed the hashicat application via HCP Terraform. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/05-protecting-sensitive-variables/check-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/05-protecting-sensitive-variables/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/05-protecting-sensitive-variables/check-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/05-protecting-sensitive-variables/check-workstation diff --git a/instruqt-tracks/hcp-terraform-gcp-v2/05-protecting-sensitive-variables/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/05-protecting-sensitive-variables/setup-workstation new file mode 100755 index 00000000..9703ca7c --- /dev/null +++ b/instruqt-tracks/hcp-terraform-gcp-v2/05-protecting-sensitive-variables/setup-workstation @@ -0,0 +1,25 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/hcp-terraform + +# Replace the entire file. We need to do this +# in this manner as to replacethe code block for +# the TFE workspace. We can manipulate the code with +# bash but this is more straight forward. +cp -f /root/hcp-terraform/exercises/05-main.tf /root/hcp-terraform/main.tf + +# Aggregate the required content +# main.tf +cat /root/hcp-terraform/exercises/05-env_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/05-tf_vars_main.tf >> /root/hcp-terraform/main.tf + +# variables.tf +cat /root/hcp-terraform/exercises/05-env_vars_variables.tf >> /root/hcp-terraform/variables.tf +cat /root/hcp-terraform/exercises/05-tf_vars_variables.tf >> /root/hcp-terraform/variables.tf + +# Re-use deployment variables so we can upload to HCP Terraform +cat /root/hashicat-$CLOUD_ENV/terraform.tfvars >> /root/hcp-terraform/terraform.tfvars + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/05-protecting-sensitive-variables/solve-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/05-protecting-sensitive-variables/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/05-protecting-sensitive-variables/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/05-protecting-sensitive-variables/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/06-team-management/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/06-team-management/assignment.md similarity index 65% rename from instruqt-tracks/terraform-cloud-gcp-v2/06-team-management/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/06-team-management/assignment.md index 6a660d6d..fd313791 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/06-team-management/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/06-team-management/assignment.md @@ -1,17 +1,18 @@ --- slug: team-management +id: op8lzpzhcmvf type: challenge -title: Working with Teams in Terraform Cloud +title: Working with Teams in HCP Terraform teaser: | As your Terraform usage increases more team members want to collaborate. Create teams, add users and implement granular permissions. notes: - type: text contents: |- - A few months go by and you continue building more infrastructure with Terraform Cloud. The devops team are all familiar with Terraform, but some members are unable to access the Terraform Cloud organization. + A few months go by and you continue building more infrastructure with HCP Terraform. The devops team are all familiar with Terraform, but some members are unable to access the HCP Terraform organization. Product manager Hiro requests the following: - > Can you please configure teams in our Terraform Cloud organization? Please grant me read access to your workspace. And also, setup admin access for Lars and development privileges to Aisha. + > Can you please configure teams in our HCP Terraform organization? Please grant me read access to your workspace. And also, setup admin access for Lars and development privileges to Aisha. tabs: - title: Code Editor type: service @@ -103,12 +104,12 @@ The purpose of this challenge is to create an access strategy with Team Manageme - With Team Management you can invite other users to collaborate on code changes, approvals, and Terraform runs. -- If you are on an instructor-led training, you can invite your fellow students to your Terraform Cloud organization and place them on your teams, using the email address attached to their Terraform Cloud account. +- If you are on an instructor-led training, you can invite your fellow students to your HCP Terraform organization and place them on your teams, using the email address attached to their HCP Terraform account. - In the Terminal tab, configure your teams, workspace permissions and users with the following: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create admin, developers and # managers teams. @@ -123,19 +124,19 @@ terraform apply -auto-approve === Teams let you group users into specific categories to enable finer grained access control policies. -- On the Terraform Cloud portal, navigate to Settings-Teams. Please see the example image below. +- On the HCP Terraform portal, navigate to Settings-Teams. Please see the example image below. ![Organization Teams](../assets/org_teams.png) - Review each of your teams and their assigned Organization Access. -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the assignment for your teams (Lines 118-161). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the assignment for your teams (Lines 118-161). 2- Workspace Permissions === -Terraform Cloud's access model is team-based. There are two ways to choose which permissions a given team has on a workspace: fixed permission sets, and custom permissions. +HCP Terraform's access model is team-based. There are two ways to choose which permissions a given team has on a workspace: fixed permission sets, and custom permissions. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Team Access. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Team Access. Please see the example image below. ![Workspace Teams](../assets/workspace_teams.png) @@ -143,28 +144,28 @@ Terraform Cloud's access model is team-based. There are two ways to choose which - Use Edit Permissions to review the permissions assigned for each team on the hashicat-gcp workspace. -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the association between the hashicat-gcp workspace and your teams (Lines 162-218). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the association between the hashicat-gcp workspace and your teams (Lines 162-218). 3- Assign Users === User accounts belong to individual people. Each user can be part of one or more teams, which are granted permissions on workspaces within an organization. A user can be a member of multiple organizations. -- On the Terraform Cloud portal, navigate to Settings-Users-Invited. Please see the example image below. +- On the HCP Terraform portal, navigate to Settings-Users-Invited. Please see the example image below. ![Users Invited](../assets/users_invited.png) -- When a user sends you an invitation to join an existing Terraform Cloud organization, the email includes a sign-up link. +- When a user sends you an invitation to join an existing HCP Terraform organization, the email includes a sign-up link. -- With existing accounts, you can automatically join that organization and can begin using Terraform Cloud. +- With existing accounts, you can automatically join that organization and can begin using HCP Terraform. -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review how users invited to an organization and added to a team (Lines 220-261). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review how users invited to an organization and added to a team (Lines 220-261). --- Excellent work. You have a foundational access strategy for teams, workspaces and users. You can write the following notes in your report: -1. Team Management is configured with appropriate assignments for TFC admins, developers and managers. The next step is to configure SSO and map TFC teams to ACME teams. Then we need to configure 2FA to comply with corporate security policies. +1. Team Management is configured with appropriate assignments for HCP Terraform admins, developers and managers. The next step is to configure SSO and map HCP Terraform teams to ACME teams. Then we need to configure 2FA to comply with corporate security policies. -2. Workspace permission grants are aligned with TFC Teams based on specific roles, not individual identities. +2. Workspace permission grants are aligned with HCP Terraform Teams based on specific roles, not individual identities. 3. Users can join the organization with their corporate account. Admins can grant team privileges manually or through automated utilities triggered by onboarding workflows. diff --git a/instruqt-tracks/terraform-cloud-azure-v2/06-team-management/check-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/06-team-management/check-workstation similarity index 98% rename from instruqt-tracks/terraform-cloud-azure-v2/06-team-management/check-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/06-team-management/check-workstation index e5d9be16..e000d8bc 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/06-team-management/check-workstation +++ b/instruqt-tracks/hcp-terraform-gcp-v2/06-team-management/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-$CLOUD_ENV -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) # Get our team IDs. In the test environment these teams are pre-created. diff --git a/instruqt-tracks/hcp-terraform-gcp-v2/06-team-management/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/06-team-management/setup-workstation new file mode 100755 index 00000000..91a450c6 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-gcp-v2/06-team-management/setup-workstation @@ -0,0 +1,10 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/hcp-terraform + +cat /root/hcp-terraform/exercises/06-main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/06-variables.tf >> /root/hcp-terraform/variables.tf + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/06-team-management/solve-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/06-team-management/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/06-team-management/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/06-team-management/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/07-quiz-2/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/07-quiz-2/assignment.md similarity index 77% rename from instruqt-tracks/terraform-cloud-aws-v2/07-quiz-2/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/07-quiz-2/assignment.md index b9d358d1..769db551 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/07-quiz-2/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/07-quiz-2/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-2 +id: dpvtvwmhdwka type: quiz title: Quiz 2 - Secure Variables teaser: | @@ -11,8 +12,8 @@ notes: answers: - In your Terraform workspace - In a text file on your Desktop -- As encrypted environment variables in Terraform Cloud -- As Terraform variables in Terraform Cloud +- As encrypted environment variables in HCP Terraform +- As Terraform variables in HCP Terraform solution: - 2 difficulty: basic diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/08-versioned-infrastructure/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/08-versioned-infrastructure/assignment.md similarity index 78% rename from instruqt-tracks/terraform-cloud-gcp-v2/08-versioned-infrastructure/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/08-versioned-infrastructure/assignment.md index 662d085d..e4bc46cc 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/08-versioned-infrastructure/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/08-versioned-infrastructure/assignment.md @@ -1,9 +1,10 @@ --- slug: versioned-infrastructure +id: jwscemphmh5y type: challenge title: Version Controlled Infrastructure teaser: | - The team has grown and you need to implement code reviews. Terraform Cloud can connect to popular Version Control Systems to enable collaboration and testing. + The team has grown and you need to implement code reviews. HCP Terraform can connect to popular Version Control Systems to enable collaboration and testing. notes: - type: text contents: |- @@ -17,7 +18,7 @@ notes: process. Can you add the `hashicat-gcp` application code to a GitHub repository so we can implement code reviews? - type: text contents: |- - Once you connect a VCS repository to your Terraform Cloud workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. + Once you connect a VCS repository to your HCP Terraform workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. In addition it allows you to enable features like code reviews, pull requests, and automated testing of your code. tabs: @@ -147,7 +148,7 @@ The objectives of this challenge are to configure a VCS integration for your org 1- Create a GitHub Repository === -To trigger Terraform Cloud runs from changes to VCS, you first need to create a new repository in your personal GitHub account. +To trigger HCP Terraform runs from changes to VCS, you first need to create a new repository in your personal GitHub account. - In the Terminal tab run the helper script to cache your GitHub credentials temporarily. @@ -209,26 +210,26 @@ echo "" ![Populated Git Repo](../assets/git_repo_populated.png) -3- Integrate Terraform Cloud VCS +3- Integrate HCP Terraform VCS === Version control (VCS) integration allows you to manually approve changes or automate a run as soon as a pull request is merged into a repository branch. -- In the Terminal tab, create a VCS connection to your GitHub organization, and link the Terraform Cloud workspace to your GitHub repository. +- In the Terminal tab, create a VCS connection to your GitHub organization, and link the HCP Terraform workspace to your GitHub repository. ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create an OAuth Client as the connection -# for your TFC organization and the +# for your HCP Terraform organization and the # GitHub provider terraform apply -auto-approve ``` -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the OAuth Client configuration (Lines 286-299). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the OAuth Client configuration (Lines 286-299). -- On the Terraform Cloud portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Settings-Version Control-Providers +- On the HCP Terraform portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Settings-Version Control-Providers Please see the example image below. @@ -238,9 +239,9 @@ Please see the example image below. --- -- Use the Code Editor tab and open the terraform-cloud folder. Observe the updates to the file main.tf and review the VCS Configuration for your `[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]` workspace (Lines 67-70). +- Use the Code Editor tab and open the hcp-terraform folder. Observe the updates to the file main.tf and review the VCS Configuration for your `[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]` workspace (Lines 67-70). -- On the Terraform Cloud portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Version Control. Please see the example image below. +- On the HCP Terraform portal, navigate to the [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]] organization and open Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Settings-Version Control. Please see the example image below. ![Workspace VCS](../assets/workspace_vcs.png) @@ -256,9 +257,9 @@ echo "" ``` -- Terraform Cloud registers webhooks with your VCS provider, then automatically queues a Terraform run whenever new commits are merged to the branch of the linked repository. +- HCP Terraform registers webhooks with your VCS provider, then automatically queues a Terraform run whenever new commits are merged to the branch of the linked repository. -- When GitHub registers a `Pull Request` or a `Push` succesfully to the repository, there is a secure sequence to push the code and trigger a run in Terraform Cloud. +- When GitHub registers a `Pull Request` or a `Push` succesfully to the repository, there is a secure sequence to push the code and trigger a run in HCP Terraform. --- Congratulations, you have implemented a significant milestone to support code reviews. diff --git a/instruqt-tracks/terraform-cloud-aws-v2/08-versioned-infrastructure/check-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/08-versioned-infrastructure/check-workstation similarity index 90% rename from instruqt-tracks/terraform-cloud-aws-v2/08-versioned-infrastructure/check-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/08-versioned-infrastructure/check-workstation index c5ec92e2..214d4923 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/08-versioned-infrastructure/check-workstation +++ b/instruqt-tracks/hcp-terraform-gcp-v2/08-versioned-infrastructure/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-$CLOUD_ENV -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) VCS_HASHICAT=$(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/$WORKSPACE | jq -r '.data.attributes | .["vcs-repo"] | .identifier' | cut -f2 -d '/') diff --git a/instruqt-tracks/hcp-terraform-gcp-v2/08-versioned-infrastructure/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/08-versioned-infrastructure/setup-workstation new file mode 100755 index 00000000..f3e3230b --- /dev/null +++ b/instruqt-tracks/hcp-terraform-gcp-v2/08-versioned-infrastructure/setup-workstation @@ -0,0 +1,23 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/terraform-github + +# Replace the entire file. We need to do this +# in this manner as to replacethe code block for +# the TFE workspace. We can manipulate the code with +# bash but this is more straight forward. +cp -f /root/hcp-terraform/exercises/08-main.tf /root/hcp-terraform/main.tf + +# Aggregate the required content +# main.tf +cat /root/hcp-terraform/exercises/05-env_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/05-tf_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-users_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-github_main.tf >> /root/hcp-terraform/main.tf + +# Aggregate with new variables +cat /root/hcp-terraform/exercises/08-variables.tf >> /root/hcp-terraform/variables.tf + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/08-versioned-infrastructure/solve-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/08-versioned-infrastructure/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/08-versioned-infrastructure/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/08-versioned-infrastructure/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/09-vcs-collaboration/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/09-vcs-collaboration/assignment.md similarity index 80% rename from instruqt-tracks/terraform-cloud-gcp-v2/09-vcs-collaboration/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/09-vcs-collaboration/assignment.md index 566bced8..76e76920 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/09-vcs-collaboration/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/09-vcs-collaboration/assignment.md @@ -1,9 +1,10 @@ --- slug: vcs-collaboration +id: guw3tfxlrusm type: challenge title: Collaborating with VCS teaser: | - Now that you've got your version control system configured with Terraform Cloud, you can collaborate on changes to your application deployment. + Now that you've got your version control system configured with HCP Terraform, you can collaborate on changes to your application deployment. notes: - type: text contents: |- @@ -156,7 +157,7 @@ On your Web browser, open the page to your GitHub repository.
4 - Confirm merge
5 - Delete branch -- When you execute the Create pull request step, ensure you explore the Terraform Cloud Check to review the changes to the deployment. For reference, please see the example image below. +- When you execute the Create pull request step, ensure you explore the HCP Terraform Check to review the changes to the deployment. For reference, please see the example image below. ![Git PR Check](../assets/git_pr_check.png) @@ -181,21 +182,21 @@ git pull origin main ``` -3- See results in Terraform Cloud +3- See results in HCP Terraform === -With an approved pull request/merge request to a branch, any Terraform Cloud workspaces based on that branch will perform a speculative plan with the contents of the request and links to the results on the PR's page. +With an approved pull request/merge request to a branch, any HCP Terraform workspaces based on that branch will perform a speculative plan with the contents of the request and links to the results on the PR's page. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and note that a new deployment is occuring. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview and note that a new deployment is occuring. Please see the example image below. ![Workspace PR Merge](../assets/workspace_pr_merge.png) -- When a workspace is linked to a VCS repository, Terraform Cloud runs start automatically when you merge or commit changes to version control. +- When a workspace is linked to a VCS repository, HCP Terraform runs start automatically when you merge or commit changes to version control. --- Amazing! You have enabled your team to collaborate using GitHub as a VCS provider. You can report the following: -- With approved commits to a branch, any Terraform Cloud workspaces based on that branch will begin a Terraform run. +- With approved commits to a branch, any HCP Terraform workspaces based on that branch will begin a Terraform run. -- Although any contributor to the repository can see the status indicators for pull request plans, only members of your Terraform Cloud organization with permission to read runs for the affected workspaces can click through and view the complete plan output. +- Although any contributor to the repository can see the status indicators for pull request plans, only members of your HCP Terraform organization with permission to read runs for the affected workspaces can click through and view the complete plan output. Report to Lars with the Check button below and let him know that the updates are working through the VCS workflow process. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/09-vcs-collaboration/check-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/09-vcs-collaboration/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/09-vcs-collaboration/check-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/09-vcs-collaboration/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/09-vcs-collaboration/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/09-vcs-collaboration/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/09-vcs-collaboration/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/09-vcs-collaboration/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/09-vcs-collaboration/solve-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/09-vcs-collaboration/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/09-vcs-collaboration/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/09-vcs-collaboration/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/10-policy-as-code/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/10-policy-as-code/assignment.md similarity index 86% rename from instruqt-tracks/terraform-cloud-gcp-v2/10-policy-as-code/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/10-policy-as-code/assignment.md index 19c61d6f..92bc70cc 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/10-policy-as-code/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/10-policy-as-code/assignment.md @@ -1,5 +1,6 @@ --- slug: policy-as-code +id: oiitfklo9lwh type: challenge title: Terraform Compliance with Sentinel teaser: | @@ -105,7 +106,7 @@ In this challenge we use HashiCorp Sentinel policies to enforce two rules: To get started, use the Terminal tab to create a new Policy Set and assign it to the hashicat-gcp workspace with the following: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform # 1. Create a policy set from VCS. # 2. Enable automated policy as code @@ -132,23 +133,23 @@ For a comprehensive collection of Sentinel Policies, please visit this [HashiCor 2- Policy Sets === -In our environment, Terraform Cloud looks at your GitHub repo that contains the Sentinel Policy Sets to use in your own organization. +In our environment, HCP Terraform looks at your GitHub repo that contains the Sentinel Policy Sets to use in your own organization. -- Use the Code Editor tab and expand the terraform-cloud folder. +- Use the Code Editor tab and expand the hcp-terraform folder. - Note the changes to the file main.tf which automatically configures a Policy Set and links it to the hashicat-gcp workspace (lines 300-319). -- On the Terraform Cloud portal, navigate to [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]]-Settings-Policy Sets and explore the Hashicat-Social policy set. +- On the HCP Terraform portal, navigate to [[ Instruqt-Var key="TF_ORG" hostname="workstation" ]]-Settings-Policy Sets and explore the Hashicat-Social policy set. ![Organization Policy Set](../assets/org_policy_sets.png) -- To view the results of this new configuration, issue a manual run in the Terraform Cloud UI. +- To view the results of this new configuration, issue a manual run in the HCP Terraform UI. -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-gcp, choose + New run and Start run. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-gcp, choose + New run and Start run. Please see the example image below. ![Workspace New Run](../assets/workspace_new_run.png) -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-gcp-Runs and, on the Current Run note the application of the policies AFTER the plan, but BEFORE the apply phase. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-gcp-Runs and, on the Current Run note the application of the policies AFTER the plan, but BEFORE the apply phase. Please see the example image below. ![Workspace Policy Checks](../assets/workspace_policy_checks.png) @@ -158,7 +159,7 @@ In our environment, Terraform Cloud looks at your GitHub repo that contains the - Use the Code Editor tab to expand the hashicat-gcp folder, and browse the policies folder. -- Read the sentinel.hcl file. This file is used to direct Terraform Cloud how to apply these policies. +- Read the sentinel.hcl file. This file is used to direct HCP Terraform how to apply these policies. - Notice that the policies are set to **soft-mandatory** - which implies that failed policies stop the run, and someone with authority can override a failed policy check during a run. Other possible values are: diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/10-policy-as-code/check-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/10-policy-as-code/check-workstation similarity index 89% rename from instruqt-tracks/terraform-cloud-gcp-v2/10-policy-as-code/check-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/10-policy-as-code/check-workstation index 6c5d37b5..4bc545e1 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/10-policy-as-code/check-workstation +++ b/instruqt-tracks/hcp-terraform-gcp-v2/10-policy-as-code/check-workstation @@ -7,7 +7,7 @@ if [ -f /tmp/skip-check ]; then exit 0 fi -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) curl -s --header "Authorization: Bearer $TOKEN" https://app.terraform.io/api/v2/organizations/$ORG/policy-sets | jq -r '.data | .[] | .attributes.name' | grep Hashicat-Social || fail-message "Uh oh, it looks like you haven't attached the Hashicat-Social policy set to your organization. Make sure you have forked the repo and added the policy set to your organization." diff --git a/instruqt-tracks/terraform-cloud-azure-v2/10-policy-as-code/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/10-policy-as-code/setup-workstation similarity index 88% rename from instruqt-tracks/terraform-cloud-azure-v2/10-policy-as-code/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/10-policy-as-code/setup-workstation index 5193e753..5e96021f 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/10-policy-as-code/setup-workstation +++ b/instruqt-tracks/hcp-terraform-gcp-v2/10-policy-as-code/setup-workstation @@ -4,7 +4,7 @@ set -e cd /root/hashicat-$CLOUD_ENV git pull origin main -cat /root/terraform-cloud/exercises/11-main.tf >> /root/terraform-cloud/main.tf +cat /root/hcp-terraform/exercises/11-main.tf >> /root/hcp-terraform/main.tf TFC_TOKEN=$(jq -r '.credentials."app.terraform.io".token' /root/.terraform.d/credentials.tfrc.json 2>/dev/null) TF_ORG=$(agent variable get TF_ORG) diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/10-policy-as-code/solve-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/10-policy-as-code/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/10-policy-as-code/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/10-policy-as-code/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-aws-v2/11-quiz-3/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/11-quiz-3/assignment.md similarity index 96% rename from instruqt-tracks/terraform-cloud-aws-v2/11-quiz-3/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/11-quiz-3/assignment.md index 9dba0403..ecb207e0 100755 --- a/instruqt-tracks/terraform-cloud-aws-v2/11-quiz-3/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/11-quiz-3/assignment.md @@ -1,6 +1,6 @@ --- slug: quiz-3 -id: rpy7guvyoqz7 +id: 5g4qsalmn1jk type: quiz title: Quiz 3 - Version Control and Terraform teaser: | diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/12-private-module-registry/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/12-private-module-registry/assignment.md similarity index 86% rename from instruqt-tracks/terraform-cloud-gcp-v2/12-private-module-registry/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/12-private-module-registry/assignment.md index 771b9cd3..0f45615c 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/12-private-module-registry/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/12-private-module-registry/assignment.md @@ -1,9 +1,10 @@ --- slug: private-module-registry +id: vu01hsw1zvkd type: challenge -title: Private Module Registry +title: Terraform Private Registry teaser: | - Some of your users want a simple way to deploy Google Cloud Storage for backup. Use the Private Module Registry, in which you can store standard, re-usable Terraform code for IaC consumers. + Some of your users want a simple way to deploy Google Cloud Storage for backup. Use the Terraform Private Registry, in which you can store standard, re-usable Terraform code for IaC consumers. notes: - type: text contents: |- @@ -116,7 +117,7 @@ timelimit: 1800 } -In this challenge you'll learn to use the Private Module Registry, which allows you to store and version re-usable modules of Terraform code. +In this challenge you'll learn to use the Terraform Private Registry, which allows you to store and version re-usable modules of Terraform code. 1- Terraform Registry === @@ -156,7 +157,7 @@ git push origin main ``` -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-gcp-Runs and, on the Current Run note the application of the new **module**. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-gcp-Runs and, on the Current Run note the application of the new **module**. Please see the example image below. ![Workspace Public Module](../assets/workspace_public_module.png) @@ -164,7 +165,7 @@ This provides an adequate technical solution. However, Gaurav and the developmen 2- Private Registry === -Terraform Cloud's private registry works similarly to the public Terraform Registry and helps you share Terraform providers and Terraform modules across your organization. +HCP Terraform's private registry works similarly to the public Terraform Registry and helps you share Terraform providers and Terraform modules across your organization. - Please visit [Terraform Google Cloud Storage](https://registry.terraform.io/modules/terraform-google-modules/cloud-storage/google) to work with the module. Complete the following steps: @@ -185,7 +186,7 @@ The private registry uses your configured Version Control System (VCS) integrati To implement this private module in your Private Registry do the following: -- Use the Code Editor tab and expand the terraform-cloud folder. +- Use the Code Editor tab and expand the hcp-terraform folder. - Open the file terraform.tfvars.tf and ensure value for the variable `module_repo` matches your own module repository name. @@ -194,7 +195,7 @@ To implement this private module in your Private Registry do the following: - Use the Terminal tab to register your Private Registry with the following command: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform apply -auto-approve @@ -202,11 +203,11 @@ terraform apply -auto-approve --- -Your Terraform modules can be imported to your Private Module Registry using a workflow method in the Terraform Cloud portal. +Your Terraform modules can be imported to your Terraform Private Registry using a workflow method in the HCP Terraform portal. You do not need to perform these actions with the selected Terraform module, but you can experiment with your own Terraform modules. -- On the Terraform Cloud portal, navigate to Registry-Modules and use Publish. +- On the HCP Terraform portal, navigate to Registry-Modules and use Publish. - Follow the workflow: @@ -227,7 +228,7 @@ The main difference between these two methods is automation. In this workshop, w - Use the Code Editor tab and expand the hashicat-gcp folder. -- Revise the `module "backupstorage"` code snippet in the file main.tf and update with a reference to your Private Module registry. The code currently reads: +- Revise the `module "backupstorage"` code snippet in the file main.tf and update with a reference to your Terraform Private Registry. The code currently reads: ```bash module "cloud-storage" { @@ -239,7 +240,7 @@ module "cloud-storage" { } ``` -- Update the code with the example below. Notice the update to the module reference with your Terraform Cloud and your Organization name. +- Update the code with the example below. Notice the update to the module reference with your HCP Terraform and your Organization name. ```bash module "cloud-storage" { @@ -264,7 +265,7 @@ git push origin main - The end result is the implementation of a private module that supports your decision criteria. -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-gcp-Runs to view the effective changes. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-gcp-Runs to view the effective changes. - For reference, please see the example image below. diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/12-private-module-registry/check-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/12-private-module-registry/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/12-private-module-registry/check-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/12-private-module-registry/check-workstation diff --git a/instruqt-tracks/hcp-terraform-gcp-v2/12-private-module-registry/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/12-private-module-registry/setup-workstation new file mode 100755 index 00000000..00baa564 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-gcp-v2/12-private-module-registry/setup-workstation @@ -0,0 +1,18 @@ +#!/bin/bash -l +set -e + +# Set workdir +set-workdir /root/hcp-terraform + +cp -a /root/hashicat-$CLOUD_ENV/exercises/13-main.tf /root/hashicat-$CLOUD_ENV/main.tf + +sed -i "s/STORAGE_MODULE/google-cloud-storage/g" /root/hcp-terraform/exercises/13-main.tf +cat /root/hcp-terraform/exercises/13-main.tf >> /root/hcp-terraform/main.tf + +sed -i "s/STORAGE_MODULE/terraform-google-cloud-storage/g" /root/hcp-terraform/exercises/13-variables.tf +cat /root/hcp-terraform/exercises/13-variables.tf >> /root/hcp-terraform/variables.tf + +sed -i "s/STORAGE_MODULE/terraform-google-cloud-storage/g" /root/hcp-terraform/exercises/13-terraform.tfvars +cat /root/hcp-terraform/exercises/13-terraform.tfvars >> /root/hcp-terraform/terraform.tfvars + +exit 0 diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/12-private-module-registry/solve-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/12-private-module-registry/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/12-private-module-registry/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/12-private-module-registry/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/13-api-driven-workflows/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/13-api-driven-workflows/assignment.md similarity index 80% rename from instruqt-tracks/terraform-cloud-gcp-v2/13-api-driven-workflows/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/13-api-driven-workflows/assignment.md index d6515ae0..2832023d 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/13-api-driven-workflows/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/13-api-driven-workflows/assignment.md @@ -1,13 +1,14 @@ --- slug: api-driven-workflows +id: 2dkokgyre2qt type: challenge title: API Driven Workflows teaser: | - Terraform Cloud has a fully featured RESTful API that you can use to integrate with external systems. + HCP Terraform has a fully featured RESTful API that you can use to integrate with external systems. notes: - type: text contents: |- - You've mostly been using the Terraform Cloud Web UI and command line + You've mostly been using the HCP Terraform Web UI and command line interface (CLI) to build infrastructure. The devops team needs to integrate with their CI/CD tool via the API. @@ -15,7 +16,7 @@ notes: > Hey Sysadmin, we have this new continuous integration tool that the developers are using to test their application code. I'd like you to test some API calls - to our Terraform Cloud organization and workspaces. Can you please take a look + to our HCP Terraform organization and workspaces. Can you please take a look at this and learn how the API works? tabs: - title: Code Editor @@ -120,19 +121,19 @@ timelimit: 1800 margin-left: 30px; } -In the final challenge you'll directly interact with the Terraform Cloud API. +In the final challenge you'll directly interact with the HCP Terraform API. -- Terraform Cloud has a rich API that lets you do everything you can do in the GUI and more. +- HCP Terraform has a rich API that lets you do everything you can do in the GUI and more. - Intermediate and advanced users utilize the API to create complex integrations that work with external systems. 1. API Subsets === -The Terraform Cloud API will continue to evolve, but we consider it stable for general use, and HashiCorp will maintain all stable API endpoints in a backwards compatible manner. +The HCP Terraform API will continue to evolve, but we consider it stable for general use, and HashiCorp will maintain all stable API endpoints in a backwards compatible manner. ### 1.1 HTTP API Core -This is the most straight-forward method to access the Terraform Cloud API. All requests must include the following: +This is the most straight-forward method to access the HCP Terraform API. All requests must include the following: Authentication All requests must be authenticated with a bearer token. @@ -174,7 +175,7 @@ Before planning an API integration, it is important to consider whether the [TFE It can't create or approve runs in response to arbitrary events, but it's a useful tool for managing your organizations, teams, and workspaces as code. - - In the workshop we assumed **producer** and **consumer** roles. The producer code is in the terraform-cloud folder as it helps create, read, update and delete the resources in Terraform Cloud. + - In the workshop we assumed **producer** and **consumer** roles. The producer code is in the hcp-terraform folder as it helps create, read, update and delete the resources in HCP Terraform. ### 1.3 CDK for Terraform @@ -211,7 +212,7 @@ curl -s \ ``` -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. ![API Create](../assets/api_create.png) @@ -250,7 +251,7 @@ curl \ ``` -- On the Terraform Cloud portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. +- On the HCP Terraform portal, navigate to Workspaces-hashicat-api-Overview. Please see the example image below. ![API Update](../assets/api_update.png) @@ -270,13 +271,13 @@ curl \ ``` -- On the Terraform Cloud portal and reload your page. Please see the example image below. +- On the HCP Terraform portal and reload your page. Please see the example image below. ![API Delete](../assets/api_delete.png) 3. Automation with wrappers === -Terraform Cloud's main unit of organization is a workspace. A workspace is a collection of everything Terraform needs to run: a Terraform configuration (usually from a VCS repo), values for that configuration's variables, and state data to keep track of operations between runs. +HCP Terraform's main unit of organization is a workspace. A workspace is a collection of everything Terraform needs to run: a Terraform configuration (usually from a VCS repo), values for that configuration's variables, and state data to keep track of operations between runs. Automation of Terraform can come in various forms, and to varying degrees. The Vending Machine simulates how teams continue to run Terraform locally but use wrapper scripts to prepare a consistent working directory for Terraform to run in, while other teams run Terraform entirely within an orchestration tool such as Jenkins. @@ -292,9 +293,9 @@ bash vending_macheen.bash ``` - There is an assumption that the infrastructure deliverables are supported with tested and secure code modules. -- The workflow manager is responsible for picking the appropriate implementation of those modules and allocating Terraform Cloud resources. +- The workflow manager is responsible for picking the appropriate implementation of those modules and allocating HCP Terraform resources. -- On the Terraform Cloud portal, navigate to Projects & workspaces and pick Vending_Macheen to see your resources. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces and pick Vending_Macheen to see your resources. Please see the example image below. ![API Vending Macheen](../assets/api_vending_macheen.png) @@ -310,28 +311,28 @@ terraform destroy -auto-approve 4. Automation with CI/CD === -While Terraform Cloud offers version control system integrations, including GitHub, using CI/CD tasks in your workflow enables you to add status checks before or after Terraform Cloud remote runs are triggered, better adapting Terraform Cloud to your use case. +While HCP Terraform offers version control system integrations, including GitHub, using CI/CD tasks in your workflow enables you to add status checks before or after HCP Terraform remote runs are triggered, better adapting HCP Terraform to your use case. To illustrate, set up GitHub Actions for your deployment. - Use the Terminal tab to update your [[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]] workspace configuration. In this case, we are removing the VCS setup: ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform apply -auto-approve ``` -- Create a secret to access Terraform Cloud from your GitHub deployment repo. +- Create a secret to access HCP Terraform from your GitHub deployment repo. ```bash # Move to /root/hashicat-gcp which has # a proper .git and GitHub credentials cd /root/hashicat-gcp -# Configure the TFC Token so Github Actions -# can interact with Terraform Cloud +# Configure the HCP Terraform Token so Github Actions +# can interact with HCP Terraform gh secret set TF_API_TOKEN \ --body "$TFC_TOKEN" @@ -358,15 +359,15 @@ git push -u origin main ![GitHub Actions TF Job](../assets/github_actions_tf_job.png) -- Expand and explore any of the job steps. This example showcases how the work is triggered from the CICD workflow, but the permissions for users, Cloud identity authorization, deployment policies and private module resources are all managed in Terraform Cloud. +- Expand and explore any of the job steps. This example showcases how the work is triggered from the CICD workflow, but the permissions for users, Cloud identity authorization, deployment policies and private module resources are all managed in HCP Terraform. --- Congratulations, Senior Cloud Admin. With this exercise we conclude that: -- Terraform Cloud provides a fundamental and secure API to manage its features. +- HCP Terraform provides a fundamental and secure API to manage its features. -- The [Terraform Cloud/Enterprise Provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs) meet most of our needs to support prescriptive workflows. +- The [HCP Terraform/Terraform Enterprise Provider](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs) meet most of our needs to support prescriptive workflows. - You can use the API endpoints to create your own CRUD operations wrappers to integrate into your workflows. diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/13-api-driven-workflows/check-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/13-api-driven-workflows/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/13-api-driven-workflows/check-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/13-api-driven-workflows/check-workstation diff --git a/instruqt-tracks/terraform-cloud-azure-v2/13-api-driven-workflows/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/13-api-driven-workflows/setup-workstation similarity index 54% rename from instruqt-tracks/terraform-cloud-azure-v2/13-api-driven-workflows/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/13-api-driven-workflows/setup-workstation index 5025b8c3..0c91a9d4 100755 --- a/instruqt-tracks/terraform-cloud-azure-v2/13-api-driven-workflows/setup-workstation +++ b/instruqt-tracks/hcp-terraform-gcp-v2/13-api-driven-workflows/setup-workstation @@ -15,15 +15,15 @@ sed -i 's/terraform.yml/# terraform.yml/g' /root/hashicat-$CLOUD_ENV/.gitignore # in this manner as to replacethe code block for # the TFE workspace. We can manipulate the code with # bash but this is more straight forward. -cp /root/terraform-cloud/exercises/14-main.tf /root/terraform-cloud/main.tf +cp /root/hcp-terraform/exercises/14-main.tf /root/hcp-terraform/main.tf # Aggregate the required content # main.tf -cat /root/terraform-cloud/exercises/05-env_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/05-tf_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-users_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-github_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/11-main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/13-main.tf >> /root/terraform-cloud/main.tf +cat /root/hcp-terraform/exercises/05-env_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/05-tf_vars_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-users_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/08-github_main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/11-main.tf >> /root/hcp-terraform/main.tf +cat /root/hcp-terraform/exercises/13-main.tf >> /root/hcp-terraform/main.tf exit 0 diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/13-api-driven-workflows/solve-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/13-api-driven-workflows/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/13-api-driven-workflows/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/13-api-driven-workflows/solve-workstation diff --git a/instruqt-tracks/hcp-terraform-gcp-v2/14-quiz-4/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/14-quiz-4/assignment.md new file mode 100755 index 00000000..17cfcad0 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-gcp-v2/14-quiz-4/assignment.md @@ -0,0 +1,19 @@ +--- +slug: quiz-4 +id: qiin09tm4lgw +type: quiz +title: Quiz 4 - Terraform Private Registry +teaser: | + A quiz about the Terraform Private Registry +notes: +- type: text + contents: Congratulations! You've been promoted to HCP Terraform Ninja. +answers: +- "True" +- "False" +solution: +- 1 +difficulty: basic +timelimit: 1800 +--- +The Terraform Private Registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/15-clean-up-and-teardown/assignment.md b/instruqt-tracks/hcp-terraform-gcp-v2/15-clean-up-and-teardown/assignment.md similarity index 89% rename from instruqt-tracks/terraform-cloud-gcp-v2/15-clean-up-and-teardown/assignment.md rename to instruqt-tracks/hcp-terraform-gcp-v2/15-clean-up-and-teardown/assignment.md index b4a9003a..b6fe92c8 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/15-clean-up-and-teardown/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp-v2/15-clean-up-and-teardown/assignment.md @@ -1,5 +1,6 @@ --- slug: clean-up-and-teardown +id: ewfp4ybtomud type: challenge title: Clean up teaser: | @@ -8,7 +9,7 @@ notes: - type: text contents: |- 1. Destroy infrastructure. - 2. Remove TFC Configurations + 2. Remove HCP Terraform Configurations 3. Delete GitHub repository tabs: - title: Code Editor @@ -113,7 +114,7 @@ timelimit: 1800 margin-left: 30px; } -Congratulations, you've learned all the major features of Terraform Cloud. +Congratulations, you've learned all the major features of HCP Terraform. Destroy hashicat infrastructure === @@ -151,16 +152,16 @@ curl \ - Ensure that the `hashicat-gcp` deployment **Triggered Destroy** finishes. -- On the Terraform Cloud portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview to confirm. Please see the example image below. +- On the HCP Terraform portal, navigate to Projects & workspaces-[[ Instruqt-Var key="TF_WORKSPACE" hostname="workstation" ]]-Overview to confirm. Please see the example image below. ![Destroy Workspace](../assets/workspace_destroy.png) -Remove TFC Configurations +Remove HCP Terraform Configurations === - Remove workspace, variables, users, policies, VCS, private module ```bash -cd /root/terraform-cloud +cd /root/hcp-terraform terraform destroy -auto-approve diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/15-clean-up-and-teardown/check-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/15-clean-up-and-teardown/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/15-clean-up-and-teardown/check-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/15-clean-up-and-teardown/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/15-clean-up-and-teardown/cleanup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/15-clean-up-and-teardown/cleanup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/15-clean-up-and-teardown/cleanup-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/15-clean-up-and-teardown/cleanup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/15-clean-up-and-teardown/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/15-clean-up-and-teardown/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/15-clean-up-and-teardown/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/15-clean-up-and-teardown/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/15-clean-up-and-teardown/solve-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/15-clean-up-and-teardown/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/15-clean-up-and-teardown/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/15-clean-up-and-teardown/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/Makefile b/instruqt-tracks/hcp-terraform-gcp-v2/Makefile similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/Makefile rename to instruqt-tracks/hcp-terraform-gcp-v2/Makefile diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/api_create.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/api_create.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/api_create.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/api_create.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/api_delete.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/api_delete.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/api_delete.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/api_delete.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/api_update.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/api_update.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/api_update.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/api_update.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/api_vending_macheen.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/api_vending_macheen.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/api_vending_macheen.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/api_vending_macheen.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/bash-icon.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/bash-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/bash-icon.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/bash-icon.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/close_vs_code_tabs.gif b/instruqt-tracks/hcp-terraform-gcp-v2/assets/close_vs_code_tabs.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/close_vs_code_tabs.gif rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/close_vs_code_tabs.gif diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/create_new_org.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/create_new_org.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/create_new_org.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/create_new_org.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/enable_trial.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/enable_trial.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/enable_trial.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/enable_trial.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/file-icon.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/file-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/file-icon.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/file-icon.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/folder.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/folder.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/folder.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/folder.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/git_pr_check.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/git_pr_check.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/git_pr_check.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/git_pr_check.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/git_repo_new.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/git_repo_new.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/git_repo_new.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/git_repo_new.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/git_repo_populated.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/git_repo_populated.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/git_repo_populated.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/git_repo_populated.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/github_actions_tf_job.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/github_actions_tf_job.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/github_actions_tf_job.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/github_actions_tf_job.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/hcl-icon.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/hcl-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/hcl-icon.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/hcl-icon.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/module_fork.gif b/instruqt-tracks/hcp-terraform-gcp-v2/assets/module_fork.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/module_fork.gif rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/module_fork.gif diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/new_workspace.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/new_workspace.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/new_workspace.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/new_workspace.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/one.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/one.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/one.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/one.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/org_cost_estimation.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/org_cost_estimation.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/org_cost_estimation.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/org_cost_estimation.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/org_policy_sets.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/org_policy_sets.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/org_policy_sets.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/org_policy_sets.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/org_teams.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/org_teams.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/org_teams.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/org_teams.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/org_vcs.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/org_vcs.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/org_vcs.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/org_vcs.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/pmr_private_module.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/pmr_private_module.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/pmr_private_module.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/pmr_private_module.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/pmr_register_module.gif b/instruqt-tracks/hcp-terraform-gcp-v2/assets/pmr_register_module.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/pmr_register_module.gif rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/pmr_register_module.gif diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/pull_request.gif b/instruqt-tracks/hcp-terraform-gcp-v2/assets/pull_request.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/pull_request.gif rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/pull_request.gif diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/readme.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/readme.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/readme.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/readme.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/remote_execution.gif b/instruqt-tracks/hcp-terraform-gcp-v2/assets/remote_execution.gif similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/remote_execution.gif rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/remote_execution.gif diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/shell.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/shell.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/shell.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/shell.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/tf-icon.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/tf-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/tf-icon.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/tf-icon.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/three.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/three.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/three.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/three.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/two.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/two.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/two.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/two.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/users_invited.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/users_invited.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/users_invited.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/users_invited.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/variable_sets.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/variable_sets.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/variable_sets.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/variable_sets.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/variable_sets_link.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/variable_sets_link.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/variable_sets_link.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/variable_sets_link.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/vsc-explorer-icon.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/vsc-explorer-icon.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/vsc-explorer-icon.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/vsc-explorer-icon.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/vscode-extensions.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/vscode-extensions.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/vscode-extensions.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/vscode-extensions.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/web.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/web.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/web.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/web.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_cost_estimation.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_cost_estimation.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_cost_estimation.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_cost_estimation.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_destroy.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_destroy.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_destroy.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_destroy.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_new_run.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_new_run.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_new_run.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_new_run.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_outputs.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_outputs.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_outputs.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_outputs.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_policy_checks.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_policy_checks.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_policy_checks.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_policy_checks.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_pr_merge.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_pr_merge.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_pr_merge.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_pr_merge.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_public_module.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_public_module.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_public_module.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_public_module.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_state.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_state.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_state.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_state.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_teams.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_teams.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_teams.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_teams.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_variables.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_variables.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_variables.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_variables.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_vcs.png b/instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_vcs.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/assets/workspace_vcs.png rename to instruqt-tracks/hcp-terraform-gcp-v2/assets/workspace_vcs.png diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/config.yml b/instruqt-tracks/hcp-terraform-gcp-v2/config.yml similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp-v2/config.yml rename to instruqt-tracks/hcp-terraform-gcp-v2/config.yml diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/track.yml b/instruqt-tracks/hcp-terraform-gcp-v2/track.yml similarity index 77% rename from instruqt-tracks/terraform-cloud-gcp-v2/track.yml rename to instruqt-tracks/hcp-terraform-gcp-v2/track.yml index 39ef1380..8bdb711b 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/track.yml +++ b/instruqt-tracks/hcp-terraform-gcp-v2/track.yml @@ -2,10 +2,9 @@ # SPDX-License-Identifier: MPL-2.0 slug: terraform-cloud-gcp-v2 -id: bpy7hbylexsf -title: Terraform Cloud with GCP +title: HCP Terraform with GCP teaser: | - Terraform Cloud enables infrastructure automation for provisioning, compliance, and management of any cloud, data center, and service. + HCP Terraform enables infrastructure automation for provisioning, compliance, and management of any cloud, data center, and service. description: |- Work with the devops team at ACME as they go from manual provisioning with Terraform to a fully automated devops workflow with code reviews, testing, and automated provisioning in Google Cloud. @@ -20,18 +19,21 @@ description: |- icon: https://storage.googleapis.com/instruqt-hashicorp-tracks/logo/terraform.png level: beginner tags: -- terraform - cloud - enterprise +- terraform - gcp owner: hashicorp developers: -- gilberto@hashicorp.com -- jthompson@hashicorp.com - thomas@hashicorp.com +- jenna.wong@hashicorp.com show_timer: true +idle_timeout: 300 +timelimit: 14400 lab_config: overlay: false width: 33 position: right -checksum: "7835564982315695024" + sidebar_enabled: true + feedback_recap_enabled: true + loadingMessages: true \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/track_scripts/setup-workstation b/instruqt-tracks/hcp-terraform-gcp-v2/track_scripts/setup-workstation similarity index 79% rename from instruqt-tracks/terraform-cloud-gcp-v2/track_scripts/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp-v2/track_scripts/setup-workstation index 2009846f..4ade778d 100755 --- a/instruqt-tracks/terraform-cloud-gcp-v2/track_scripts/setup-workstation +++ b/instruqt-tracks/hcp-terraform-gcp-v2/track_scripts/setup-workstation @@ -35,7 +35,7 @@ mv /root/se-workshop-hashicat-app/hashicat-policies/$CLOUD_ENV /root/hashicat-$C # rm -fR /root/hashicat-$CLOUD_ENV/policies/aws # rm -fR /root/hashicat-$CLOUD_ENV/policies/azure -mv /root/se-workshop-hashicat-app/terraform-cloud /root/terraform-cloud +mv /root/se-workshop-hashicat-app/hcp-terraform /root/hcp-terraform mv /root/se-workshop-hashicat-app/terraform-github /root/terraform-github mv /root/se-workshop-hashicat-app/terraform-api /root/terraform-api mv /root/se-workshop-hashicat-app/scripts /root/scripts @@ -46,7 +46,7 @@ rm -fR /root/se-workshop-hashicat-app # ├── hashicat-gcp # │ ├── files # │ └── policies -# ├── terraform-cloud +# ├── hcp-terraform # │ └── exercises # └── terraform-github # └── terraform-api @@ -54,9 +54,9 @@ rm -fR /root/se-workshop-hashicat-app # Set the initial workspace name export WORKSPACE="hashicat-${CLOUD_ENV}" -cp /root/terraform-cloud/terraform.tfvars.example /root/terraform-cloud/terraform.tfvars +cp /root/hcp-terraform/terraform.tfvars.example /root/hcp-terraform/terraform.tfvars -cd /root/terraform-cloud +cd /root/hcp-terraform sed -i "s/YOUR_WORKSPACE/$WORKSPACE/g" terraform.tfvars # We do this to ear-mark the variables associated @@ -164,12 +164,12 @@ if [ $CLOUD_ENV == "aws" ]; then echo "export TF_VAR_instruqt_aws_secret_access_key=\$AWS_SECRET_ACCESS_KEY" >> /root/.bashrc # Set up TF code block for AWS - mv /root/terraform-cloud/exercises/aws-env_vars_main.tf /root/terraform-cloud/exercises/05-env_vars_main.tf - mv /root/terraform-cloud/exercises/aws-env_vars_variables.tf /root/terraform-cloud/exercises/05-env_vars_variables.tf + mv /root/hcp-terraform/exercises/aws-env_vars_main.tf /root/hcp-terraform/exercises/05-env_vars_main.tf + mv /root/hcp-terraform/exercises/aws-env_vars_variables.tf /root/hcp-terraform/exercises/05-env_vars_variables.tf # Remove other templates - rm -f /root/terraform-cloud/exercises/azure-env_vars*.tf - rm -f /root/terraform-cloud/exercises/gcp-env_vars*.tf + rm -f /root/hcp-terraform/exercises/azure-env_vars*.tf + rm -f /root/hcp-terraform/exercises/gcp-env_vars*.tf elif [ $CLOUD_ENV == "azure" ]; then # Create required variables spec in TF echo "export TF_VAR_instruqt_azure_arm_client_id=\$ARM_CLIENT_ID" >> /root/.bashrc @@ -178,17 +178,17 @@ elif [ $CLOUD_ENV == "azure" ]; then echo "export TF_VAR_instruqt_azure_arm_tenant_id=\$ARM_TENANT_ID" >> /root/.bashrc # Set up TF code block for Azure - mv /root/terraform-cloud/exercises/azure-env_vars_main.tf /root/terraform-cloud/exercises/05-env_vars_main.tf - mv /root/terraform-cloud/exercises/azure-env_vars_variables.tf /root/terraform-cloud/exercises/05-env_vars_variables.tf + mv /root/hcp-terraform/exercises/azure-env_vars_main.tf /root/hcp-terraform/exercises/05-env_vars_main.tf + mv /root/hcp-terraform/exercises/azure-env_vars_variables.tf /root/hcp-terraform/exercises/05-env_vars_variables.tf # Remove other templates - rm -f /root/terraform-cloud/exercises/aws-env_vars*.tf - rm -f /root/terraform-cloud/exercises/gcp-env_vars*.tf + rm -f /root/hcp-terraform/exercises/aws-env_vars*.tf + rm -f /root/hcp-terraform/exercises/gcp-env_vars*.tf # Change region (aws) to location (azure) in 05-tf_vars_variables.tf - sed -i "s/region/location/g" /root/terraform-cloud/exercises/05-tf_vars_variables.tf - sed -i "s/region/location/g" /root/terraform-cloud/exercises/05-tf_vars_main.tf - sed -i "s/REGION/LOCATION/g" /root/terraform-cloud/exercises/05-tf_vars_main.tf + sed -i "s/region/location/g" /root/hcp-terraform/exercises/05-tf_vars_variables.tf + sed -i "s/region/location/g" /root/hcp-terraform/exercises/05-tf_vars_main.tf + sed -i "s/REGION/LOCATION/g" /root/hcp-terraform/exercises/05-tf_vars_main.tf elif [ $CLOUD_ENV == "gcp" ]; then # Create required variables spec in TF export GOOGLE_CREDENTIALS=$(echo $INSTRUQT_GCP_PROJECT_GCPPROJECT_SERVICE_ACCOUNT_KEY | base64 -d | jq 'tostring') @@ -197,12 +197,12 @@ elif [ $CLOUD_ENV == "gcp" ]; then echo "export TF_VAR_project=$INSTRUQT_GCP_PROJECT_GCPPROJECT_PROJECT_ID" >> /root/.bashrc # Set up TF code block for GCP - mv /root/terraform-cloud/exercises/gcp-env_vars_main.tf /root/terraform-cloud/exercises/05-env_vars_main.tf - mv /root/terraform-cloud/exercises/gcp-env_vars_variables.tf /root/terraform-cloud/exercises/05-env_vars_variables.tf + mv /root/hcp-terraform/exercises/gcp-env_vars_main.tf /root/hcp-terraform/exercises/05-env_vars_main.tf + mv /root/hcp-terraform/exercises/gcp-env_vars_variables.tf /root/hcp-terraform/exercises/05-env_vars_variables.tf # Remove other templates - rm -f /root/terraform-cloud/exercises/aws-env_vars*.tf - rm -f /root/terraform-cloud/exercises/azure-env_vars*.tf + rm -f /root/hcp-terraform/exercises/aws-env_vars*.tf + rm -f /root/hcp-terraform/exercises/azure-env_vars*.tf fi # Dealing with "mesg: ttyname failed: Inappropriate ioctl for device" diff --git a/instruqt-tracks/terraform-cloud-gcp/01-setup-our-environment/assignment.md b/instruqt-tracks/hcp-terraform-gcp/01-setup-our-environment/assignment.md similarity index 99% rename from instruqt-tracks/terraform-cloud-gcp/01-setup-our-environment/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/01-setup-our-environment/assignment.md index 1be5fbf6..9ce1550b 100755 --- a/instruqt-tracks/terraform-cloud-gcp/01-setup-our-environment/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/01-setup-our-environment/assignment.md @@ -1,5 +1,6 @@ --- slug: setup-our-environment +id: 9yzui8tqxf4m type: challenge title: "\U0001F3E1 Moving in - Set Up Your Workspace" teaser: | diff --git a/instruqt-tracks/terraform-cloud-gcp/01-setup-our-environment/check-workstation b/instruqt-tracks/hcp-terraform-gcp/01-setup-our-environment/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/01-setup-our-environment/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/01-setup-our-environment/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/01-setup-our-environment/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/01-setup-our-environment/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/01-setup-our-environment/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/01-setup-our-environment/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/01-setup-our-environment/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/01-setup-our-environment/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/01-setup-our-environment/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/01-setup-our-environment/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/02-terraform-cloud-setup/assignment.md b/instruqt-tracks/hcp-terraform-gcp/02-hcp-terraform-setup/assignment.md similarity index 71% rename from instruqt-tracks/terraform-cloud-gcp/02-terraform-cloud-setup/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/02-hcp-terraform-setup/assignment.md index e8f0137c..77165ce2 100755 --- a/instruqt-tracks/terraform-cloud-gcp/02-terraform-cloud-setup/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/02-hcp-terraform-setup/assignment.md @@ -1,12 +1,13 @@ --- -slug: terraform-cloud-setup +slug: hcp-terraform-setup +id: m6sl2xkfspjs type: challenge -title: Terraform Cloud Setup +title: HCP Terraform Setup teaser: | - Terraform Cloud offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in Terraform Cloud. + HCP Terraform offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in HCP Terraform. notes: - type: text - contents: Terraform Cloud remote state storage is free for all users. + contents: HCP Terraform remote state storage is free for all users. tabs: - title: Shell type: terminal @@ -18,17 +19,17 @@ tabs: difficulty: basic timelimit: 1800 --- -Terraform Cloud Setup +HCP Terraform Setup === -1. Sign up for a free Terraform Cloud account: +1. Sign up for a free HCP Terraform account: - Go to the [Sign-in page](https://portal.cloud.hashicorp.com/sign-in) and create a new account - If you already have an account, sign in with your existing credentials -2. Create a new Terraform Cloud Organization +2. Create a new HCP Terraform Organization - - Navigate to the [Create a new organization](https://app.terraform.io/app/organizations/new?trial=workshop2023) page and create a Terraform Cloud Organization for this workshop + - Navigate to the [Create a new organization](https://app.terraform.io/app/organizations/new?trial=workshop2023) page and create a HCP Terraform Organization for this workshop - Use the `Create organization & start 14 day trial` button to enable Team and Governance features in your organization. Please see reference below. @@ -45,7 +46,7 @@ Workspace Configuration No really...you *must* name your workspace **hashicat-gcp**. If you don't the exercises will break. Do not attempt to name it something else. -**Note:** If you already have a **hashicat-gcp** workspace, please delete the workspace by selecting the workspace-level **Settings >> Destruction and Deletion** menu, clicking the **Delete from Terraform Cloud** button, typing **hashicat-gcp** to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you already played this track in the past. +**Note:** If you already have a **hashicat-gcp** workspace, please delete the workspace by selecting the workspace-level **Settings >> Destruction and Deletion** menu, clicking the **Delete from HCP Terraform** button, typing **hashicat-gcp** to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you already played this track in the past. --- diff --git a/instruqt-tracks/terraform-cloud-gcp/02-terraform-cloud-setup/check-workstation b/instruqt-tracks/hcp-terraform-gcp/02-hcp-terraform-setup/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/02-terraform-cloud-setup/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/02-hcp-terraform-setup/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/02-terraform-cloud-setup/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/02-hcp-terraform-setup/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/02-terraform-cloud-setup/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/02-hcp-terraform-setup/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/02-terraform-cloud-setup/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/02-hcp-terraform-setup/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/02-terraform-cloud-setup/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/02-hcp-terraform-setup/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/03-oh-no-an-outage/assignment.md b/instruqt-tracks/hcp-terraform-gcp/03-oh-no-an-outage/assignment.md similarity index 87% rename from instruqt-tracks/terraform-cloud-gcp/03-oh-no-an-outage/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/03-oh-no-an-outage/assignment.md index e59cf1c1..a96c5d85 100755 --- a/instruqt-tracks/terraform-cloud-gcp/03-oh-no-an-outage/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/03-oh-no-an-outage/assignment.md @@ -1,9 +1,10 @@ --- slug: oh-no-an-outage +id: 4elyssiaicic type: challenge title: "\U0001F4D2 Safekeeping Your Terraform State" teaser: | - An unexpected outage has taken down one of the production websites. It took longer than expected to recover because the Terraform state file was stored on someone's laptop. Terraform Cloud's remote state feature is here to help. + An unexpected outage has taken down one of the production websites. It took longer than expected to recover because the Terraform state file was stored on someone's laptop. HCP Terraform's remote state feature is here to help. notes: - type: text contents: "It's Monday morning and you're the first one into the office. Most of @@ -28,15 +29,15 @@ tabs: difficulty: basic timelimit: 1800 --- -Your task is to configure remote state using your Terraform Cloud account. In order to complete this challenge you'll need the following: +Your task is to configure remote state using your HCP Terraform account. In order to complete this challenge you'll need the following: -1. A free Terraform Cloud account - log in at https://app.terraform.io
-2. A Terraform Cloud organization. You just created this in the previous exercise.
+1. A free HCP Terraform account - log in at https://app.terraform.io
+2. An HCP Terraform organization. You just created this in the previous exercise.
3. A workspace named **hashicat-gcp** with its Execution Mode set to **Local** (not Remote)
4. A *user* token for authentication
5. A `remote_backend` config stored in your workspace
-Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in Terraform Cloud: +Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in HCP Terraform: https://app.terraform.io/app/settings/tokens @@ -44,7 +45,7 @@ Click on the **Create an API token** button. You can name the token whatever you Back in the Instruqt track, you need to add your API token to a file called "credentials.tfrc.json". Select the "Credentials File" tab and open the `/root/.terraform.d/credentials.tfrc.json` file directly. -Replace the part that says YOURTOKEN with what you copied from Terraform Cloud. Be sure to save the file. +Replace the part that says YOURTOKEN with what you copied from HCP Terraform. Be sure to save the file. Your token is now safely stored in the "credentials.tfrc.json" file. @@ -79,7 +80,7 @@ Please click on the second URL to test that your application is working. To see a valid value for the `catapp_ip` output, you sometimes might first need to run `terraform refresh`. Note that the IP is an internal IP and is not accessible from the internet. -Additionally, you should see a new state file on the "States" tab of your Terraform Cloud workspace. +Additionally, you should see a new state file on the "States" tab of your HCP Terraform workspace. Note: If you ran terraform locally before configuring the remote backend, you might have a local state file called `terraform.tfstate`. If so, please delete it by running `rm terraform.tfstate`. diff --git a/instruqt-tracks/terraform-cloud-gcp/03-oh-no-an-outage/check-workstation b/instruqt-tracks/hcp-terraform-gcp/03-oh-no-an-outage/check-workstation similarity index 88% rename from instruqt-tracks/terraform-cloud-gcp/03-oh-no-an-outage/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/03-oh-no-an-outage/check-workstation index 86471c03..fc4128c0 100755 --- a/instruqt-tracks/terraform-cloud-gcp/03-oh-no-an-outage/check-workstation +++ b/instruqt-tracks/hcp-terraform-gcp/03-oh-no-an-outage/check-workstation @@ -32,14 +32,14 @@ if [[ $EXIT_CODE -ne 0 ]]; then fail-message "Oops, we couldn't find the hashicat-gcp workspace in your remote_backend.tf config file. Try again." fi -# Verify the organization exists in TFC +# Verify the organization exists in HCP Terraform curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then - fail-message "I couldn't find your organization, $ORG in Terraform Cloud. Make sure you created it and that it is configured in your remote_backend.tf file." + fail-message "I couldn't find your organization, $ORG in HCP Terraform. Make sure you created it and that it is configured in your remote_backend.tf file." fi -# Verify the workspace exists in TFC +# Verify the workspace exists in HCP Terraform curl -I -s -L --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/hashicat-gcp | grep "HTTP/2 200" EXIT_CODE=$? if [[ $EXIT_CODE -ne 0 ]]; then diff --git a/instruqt-tracks/terraform-cloud-gcp/03-oh-no-an-outage/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/03-oh-no-an-outage/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/03-oh-no-an-outage/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/03-oh-no-an-outage/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/03-oh-no-an-outage/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/03-oh-no-an-outage/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/03-oh-no-an-outage/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/03-oh-no-an-outage/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-azure/04-quiz-1/assignment.md b/instruqt-tracks/hcp-terraform-gcp/04-quiz-1/assignment.md similarity index 95% rename from instruqt-tracks/terraform-cloud-azure/04-quiz-1/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/04-quiz-1/assignment.md index 8271af01..2e213c98 100755 --- a/instruqt-tracks/terraform-cloud-azure/04-quiz-1/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/04-quiz-1/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-1 +id: 8ymunqzibe0n type: quiz title: "\U0001F4DD Quiz 1 - Terraform Remote State" teaser: | diff --git a/instruqt-tracks/terraform-cloud-gcp/05-protecting-sensitive-variables/assignment.md b/instruqt-tracks/hcp-terraform-gcp/05-protecting-sensitive-variables/assignment.md similarity index 87% rename from instruqt-tracks/terraform-cloud-gcp/05-protecting-sensitive-variables/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/05-protecting-sensitive-variables/assignment.md index 2ee7572f..c2500a50 100755 --- a/instruqt-tracks/terraform-cloud-gcp/05-protecting-sensitive-variables/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/05-protecting-sensitive-variables/assignment.md @@ -1,5 +1,6 @@ --- slug: protecting-sensitive-variables +id: 6kmjquutw7ed type: challenge title: "\U0001F510 Securing Cloud Credentials" teaser: | @@ -12,7 +13,7 @@ notes: repository. You get this email from William, the lead infosec admin at ACME:\n\n>\U0001F46E\U0001F3FF‍♂️ Hello junior admin, we ran a remote scan on your laptop last night and found some unsecured Google Cloud credentials. We need you to move those off your laptop - and store them in Terraform Cloud by the end of the day." + and store them in HCP Terraform by the end of the day." - type: text contents: "\U0001F914 Did you know?\n\nThousands of API and cryptographic keys and secrets are leaking on GitHub every day!\n\nhttps://nakedsecurity.sophos.com/2019/03/25/thousands-of-coders-are-leaving-their-crown-jewels-exposed-on-github/\n\nWhen @@ -22,10 +23,10 @@ notes: - type: text contents: "\U0001F469\U0001F3FC‍\U0001F4BB Remote Execution, Local Code\n\nRemote Execution allows you to use the same Terraform commands that you're familiar with, - but the run and all your variables are safely stored in your Terraform Cloud workspace. + but the run and all your variables are safely stored in your HCP Terraform workspace. This can be helpful when you're upgrading tools that were originally written for - Terraform Open Source.\n\nWith Remote Execution your Terraform code is still stored - on your local machine and sent to the server each time you run." + Terraform Community Edition.\n\nWith Remote Execution your Terraform code is still + stored on your local machine and sent to the server each time you run." tabs: - title: Shell type: terminal @@ -37,7 +38,7 @@ tabs: difficulty: basic timelimit: 1800 --- -After the GCP credentials issue, the security team is tightening down access to your GCP project. API creds must now be stored as encrypted variables in Terraform Cloud. Your task is to find your Google credentials, and move them into your workspace as a secure environment variable. +After the GCP credentials issue, the security team is tightening down access to your GCP project. API creds must now be stored as encrypted variables in HCP Terraform. Your task is to find your Google credentials, and move them into your workspace as a secure environment variable. In order to complete this challenge you'll need to do the following: @@ -61,12 +62,12 @@ Test your work by running `terraform init`. Your backend configuration will be u Next try running `terraform plan`. This will trigger what's known as a speculative plan. You can view this plan by copying the link from your "Shell" tab. This plan will not show up in your ordinary terraform runs that are triggered via the UI or API. A copy of the plan output will be streamed back to your "Shell" tab. -Run a terraform apply. This apply **will** show up if you navigate to the runs page in the Terraform Cloud UI. +Run a terraform apply. This apply **will** show up if you navigate to the runs page in the HCP Terraform UI. ``` terraform apply ``` -Congratulations, your GCP credentials are now safely encrypted and stored in your Terraform Cloud workspace. +Congratulations, your GCP credentials are now safely encrypted and stored in your HCP Terraform workspace. -You can continue to run `terraform plan` and `terraform apply` in your "Shell" tab, but the execution is now done in Terraform Cloud. \ No newline at end of file +You can continue to run `terraform plan` and `terraform apply` in your "Shell" tab, but the execution is now done in HCP Terraform. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-gcp/05-protecting-sensitive-variables/check-workstation b/instruqt-tracks/hcp-terraform-gcp/05-protecting-sensitive-variables/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/05-protecting-sensitive-variables/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/05-protecting-sensitive-variables/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/05-protecting-sensitive-variables/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/05-protecting-sensitive-variables/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/05-protecting-sensitive-variables/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/05-protecting-sensitive-variables/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/05-protecting-sensitive-variables/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/05-protecting-sensitive-variables/solve-workstation similarity index 99% rename from instruqt-tracks/terraform-cloud-gcp/05-protecting-sensitive-variables/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/05-protecting-sensitive-variables/solve-workstation index 81b84f2a..92f56cb9 100755 --- a/instruqt-tracks/terraform-cloud-gcp/05-protecting-sensitive-variables/solve-workstation +++ b/instruqt-tracks/hcp-terraform-gcp/05-protecting-sensitive-variables/solve-workstation @@ -160,7 +160,7 @@ cat <<-EOF > /tmp/project.json } EOF -# Create our variables in terraform cloud +# Create our variables in HCP Terraform curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/google_credentials.json https://app.terraform.io/api/v2/vars curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/prefix.json https://app.terraform.io/api/v2/vars diff --git a/instruqt-tracks/terraform-cloud-gcp/06-sharing-is-caring/assignment.md b/instruqt-tracks/hcp-terraform-gcp/06-sharing-is-caring/assignment.md similarity index 76% rename from instruqt-tracks/terraform-cloud-gcp/06-sharing-is-caring/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/06-sharing-is-caring/assignment.md index e717a7a2..56404a13 100755 --- a/instruqt-tracks/terraform-cloud-gcp/06-sharing-is-caring/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/06-sharing-is-caring/assignment.md @@ -1,20 +1,21 @@ --- slug: sharing-is-caring +id: youycfxzf9rs type: challenge -title: "\U0001F91D\U0001F3FC Working with Teams in Terraform Cloud" +title: "\U0001F91D\U0001F3FC Working with Teams in HCP Terraform" teaser: | As your Terraform usage increases more team members want to collaborate. Let's add some teams and access rules for our organization. notes: - type: text contents: "A few months go by and you continue building more infrastructure with - Terraform Cloud. The devops team are all familiar with Terraform, but some members - are unable to access the Terraform Cloud organization. Your manager Hiro steps - into your cubicle with a clipboard in hand:\n\n>\U0001F468\U0001F3FB‍\U0001F4BC - Thank you for all your hard work on this Terraform project. I'd like to have read - access to your workspace, and we also need to get Lars and Aisha set up. Can you - please create some teams in our organization and add your co-workers to them?" + HCP Terraform. The devops team are all familiar with Terraform, but some members + are unable to access the HCP Terraform organization. Your manager Hiro steps into + your cubicle with a clipboard in hand:\n\n>\U0001F468\U0001F3FB‍\U0001F4BC Thank + you for all your hard work on this Terraform project. I'd like to have read access + to your workspace, and we also need to get Lars and Aisha set up. Can you please + create some teams in our organization and add your co-workers to them?" - type: text - contents: Teams and role-based access controls are a paid feature of Terraform Cloud. + contents: Teams and role-based access controls are a paid feature of HCP Terraform. Your instructor will need to upgrade your organization to a free trial in order to complete this challenge. tabs: @@ -28,7 +29,7 @@ tabs: difficulty: basic timelimit: 1800 --- -Teams and role-based access controls are a paid feature of Terraform Cloud. You will need to ensure your free trial has been activated from the earlier steps in order to complete this challenge. +Teams and role-based access controls are a paid feature of HCP Terraform. You will need to ensure your free trial has been activated from the earlier steps in order to complete this challenge. In this challenge you'll create teams with different levels of access to your workspace. You can then invite other users to collaborate on code changes, approvals, and Terraform runs. @@ -37,7 +38,7 @@ In this challenge you'll create teams with different levels of access to your wo 3. Add another team called **developers**. Developers should not have any organization-wide access.
4. Add a third team called **managers**. Managers should also not have any organization-wide access. -Next, assign access rights to the hashicat-gcp workspace. Go into the **Team Access** page of the hashicat-gcp workspace settings. If you don't see the Team Access link you might need to log out and back into Terraform Cloud. +Next, assign access rights to the hashicat-gcp workspace. Go into the **Team Access** page of the hashicat-gcp workspace settings. If you don't see the Team Access link you might need to log out and back into HCP Terraform. You'll want to click the "Add team and permissions" button and then click the "Select team" button next to each team to which you wish to grant workspace access. Then click the "Assign permissions" button for the desired permission. @@ -47,7 +48,7 @@ You'll want to click the "Add team and permissions" button and then click the "S Now that you have created teams and given them workspace access you can invite some users to your organization. Return to your **General Settings** for the organization, and select **Users**. Then click the "Invite a user" button. -If you're doing an instructor-led training, you can invite your instructor or a fellow student to your organization and place them on the developers team. You'll need the email address attached to their Terraform Cloud account to invite them. +If you're doing an instructor-led training, you can invite your instructor or a fellow student to your organization and place them on the developers team. You'll need the email address attached to their HCP Terraform account to invite them. Or you can use one of our example users below: diff --git a/instruqt-tracks/terraform-cloud-gcp/06-sharing-is-caring/check-workstation b/instruqt-tracks/hcp-terraform-gcp/06-sharing-is-caring/check-workstation similarity index 98% rename from instruqt-tracks/terraform-cloud-gcp/06-sharing-is-caring/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/06-sharing-is-caring/check-workstation index 700289dc..35faa780 100755 --- a/instruqt-tracks/terraform-cloud-gcp/06-sharing-is-caring/check-workstation +++ b/instruqt-tracks/hcp-terraform-gcp/06-sharing-is-caring/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-gcp -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) # Get our team IDs. In the test environment these teams are pre-created. diff --git a/instruqt-tracks/terraform-cloud-gcp/06-sharing-is-caring/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/06-sharing-is-caring/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/06-sharing-is-caring/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/06-sharing-is-caring/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/06-sharing-is-caring/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/06-sharing-is-caring/solve-workstation similarity index 96% rename from instruqt-tracks/terraform-cloud-gcp/06-sharing-is-caring/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/06-sharing-is-caring/solve-workstation index 53e9cd7d..183a70d3 100755 --- a/instruqt-tracks/terraform-cloud-gcp/06-sharing-is-caring/solve-workstation +++ b/instruqt-tracks/hcp-terraform-gcp/06-sharing-is-caring/solve-workstation @@ -7,10 +7,10 @@ set -o history cd /root/hashicat-gcp -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) -# These are the terraform cloud IDs of our fictional users. They are persistent and should not be deleted from TFC. +# These are the HCP Terraform IDs of our fictional users. They are persistent and should not be deleted from HCP Terraform. LARS_ID="user-V2Qt225RgAUzsWpz" HIRO_ID="user-egHewG9Z5eNa9u9m" AISHA_ID="user-CsBb94bVHrq7E5AA" diff --git a/instruqt-tracks/terraform-cloud-azure/07-quiz-2/assignment.md b/instruqt-tracks/hcp-terraform-gcp/07-quiz-2/assignment.md similarity index 77% rename from instruqt-tracks/terraform-cloud-azure/07-quiz-2/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/07-quiz-2/assignment.md index 80a1f943..7c25141d 100755 --- a/instruqt-tracks/terraform-cloud-azure/07-quiz-2/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/07-quiz-2/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-2 +id: neeuoifguusd type: quiz title: "\U0001F4DD Quiz 2 - Secure Variables" teaser: | @@ -10,8 +11,8 @@ notes: answers: - In your Terraform workspace - In a text file on your Desktop -- As encrypted environment variables in Terraform Cloud -- As Terraform variables in Terraform Cloud +- As encrypted environment variables in HCP Terraform +- As Terraform variables in HCP Terraform solution: - 2 difficulty: basic diff --git a/instruqt-tracks/terraform-cloud-gcp/08-versioned-infrastructure/assignment.md b/instruqt-tracks/hcp-terraform-gcp/08-versioned-infrastructure/assignment.md similarity index 88% rename from instruqt-tracks/terraform-cloud-gcp/08-versioned-infrastructure/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/08-versioned-infrastructure/assignment.md index 0fc1b689..386ef19b 100755 --- a/instruqt-tracks/terraform-cloud-gcp/08-versioned-infrastructure/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/08-versioned-infrastructure/assignment.md @@ -1,9 +1,10 @@ --- slug: versioned-infrastructure +id: i9uwpox0rq0j type: challenge title: "\U0001F4BB Version Controlled Infrastructure" teaser: | - The team has grown and you need to implement code reviews. Terraform Cloud can connect to popular Version Control Systems to enable collaboration and testing. + The team has grown and you need to implement code reviews. HCP Terraform can connect to popular Version Control Systems to enable collaboration and testing. notes: - type: text contents: "As Terraform usage continues to increase across the organization, your @@ -15,7 +16,7 @@ notes: so we can implement code reviews?" - type: text contents: |- - Once you connect a VCS repository to your Terraform Cloud workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. + Once you connect a VCS repository to your HCP Terraform workspace, **all** changes to the code must be stored in the VCS before Terraform will execute them. This ensures that you have no unauthorized changes to your infrastructure as code. In addition it allows you to enable features like code reviews, pull requests, and automated testing of your code. tabs: @@ -29,7 +30,7 @@ tabs: difficulty: basic timelimit: 1800 --- -In order for different teams and indivdiuals to be able to work on the same Terraform code, you need to use a Version Control System (VCS). Terraform Cloud can integrate with the most popular VCS systems including GitHub, GitLab and Bitbucket. +In order for different teams and indivdiuals to be able to work on the same Terraform code, you need to use a Version Control System (VCS). HCP Terraform can integrate with the most popular VCS systems including GitHub, GitLab and Bitbucket. You will need a free GitHub.com account for this challenge. We recommend using a personal account for training instead your work account (if you have one). @@ -80,7 +81,7 @@ https://github.com/settings/tokens Then click on **Personal Access Tokens** and generate a new token for the workshop. Give it at least the `repo | public_repo` scope, but you can grant the entire `repo` scope and other scopes if desired. You can delete the token afterwards if you like. This token enables you to push changes from your workstation to your public fork of the hashicat-gcp repository. -Now that you have your own copy of the hashicat-gcp repo to work with, follow the **Configuring GitHub Access** section of the TFC documentation to connect your GitHub account to your Terraform Organization. +Now that you have your own copy of the hashicat-gcp repo to work with, follow the **Configuring GitHub Access** section of the HCP Terraform documentation to connect your GitHub account to your Terraform Organization. https://www.terraform.io/docs/cloud/vcs/github.html diff --git a/instruqt-tracks/terraform-cloud-gcp/08-versioned-infrastructure/check-workstation b/instruqt-tracks/hcp-terraform-gcp/08-versioned-infrastructure/check-workstation similarity index 90% rename from instruqt-tracks/terraform-cloud-gcp/08-versioned-infrastructure/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/08-versioned-infrastructure/check-workstation index e94fc303..b7d9d8d3 100755 --- a/instruqt-tracks/terraform-cloud-gcp/08-versioned-infrastructure/check-workstation +++ b/instruqt-tracks/hcp-terraform-gcp/08-versioned-infrastructure/check-workstation @@ -9,7 +9,7 @@ fi cd /root/hashicat-gcp -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) VCS_HASHICAT=$(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request GET https://app.terraform.io/api/v2/organizations/$ORG/workspaces/hashicat-gcp | jq -r '.data.attributes | .["vcs-repo"] | .identifier' | cut -f2 -d '/') diff --git a/instruqt-tracks/terraform-cloud-gcp/08-versioned-infrastructure/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/08-versioned-infrastructure/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/08-versioned-infrastructure/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/08-versioned-infrastructure/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/08-versioned-infrastructure/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/08-versioned-infrastructure/solve-workstation similarity index 96% rename from instruqt-tracks/terraform-cloud-gcp/08-versioned-infrastructure/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/08-versioned-infrastructure/solve-workstation index f1822d4f..8c00f3f4 100755 --- a/instruqt-tracks/terraform-cloud-gcp/08-versioned-infrastructure/solve-workstation +++ b/instruqt-tracks/hcp-terraform-gcp/08-versioned-infrastructure/solve-workstation @@ -7,7 +7,7 @@ set -o history cd /root/hashicat-gcp -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) WORKSPACE_ID=$(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" https://app.terraform.io/api/v2/organizations/$ORG/workspaces/hashicat-gcp | jq -r .data.id) diff --git a/instruqt-tracks/terraform-cloud-gcp/09-vcs-collaboration/assignment.md b/instruqt-tracks/hcp-terraform-gcp/09-vcs-collaboration/assignment.md similarity index 86% rename from instruqt-tracks/terraform-cloud-gcp/09-vcs-collaboration/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/09-vcs-collaboration/assignment.md index 2b3f5885..418fe741 100755 --- a/instruqt-tracks/terraform-cloud-gcp/09-vcs-collaboration/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/09-vcs-collaboration/assignment.md @@ -1,9 +1,10 @@ --- slug: vcs-collaboration +id: xhhyv8ocovog type: challenge title: "\U0001F46C Collaborating with VCS" teaser: | - Now that you've got your version control system configured with Terraform Cloud, you can collaborate on changes to your Terraform built infrastructure. + Now that you've got your version control system configured with HCP Terraform, you can collaborate on changes to your Terraform built infrastructure. notes: - type: text contents: "The marketing team at ACME is running a special promotion next week and @@ -44,10 +45,10 @@ Welcome to ${PREFIX}'s app. Replace this text with your own. At the bottom of the screen, select the option that says "Create a new branch for this commit and start a pull request." Then, click the "Propose changes" button. Finally, submit a pull request by clicking the "Create pull request" button. -You'll notice that a check is run against your Terraform Cloud workspace. If you right-click the "Details" link of the check and then open the link in a new tab, you'll see the speculative plan that has been run in your workspace. +You'll notice that a check is run against your HCP Terraform workspace. If you right-click the "Details" link of the check and then open the link in a new tab, you'll see the speculative plan that has been run in your workspace. However, if you do open the link, you might need to refresh the GitHub page in order to see that the check has passed and so that the "Merge pull request" button will be enabled. Your partner should now review and approve the pull request. Or, if you're working alone you can review your own pull request and merge the changes. -Once you've merged your changes to the master branch, watch the Terraform run that starts in the Terraform Cloud UI. \ No newline at end of file +Once you've merged your changes to the master branch, watch the Terraform run that starts in the HCP Terraform UI. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-gcp/09-vcs-collaboration/check-workstation b/instruqt-tracks/hcp-terraform-gcp/09-vcs-collaboration/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/09-vcs-collaboration/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/09-vcs-collaboration/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/09-vcs-collaboration/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/09-vcs-collaboration/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/09-vcs-collaboration/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/09-vcs-collaboration/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/09-vcs-collaboration/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/09-vcs-collaboration/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/09-vcs-collaboration/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/09-vcs-collaboration/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/10-controlling-costs/assignment.md b/instruqt-tracks/hcp-terraform-gcp/10-controlling-costs/assignment.md similarity index 80% rename from instruqt-tracks/terraform-cloud-gcp/10-controlling-costs/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/10-controlling-costs/assignment.md index 141705f9..8221b69c 100755 --- a/instruqt-tracks/terraform-cloud-gcp/10-controlling-costs/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/10-controlling-costs/assignment.md @@ -1,5 +1,6 @@ --- slug: controlling-costs +id: lomyzo5rvp5z type: challenge title: $ Controlling Costs with Cost Estimation teaser: | @@ -9,11 +10,11 @@ notes: contents: "Developers often run bigger VMs than are really necessary. Karen from finance pays you a visit to see if you can help:\n\n>\U0001F469\U0001F3FC‍\U0001F4BC\U0001F4C8 Hello sysadmin, we got a really big GCP bill last month and would like you to - inform developers using Terraform Cloud about estimated monthly costs of their - workspaces before they apply runs. Can you do that?" + inform developers using HCP Terraform about estimated monthly costs of their workspaces + before they apply runs. Can you do that?" - type: text contents: |- - You can learn more about Terraform Cloud's Cost Estimation feature with these links: + You can learn more about HCP Terraform's Cost Estimation feature with these links: * https://www.terraform.io/docs/cloud/cost-estimation/index.html * https://www.terraform.io/docs/enterprise/admin/integration.html#cost-estimation-integration @@ -36,15 +37,15 @@ tabs: difficulty: basic timelimit: 1800 --- -In this challenge you'll use Terraform Cloud's [Cost Estimation](https://www.terraform.io/docs/cloud/cost-estimation/index.html) feature to inform developers what the estimated monthly costs of their hashicat-gcp workspace will be. +In this challenge you'll use HCP Terraform's [Cost Estimation](https://www.terraform.io/docs/cloud/cost-estimation/index.html) feature to inform developers what the estimated monthly costs of their hashicat-gcp workspace will be. -Enabling Cost Estimation across all workspaces of an organization in Terraform Cloud is very easy. All you need to do is visit the "Settings | Cost estimation" page of your organization and check the "Enable Cost Estimation for all workspaces" checkbox. +Enabling Cost Estimation across all workspaces of an organization in HCP Terraform is very easy. All you need to do is visit the "Settings | Cost estimation" page of your organization and check the "Enable Cost Estimation for all workspaces" checkbox. Note that in Terraform Enterprise, you also need to provide cloud credentials for the clouds for which you want cost estimates. See this [link](https://www.terraform.io/docs/enterprise/admin/integration.html#cost-estimation-integration). To see a cost estimate for your hashicat-gcp workspace, just trigger a new run in it by clicking the `Actions` drop-down and then selecting "Start a new plan". You will then see the estimated monthly cost of the workspace which is based on the costs of the `google_compute_instance` resource provisioned for the hashicat-gcp workspace. -A complete list of GCP resources for which cost estimates are available in Terraform Cloud is [here](https://www.terraform.io/docs/cloud/cost-estimation/gcp.html). +A complete list of GCP resources for which cost estimates are available in HCP Terraform is [here](https://www.terraform.io/docs/cloud/cost-estimation/gcp.html). Finally, note that Sentinel's [tfrun](https://www.terraform.io/docs/cloud/sentinel/import/tfrun.html) import can be used to prevent runs from being applied when workspaces would incur excessive monthly costs or cost increases. diff --git a/instruqt-tracks/terraform-cloud-gcp/10-controlling-costs/check-workstation b/instruqt-tracks/hcp-terraform-gcp/10-controlling-costs/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/10-controlling-costs/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/10-controlling-costs/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/10-controlling-costs/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/10-controlling-costs/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/10-controlling-costs/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/10-controlling-costs/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/10-controlling-costs/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/10-controlling-costs/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/10-controlling-costs/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/10-controlling-costs/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/11-a-sentinel-stands-guard/assignment.md b/instruqt-tracks/hcp-terraform-gcp/11-a-sentinel-stands-guard/assignment.md similarity index 97% rename from instruqt-tracks/terraform-cloud-gcp/11-a-sentinel-stands-guard/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/11-a-sentinel-stands-guard/assignment.md index 7f407aac..6f60696f 100755 --- a/instruqt-tracks/terraform-cloud-gcp/11-a-sentinel-stands-guard/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/11-a-sentinel-stands-guard/assignment.md @@ -1,5 +1,6 @@ --- slug: a-sentinel-stands-guard +id: 3wmp6nqvz8hv type: challenge title: "\U0001F6E1️ Terraform Compliance with Sentinel" teaser: | @@ -43,7 +44,7 @@ Before moving on, please look at the [enforce-mandatory-labels](https://github.c 4. Under **Description** you can enter "Sentinel Policies for our GCP resources". -5. In the **More Options** menu set the **Policies Path** to `/gcp`. This tells Terraform Cloud to use the GCP specific policies that are stored in the repo. +5. In the **More Options** menu set the **Policies Path** to `/gcp`. This tells HCP Terraform to use the GCP specific policies that are stored in the repo. 6. Leave everything else at its default setting and click on the **Connect policy set** button at the bottom of the page. diff --git a/instruqt-tracks/terraform-cloud-gcp/11-a-sentinel-stands-guard/check-workstation b/instruqt-tracks/hcp-terraform-gcp/11-a-sentinel-stands-guard/check-workstation similarity index 91% rename from instruqt-tracks/terraform-cloud-gcp/11-a-sentinel-stands-guard/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/11-a-sentinel-stands-guard/check-workstation index 93d98483..4507165f 100755 --- a/instruqt-tracks/terraform-cloud-gcp/11-a-sentinel-stands-guard/check-workstation +++ b/instruqt-tracks/hcp-terraform-gcp/11-a-sentinel-stands-guard/check-workstation @@ -11,7 +11,7 @@ source /etc/profile.d/instruqt-env.sh source /root/.bashrc /bin/set-workdir /root/hashicat-gcp -# Get our TFC token and organization from the local config files +# Get our HCP Terraform token and organization from the local config files TOKEN=$(grep token /root/.terraform.d/credentials.tfrc.json | cut -d '"' -f4) curl -s --header "Authorization: Bearer $TOKEN" https://app.terraform.io/api/v2/organizations/$ORG/policy-sets | jq -r '.data | .[] | .attributes.name' | grep tfc-workshops-sentinel || fail-message "Uh oh, it looks like you haven't attached the tfc-workshops-sentinel policy set to your organization. Make sure you have forked the repo and added the policy set to your organization." diff --git a/instruqt-tracks/terraform-cloud-gcp/11-a-sentinel-stands-guard/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/11-a-sentinel-stands-guard/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/11-a-sentinel-stands-guard/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/11-a-sentinel-stands-guard/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/11-a-sentinel-stands-guard/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/11-a-sentinel-stands-guard/solve-workstation similarity index 99% rename from instruqt-tracks/terraform-cloud-gcp/11-a-sentinel-stands-guard/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/11-a-sentinel-stands-guard/solve-workstation index 16a3f61a..a4cb458d 100755 --- a/instruqt-tracks/terraform-cloud-gcp/11-a-sentinel-stands-guard/solve-workstation +++ b/instruqt-tracks/hcp-terraform-gcp/11-a-sentinel-stands-guard/solve-workstation @@ -7,7 +7,7 @@ set -o history cd /root/hashicat-gcp -# Get TFC ORG and TOKEN +# Get HCP Terraform ORG and TOKEN if [[ -f /root/skipconfig.json ]]; then ORG=$(jq -r .org < /root/skipconfig.json) TOKEN=$(jq -r .token < /root/skipconfig.json) diff --git a/instruqt-tracks/terraform-cloud-azure/12-quiz-3/assignment.md b/instruqt-tracks/hcp-terraform-gcp/12-quiz-3/assignment.md similarity index 96% rename from instruqt-tracks/terraform-cloud-azure/12-quiz-3/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/12-quiz-3/assignment.md index 1d848507..8dc346e5 100755 --- a/instruqt-tracks/terraform-cloud-azure/12-quiz-3/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/12-quiz-3/assignment.md @@ -1,5 +1,6 @@ --- slug: quiz-3 +id: uqrmlqf7zng8 type: quiz title: "\U0001F4DD Quiz 3 - Version Control and Terraform" teaser: | diff --git a/instruqt-tracks/terraform-cloud-gcp/13-private-module-registry/assignment.md b/instruqt-tracks/hcp-terraform-gcp/13-private-module-registry/assignment.md similarity index 78% rename from instruqt-tracks/terraform-cloud-gcp/13-private-module-registry/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/13-private-module-registry/assignment.md index 8967a4b4..54934f3a 100755 --- a/instruqt-tracks/terraform-cloud-gcp/13-private-module-registry/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/13-private-module-registry/assignment.md @@ -1,9 +1,10 @@ --- slug: private-module-registry +id: 6hhxzipfcawi type: challenge -title: "\U0001F4DA Private Module Registry" +title: "\U0001F4DA Terraform Private Registry" teaser: | - Some of your users want a simple way to deploy databases and network configurations. Enter the Private Module Registry, in which you can store standard, re-usable Terraform code that others can use in their own workspaces. + Some of your users want a simple way to deploy databases and network configurations. Enter the Terraform Private Registry, in which you can store standard, re-usable Terraform code that others can use in their own workspaces. notes: - type: text contents: "Most of the devops team is using Terraform to build and configure their @@ -23,7 +24,7 @@ tabs: difficulty: basic timelimit: 1800 --- -In this challenge you'll learn to use the Private Module Registry, which allows you to store and version re-usable modules of Terraform code. +In this challenge you'll learn to use the Terraform Private Registry, which allows you to store and version re-usable modules of Terraform code. Instead of writing this module from scratch you can copy the existing vpc module from the public Terraform registry. Visit this [URL](https://registry.terraform.io/modules/terraform-google-modules/network/google) to view the VPC module. @@ -31,7 +32,7 @@ Note the "Source Code" link that points at the GitHub repository for this module Make sure you uncheck `Copy the master branch only` at the bottom of the **Create a new fork** page on Github so your fork contains tags that are used for publishing modules. -Back in the Terraform Cloud UI, click on the "Registry" tab at the top of the page. Then click the "Publish" button and the "Module" button that appears beneath it. Click on the "GitHub" button and select the terraform-google-network repository that you just forked. +Back in the HCP Terraform UI, click on the "Registry" tab at the top of the page. Then click the "Publish" button and the "Module" button that appears beneath it. Click on the "GitHub" button and select the terraform-google-network repository that you just forked. Click on the "Publish module" button. @@ -39,7 +40,7 @@ After the module is completely published, please select version `3.4.0` of the m Click on the "Inputs" tab of the module. This indicates that you have to specify the `network_name`, `project_id`, and `subnets` module variables (inputs) for this module. -Create a new Terraform file called `vpc.tf` in the hashicat-gcp directory and use the module in this file to create a new VPC for Gaurav. You can copy the module creation code from the "Usage Instructions" section of the module's page in your Private Module Registry and then add the required inputs as follows: +Create a new Terraform file called `vpc.tf` in the hashicat-gcp directory and use the module in this file to create a new VPC for Gaurav. You can copy the module creation code from the "Usage Instructions" section of the module's page in your Terraform Private Registry and then add the required inputs as follows: * Set `network_name` to any name you want such as `gaurav-network`. * Set `project_id` to `var.project`. * Set `subnets` like this: diff --git a/instruqt-tracks/terraform-cloud-gcp/13-private-module-registry/check-workstation b/instruqt-tracks/hcp-terraform-gcp/13-private-module-registry/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/13-private-module-registry/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/13-private-module-registry/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/13-private-module-registry/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/13-private-module-registry/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/13-private-module-registry/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/13-private-module-registry/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/13-private-module-registry/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/13-private-module-registry/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/13-private-module-registry/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/13-private-module-registry/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/14-api-driven-workflows/assignment.md b/instruqt-tracks/hcp-terraform-gcp/14-api-driven-workflows/assignment.md similarity index 76% rename from instruqt-tracks/terraform-cloud-gcp/14-api-driven-workflows/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/14-api-driven-workflows/assignment.md index a3a3fe97..2b80042a 100755 --- a/instruqt-tracks/terraform-cloud-gcp/14-api-driven-workflows/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/14-api-driven-workflows/assignment.md @@ -1,21 +1,22 @@ --- slug: api-driven-workflows +id: aika5b3d99oi type: challenge title: "\U0001F517 API Driven Workflows" teaser: | - Terraform Cloud has a fully featured RESTful API that you can use to integrate with external systems. Where we're going, we don't need a GUI! + HCP Terraform has a fully featured RESTful API that you can use to integrate with external systems. Where we're going, we don't need a GUI! notes: - type: text - contents: "You've mostly been using the Terraform Cloud Web UI and command line - interface (CLI) to build infrastructure. The devops team needs to integrate with - their CI/CD tool via the API. Lars sends you a chat message:\n\n>\U0001F468\U0001F3FB‍\U0001F9B2 + contents: "You've mostly been using the HCP Terraform Web UI and command line interface + (CLI) to build infrastructure. The devops team needs to integrate with their CI/CD + tool via the API. Lars sends you a chat message:\n\n>\U0001F468\U0001F3FB‍\U0001F9B2 Hey senior sysadmin, we have this new continuous integration tool that the developers are using to test their application code. I'd like you to test some API calls - to our Terraform Cloud organization and workspaces. Can you please take a look - at this and learn how the API works?" + to our HCP Terraform organization and workspaces. Can you please take a look at + this and learn how the API works?" - type: text contents: |- - Feeling stuck? Remember that the Terraform Cloud docs contain examples for all API endpoints: + Feeling stuck? Remember that the HCP Terraform docs contain examples for all API endpoints: https://www.terraform.io/docs/cloud/api/workspace-variables.html#create-a-variable https://www.terraform.io/docs/cloud/api/run.html#create-a-run - type: text @@ -40,7 +41,7 @@ tabs: difficulty: basic timelimit: 1800 --- -In the final challenge you'll directly interact with the Terraform Cloud API. Terraform Cloud has a rich API that lets you do everything you can do in the GUI and more. Intermediate and advanced users utilize the API to create complex integrations that work with external systems. +In the final challenge you'll directly interact with the HCP Terraform API. HCP Terraform has a rich API that lets you do everything you can do in the GUI and more. Intermediate and advanced users utilize the API to create complex integrations that work with external systems. Your goal is to configure three variables in the hashicat-gcp workspace and then trigger a Terraform run using only the API. The three variables you need to configure are: - `placeholder` An image placeholder URL. Examples: placekitten.com, placedog.net, picsum.photos diff --git a/instruqt-tracks/terraform-cloud-gcp/14-api-driven-workflows/check-workstation b/instruqt-tracks/hcp-terraform-gcp/14-api-driven-workflows/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/14-api-driven-workflows/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/14-api-driven-workflows/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/14-api-driven-workflows/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/14-api-driven-workflows/setup-workstation similarity index 91% rename from instruqt-tracks/terraform-cloud-gcp/14-api-driven-workflows/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/14-api-driven-workflows/setup-workstation index 351790df..94773e92 100755 --- a/instruqt-tracks/terraform-cloud-gcp/14-api-driven-workflows/setup-workstation +++ b/instruqt-tracks/hcp-terraform-gcp/14-api-driven-workflows/setup-workstation @@ -29,7 +29,7 @@ cat <<-EOF > /root/hashicat-gcp/json/apply.json "data": { "attributes": { "is-destroy":false, - "message": "Terraform Cloud API is Magic! 🦄 🌈 🧙‍♂️" + "message": "HCP Terraform API is Magic! 🦄 🌈 🧙‍♂️" }, "type":"runs", "relationships": { diff --git a/instruqt-tracks/terraform-cloud-gcp/14-api-driven-workflows/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/14-api-driven-workflows/solve-workstation similarity index 98% rename from instruqt-tracks/terraform-cloud-gcp/14-api-driven-workflows/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/14-api-driven-workflows/solve-workstation index 490d8a53..ca09fe8b 100755 --- a/instruqt-tracks/terraform-cloud-gcp/14-api-driven-workflows/solve-workstation +++ b/instruqt-tracks/hcp-terraform-gcp/14-api-driven-workflows/solve-workstation @@ -65,7 +65,7 @@ cat <<-EOF > /tmp/width.json } EOF -# Create our variables in terraform cloud +# Create our variables in HCP Terraform curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/placeholder.json https://app.terraform.io/api/v2/workspaces/$WORKSPACE_ID/vars curl --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" --request POST --data @/tmp/height.json https://app.terraform.io/api/v2/workspaces/$WORKSPACE_ID/vars diff --git a/instruqt-tracks/hcp-terraform-gcp/15-quiz-4/assignment.md b/instruqt-tracks/hcp-terraform-gcp/15-quiz-4/assignment.md new file mode 100755 index 00000000..605de8d8 --- /dev/null +++ b/instruqt-tracks/hcp-terraform-gcp/15-quiz-4/assignment.md @@ -0,0 +1,20 @@ +--- +slug: quiz-4 +id: aytjyqdlg1sb +type: quiz +title: "\U0001F4DD Quiz 4 - Terraform Private Registry" +teaser: | + A quiz about the Terraform Private Registry +notes: +- type: text + contents: "\U0001F431‍\U0001F4BB Congratulations! You've been promoted to HCP Terraform + Ninja." +answers: +- "True" +- "False" +solution: +- 1 +difficulty: basic +timelimit: 1800 +--- +The Terraform Terraform Private Registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-cloud-gcp/16-this-is-the-end/assignment.md b/instruqt-tracks/hcp-terraform-gcp/16-this-is-the-end/assignment.md similarity index 85% rename from instruqt-tracks/terraform-cloud-gcp/16-this-is-the-end/assignment.md rename to instruqt-tracks/hcp-terraform-gcp/16-this-is-the-end/assignment.md index bde24a25..92861bfa 100755 --- a/instruqt-tracks/terraform-cloud-gcp/16-this-is-the-end/assignment.md +++ b/instruqt-tracks/hcp-terraform-gcp/16-this-is-the-end/assignment.md @@ -1,5 +1,6 @@ --- slug: this-is-the-end +id: a1j8potuyv4i type: challenge title: "\U0001F469\U0001F3FB‍\U0001F52C Open Lab" teaser: | @@ -18,6 +19,6 @@ tabs: difficulty: basic timelimit: 1800 --- -Congratulations, you've learned all the major features of Terraform Cloud. +Congratulations, you've learned all the major features of HCP Terraform. You can continue to build and experiment with Terraform, or simply click the Check button to complete the track. \ No newline at end of file diff --git a/instruqt-tracks/terraform-cloud-gcp/16-this-is-the-end/check-workstation b/instruqt-tracks/hcp-terraform-gcp/16-this-is-the-end/check-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/16-this-is-the-end/check-workstation rename to instruqt-tracks/hcp-terraform-gcp/16-this-is-the-end/check-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/16-this-is-the-end/cleanup-workstation b/instruqt-tracks/hcp-terraform-gcp/16-this-is-the-end/cleanup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/16-this-is-the-end/cleanup-workstation rename to instruqt-tracks/hcp-terraform-gcp/16-this-is-the-end/cleanup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/16-this-is-the-end/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/16-this-is-the-end/setup-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/16-this-is-the-end/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/16-this-is-the-end/setup-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/16-this-is-the-end/solve-workstation b/instruqt-tracks/hcp-terraform-gcp/16-this-is-the-end/solve-workstation similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/16-this-is-the-end/solve-workstation rename to instruqt-tracks/hcp-terraform-gcp/16-this-is-the-end/solve-workstation diff --git a/instruqt-tracks/terraform-cloud-gcp/Makefile b/instruqt-tracks/hcp-terraform-gcp/Makefile similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/Makefile rename to instruqt-tracks/hcp-terraform-gcp/Makefile diff --git a/instruqt-tracks/terraform-cloud-gcp/assets/create_new_org.png b/instruqt-tracks/hcp-terraform-gcp/assets/create_new_org.png similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/assets/create_new_org.png rename to instruqt-tracks/hcp-terraform-gcp/assets/create_new_org.png diff --git a/instruqt-tracks/terraform-cloud-gcp/config.yml b/instruqt-tracks/hcp-terraform-gcp/config.yml similarity index 100% rename from instruqt-tracks/terraform-cloud-gcp/config.yml rename to instruqt-tracks/hcp-terraform-gcp/config.yml diff --git a/instruqt-tracks/terraform-cloud-gcp/track.yml b/instruqt-tracks/hcp-terraform-gcp/track.yml similarity index 74% rename from instruqt-tracks/terraform-cloud-gcp/track.yml rename to instruqt-tracks/hcp-terraform-gcp/track.yml index eae723f0..f33a741c 100755 --- a/instruqt-tracks/terraform-cloud-gcp/track.yml +++ b/instruqt-tracks/hcp-terraform-gcp/track.yml @@ -2,40 +2,43 @@ # SPDX-License-Identifier: MPL-2.0 slug: terraform-cloud-gcp -id: mjfywxvlky8d -title: Terraform Cloud with GCP +id: h5wffylde93s +title: HCP Terraform with GCP teaser: | Join the ACME devops team on their journey to fully automated provisioning with GCP. description: |- Work with the devops team at Acme Inc. as they go from manual provisioning with Terraform to a fully automated devops workflow with code reviews, testing, and automated provisioning in Google Cloud Platform. This workshop covers the following topics: - * Terraform Open Source - * Terraform Cloud + * Terraform Community Edition + * HCP Terraform * Remote State * Secure Variable Storage * Version Control Integration * Role-based Access Controls * Sentinel Security Policies * Collaboration on Changes - * Private Module Registry + * Terraform Private Registry * API Driven Workflows icon: https://storage.googleapis.com/instruqt-hashicorp-tracks/logo/terraform.png tags: -- terraform -- gcp - cloud - enterprise -owner: hashicorp +- terraform +- gcp +owner: hashicorp-field-ops developers: -- roger@hashicorp.com -- sean.carolan@hashicorp.com - thomas@hashicorp.com - swalker@hashicorp.com - randy.keener@hashicorp.com -- gilberto@hashicorp.com +- jenna.wong@hashicorp.com show_timer: true +idle_timeout: 3000 +timelimit: 14400 lab_config: overlay: false width: 25 position: right -checksum: "1537371292254814881" + sidebar_enabled: true + feedback_recap_enabled: true + loadingMessages: true +checksum: "8278109672787578470" diff --git a/instruqt-tracks/terraform-cloud-gcp/track_scripts/setup-workstation b/instruqt-tracks/hcp-terraform-gcp/track_scripts/setup-workstation similarity index 94% rename from instruqt-tracks/terraform-cloud-gcp/track_scripts/setup-workstation rename to instruqt-tracks/hcp-terraform-gcp/track_scripts/setup-workstation index 7d16316a..5df42e52 100755 --- a/instruqt-tracks/terraform-cloud-gcp/track_scripts/setup-workstation +++ b/instruqt-tracks/hcp-terraform-gcp/track_scripts/setup-workstation @@ -52,18 +52,18 @@ echo "******************************************************************" echo "* Skip to Challenge Configuration Script" echo "******************************************************************" echo -echo "This script will set up your Terraform Cloud token and organization" +echo "This script will set up your HCP Terraform token and organization" echo "configuration. Once that is done you may use the 'skip to challenge'" echo "feature of Instruqt to fast-forward to a particular point in the" echo "training." echo -echo "Please enter your Terraform Cloud organization name." +echo "Please enter your HCP Terraform organization name." read ORG echo echo "Please enter your workspace name." read WORKSPACE echo -echo "Please enter your Terraform Cloud user token." +echo "Please enter your HCP Terraform user token." read TOKEN echo echo "Please enter your GitHub user ID." diff --git a/instruqt-tracks/sentinel-cli-basics/01-sentinel-cli/assignment.md b/instruqt-tracks/sentinel-cli-basics/01-sentinel-cli/assignment.md index 47bd5cb4..e5f54f8e 100644 --- a/instruqt-tracks/sentinel-cli-basics/01-sentinel-cli/assignment.md +++ b/instruqt-tracks/sentinel-cli-basics/01-sentinel-cli/assignment.md @@ -8,7 +8,7 @@ notes: contents: |- [Sentinel](https://docs.hashicorp.com/sentinel) allows customers to implement policy-as-code in the same way that Terraform implements infrastructure-as-code. - The Sentinel Command Line Interface (CLI) allows you to apply and test Sentinel policies including those that use mocks generated from Terraform Cloud and Terraform Enterprise plans. + The Sentinel Command Line Interface (CLI) allows you to apply and test Sentinel policies including those that use mocks generated from HCP Terraform and Terraform Enterprise plans. - type: text contents: |- We've launched the Sentinel CLI 0.24.0 on a Ubuntu VM running in GCP so that you don't need to download or install it. @@ -63,7 +63,7 @@ timelimit: 1200 } -The Sentinel Command Line Interface (CLI) allows you to apply and test Sentinel policies including those that use mocks generated from Terraform Cloud plans. +The Sentinel Command Line Interface (CLI) allows you to apply and test Sentinel policies including those that use mocks generated from HCP Terraform plans. Let's start with some basic Sentinel commands, running them in the Terminal tab on the left. diff --git a/instruqt-tracks/sentinel-cli-basics/track.yml b/instruqt-tracks/sentinel-cli-basics/track.yml index cd14cd3f..ea2876a9 100644 --- a/instruqt-tracks/sentinel-cli-basics/track.yml +++ b/instruqt-tracks/sentinel-cli-basics/track.yml @@ -21,7 +21,7 @@ developers: - jenna.wong@hashicorp.com show_timer: true idle_timeout: 300 -timelimit: 3600 +timelimit: 14400 lab_config: overlay: false width: 33 diff --git a/instruqt-tracks/sentinel-for-terraform-v4/01-restrict-vault-auth-methods/assignment.md b/instruqt-tracks/sentinel-for-terraform-v4/01-restrict-vault-auth-methods/assignment.md index 35b14967..c93198b8 100644 --- a/instruqt-tracks/sentinel-for-terraform-v4/01-restrict-vault-auth-methods/assignment.md +++ b/instruqt-tracks/sentinel-for-terraform-v4/01-restrict-vault-auth-methods/assignment.md @@ -9,7 +9,7 @@ notes: contents: |- [Sentinel](https://docs.hashicorp.com/sentinel) allows customers to implement policy-as-code in the same way that Terraform implements infrastructure-as-code. - The Sentinel Command Line Interface (CLI) allows you to apply and test Sentinel policies including those that use mocks generated from Terraform Cloud and Terraform Enterprise plans. + The Sentinel Command Line Interface (CLI) allows you to apply and test Sentinel policies including those that use mocks generated from HCP Terraform and Terraform Enterprise plans. You should run the **Sentinel CLI Basics** track before starting this track. - type: text @@ -160,7 +160,7 @@ Now open the test cases and mock files on the "Test Cases" tab. - You'll see that the `fail.hcl` test case refers to the `tfplan-functions.sentinel` module and the `mock-tfplan-fail.sentinel` mock file and expects the main rule to return `false`. - You'll also see that the `pass.hcl` test case refers to the same module and the `mock-tfplan-pass.sentinel` mock file and expects the main rule to return `true`. -The mock files are simplified versions of mocks generated from plans of Terraform Cloud runs done against Terraform code that used the Vault provider to create some auth methods. The key data that determines whether a test case will pass or fail is in the `after` stanza of the `change` stanza of resources under the `resource_changes` collection. +The mock files are simplified versions of mocks generated from plans of HCP Terraform runs done against Terraform code that used the Vault provider to create some auth methods. The key data that determines whether a test case will pass or fail is in the `after` stanza of the `change` stanza of resources under the `resource_changes` collection. The `mock-tfplan-fail.sentinel` mock file creates instances of the Kubernetes, GitHub, and AWS auth methods; the first two are allowed, but the third is not. The `mock-tfplan-pass.sentinel` mock file creates instances of the Kubernetes, GitHub, and Azure auth methods, all of which are allowed. diff --git a/instruqt-tracks/sentinel-for-terraform-v4/02-restrict-aws-iam-v1/assignment.md b/instruqt-tracks/sentinel-for-terraform-v4/02-restrict-aws-iam-v1/assignment.md index 0ed99372..c571f9f2 100644 --- a/instruqt-tracks/sentinel-for-terraform-v4/02-restrict-aws-iam-v1/assignment.md +++ b/instruqt-tracks/sentinel-for-terraform-v4/02-restrict-aws-iam-v1/assignment.md @@ -90,7 +90,7 @@ Your task is to complete and test a Sentinel policy that requires that all AWS I Complete the First Version === -1. Open the `require-access-keys-use-pgp-a.sentinel` policy on the "Poilicies" tab. +1. Open the `require-access-keys-use-pgp-a.sentinel` policy on the "Policies" tab. - You'll see several placeholders in angular brackets throughout the policy. - You need to replace those placeholders with suitable Sentinel expressions. @@ -124,7 +124,7 @@ Using multiple fail test cases allows us to test multiple ways in which a policy All 3 fail test cases expect the main rule to return `false`. Of course, we've also included a pass test case and a corresponding mock file that does include the desired attribute with an allowed value. The pass test case expects the main rule to return `true`. -The mock files are simplified versions of mocks generated from plans of Terraform Cloud runs done against Terraform code that used the AWS provider to create an AWS IAM access key. +The mock files are simplified versions of mocks generated from plans of HCP Terraform runs done against Terraform code that used the AWS provider to create an AWS IAM access key. Test the First Version === diff --git a/instruqt-tracks/sentinel-for-terraform-v4/04-restrict-domains-v1/assignment.md b/instruqt-tracks/sentinel-for-terraform-v4/04-restrict-domains-v1/assignment.md index d2baa387..1577dc26 100644 --- a/instruqt-tracks/sentinel-for-terraform-v4/04-restrict-domains-v1/assignment.md +++ b/instruqt-tracks/sentinel-for-terraform-v4/04-restrict-domains-v1/assignment.md @@ -123,7 +123,7 @@ Examine the Test Cases and Mocks === Now open the test cases and mock files on the "Test Cases" tab. You'll see that the `fail.hcl` test case refers to the `tfstate-functions.sentinel` module and the `mock-tfstate-fail.sentinel` mock file and expects the main rule to return `false`. You'll also see that the `pass.hcl` test case refers to the same module and the `mock-tfstate-pass.sentinel` mock file and expects the main rule to return `true`. -The mock files are simplified versions of mocks generated from plans of Terraform Cloud runs done against Terraform code that used the AWS provider to retrieve information from two AWS ACM certificates. +The mock files are simplified versions of mocks generated from plans of HCP Terraform runs done against Terraform code that used the AWS provider to retrieve information from two AWS ACM certificates. Test the First Version === diff --git a/instruqt-tracks/sentinel-for-terraform-v4/06-restrict-images-v1/assignment.md b/instruqt-tracks/sentinel-for-terraform-v4/06-restrict-images-v1/assignment.md index 894408a5..dbe26637 100644 --- a/instruqt-tracks/sentinel-for-terraform-v4/06-restrict-images-v1/assignment.md +++ b/instruqt-tracks/sentinel-for-terraform-v4/06-restrict-images-v1/assignment.md @@ -120,7 +120,7 @@ You'll see that the test cases, `fail-invalid-image.hcl` and `fail-no-initialize You'll also see that the test case, `pass.hcl`, refers to the `mock-tfplan-pass.sentinel` mock file and expects the main rule to return `true`. All 3 test cases also refer to the `tfplan-functions.sentinel` module. -The mock files are simplified versions of mocks generated from plans of Terraform Cloud runs done against Terraform code that used the Google provider to create a GCE compute instance. The `mock-tfplan-fail-no-initialize-params.sentinel` mock file was generated from a Terraform configuration that first generated a GCE compute disk and then created a GCE compute instance from it, avoiding the need to use the `initialize_params` block of the compute instance resource. The other two mocks created the compute instance resource directly from standard images. +The mock files are simplified versions of mocks generated from plans of HCP Terraform runs done against Terraform code that used the Google provider to create a GCE compute instance. The `mock-tfplan-fail-no-initialize-params.sentinel` mock file was generated from a Terraform configuration that first generated a GCE compute disk and then created a GCE compute instance from it, avoiding the need to use the `initialize_params` block of the compute instance resource. The other two mocks created the compute instance resource directly from standard images. Test the First Version === diff --git a/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/assignment.md b/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/assignment.md index 7af4659a..f5bcea67 100644 --- a/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/assignment.md +++ b/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/assignment.md @@ -3,7 +3,7 @@ slug: private-module-registry-v1 type: challenge title: Exercise 5a teaser: | - Only allow modules from the Private Module Registry (first version). + Only allow modules from the Terraform Private Registry (first version). notes: - type: text contents: |- @@ -24,12 +24,12 @@ notes: contents: We've made things easier by writing most of the policy for you and by providing the test cases and mocks that you need to test it. The mocks simulate the use of two Azure modules both from the public Terraform Registry and from - a Private Module Registry in an organization on the Terraform Cloud server. + a Terraform Private Registry in an organization on the HCP Terraform server. - type: text contents: |- - Your task is to complete and test a Sentinel policy that requires that all modules called by the root module come from the [Private Module Registry](https://www.terraform.io/docs/cloud/registry/index.html) (PMR) of a Terraform Cloud organization called "Cloud-Operations". You will use the [tfconfig/v2](https://www.terraform.io/docs/cloud/sentinel/import/tfconfig-v2.html) import to do that. + Your task is to complete and test a Sentinel policy that requires that all modules called by the root module come from the [Terraform Private Registry](https://www.terraform.io/docs/cloud/registry/index.html) of a HCP Terraform organization called "Cloud-Operations". You will use the [tfconfig/v2](https://www.terraform.io/docs/cloud/sentinel/import/tfconfig-v2.html) import to do that. - Since the owners of a Terraform Cloud/Enterprise organization can prevent modules in their PMR from using external modules, requiring the root module to call all modules from the PMR effectively requires that all non-root modules come from the PMR. + Since the owners of a HCP Terraform/Terraform Enterprise organization can prevent modules in their PMR from using external modules, requiring the root module to call all modules from the PMR effectively requires that all non-root modules come from the PMR. You might find the documentation for Sentinel's [matches](https://docs.hashicorp.com/sentinel/language/spec/#matches-operator) operator and [strings](https://docs.hashicorp.com/sentinel/imports/strings) import useful. You might also want to read about how modules are sourced from private module registries [here](https://www.terraform.io/docs/cloud/registry/using.html). tabs: @@ -89,9 +89,9 @@ timelimit: 1800 In this challenge, you will write a fifth Sentinel policy for Terraform. -Your task is to complete and test a Sentinel policy that requires that all modules loaded by the root module come from the [Private Module Registry](https://www.terraform.io/docs/cloud/registry/index.html) (PMR) of a Terraform Cloud organization. +Your task is to complete and test a Sentinel policy that requires that all modules loaded by the root module come from the [Terraform Private Registry](https://www.terraform.io/docs/cloud/registry/index.html) of a HCP Terraform organization. -We recommend reviewing this [doc](https://www.terraform.io/docs/cloud/registry/using.html) that describes how to specify the `source` for a module in a Private Module Registry on a Terraform Cloud or Terraform Enterprise server. +We recommend reviewing this [doc](https://www.terraform.io/docs/cloud/registry/using.html) that describes how to specify the `source` for a module in a Terraform Private Registry on a HCP Terraform or Terraform Enterprise server. At this point, we recommend you look at the tree diagram in the [Import Overview](https://www.terraform.io/docs/cloud/sentinel/import/tfconfig-v2.html#import-overview) for the `tfconfig/v2` import that the policy uses. @@ -117,7 +117,7 @@ We only want the policy to restrict module calls made from the root module. Whil 1. The simpler way uses `if index matches ""` in which uses `.+` or `(.+)` twice to match one or more characters. 2. The slightly more complex way uses `if index matches ""` in which contains a [negated character class](https://www.regular-expressions.info/charclass.html) and ensures that nothing in it occurs from the beginning (^) to the end ($) of the index. -4. Next, you need to replace `` with a condition that tests if the module call has a `source` from the desired Private Module Registry. +4. Next, you need to replace `` with a condition that tests if the module call has a `source` from the desired Terraform Private Registry. - Since this condition is placed after `not`, the function will print a violation message for modules that are not in the PMR and set the `validated` flag to `false`. - While you could use the `matches` operator in your replacement of ``, **please use the `has_prefix` function from Sentinel's [strings](https://docs.hashicorp.com/sentinel/imports/strings) import in your solution**. - In general, a well-designed function should not reference things defined outside of it. So, please do not reference the Sentinel parameters, `address` and `organization` from the top of the policy; instead, reference the function's arguments, `tf_address` and `tf_org`. @@ -134,9 +134,9 @@ Examine the Test Cases and Mocks === Now open the test cases and mock files on the "Test Cases" tab. You'll see that the `fail.hcl` test case refers to the `mock-tfconfig-fail.sentinel` mock file and expects the main rule to return false. You'll also see that the "pass.hcl" test case refers to the `mock-tfconfig-pass.sentinel` mock file and expects the main rule to return true. -As mentioned above, both test case files provide a value for the `organization` parameter. We also could have provided a value for the `address` parameter to override the default value set in the policy. We would do that if using a Terraform Enterprise server instead of the Terraform Cloud deployment hosted by HashiCorp. +As mentioned above, both test case files provide a value for the `organization` parameter. We also could have provided a value for the `address` parameter to override the default value set in the policy. We would do that if using a Terraform Enterprise server instead of the HCP Terraform deployment hosted by HashiCorp. -The mock files are simplified versions of mocks generated from plans of Terraform Cloud runs done against Terraform code that used the Azure provider to provision Azure resources including resource groups, network resources, security group resources, and VMs. The `mock-tfconfig-fail.sentinel` mock uses modules from the public [Terraform Registry](https://registry.terraform.io/) while the `mock-tfconfig-pase.sentinel` mock uses modules from a PMR in the "Cloud-Operations" organization on the Terraform Cloud server ("app.terraform.io"). +The mock files are simplified versions of mocks generated from plans of HCP Terraform runs done against Terraform code that used the Azure provider to provision Azure resources including resource groups, network resources, security group resources, and VMs. The `mock-tfconfig-fail.sentinel` mock uses modules from the public [Terraform Registry](https://registry.terraform.io/) while the `mock-tfconfig-pase.sentinel` mock uses modules from a PMR in the "Cloud-Operations" organization on the HCP Terraform server ("app.terraform.io"). Test the First Version === @@ -144,7 +144,7 @@ Now, you should test your policy on the "Sentinel CLI" tab with this command: ``` sentinel test -run=pmr-a.sentinel -verbose ``` -Setting the `-run` argument to `pmr.sentinel` will only match the desired policy and avoid running other policies. Both test cases should pass with green output. Additionally, the fail test case will print messages indicating that the root module of the Terraform configuration called modules that are not from the desired private module registry. +Setting the `-run` argument to `pmr.sentinel` will only match the desired policy and avoid running other policies. Both test cases should pass with green output. Additionally, the fail test case will print messages indicating that the root module of the Terraform configuration called modules that are not from the desired Terraform Private Registry. If that is not the case, you will need to edit the `require-modules-from-pmr-a.sentinel` policy and test the policy again until both test cases pass. diff --git a/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/check-sentinel b/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/check-sentinel index 2d6710c0..505c1cb2 100755 --- a/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/check-sentinel +++ b/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/check-sentinel @@ -12,7 +12,7 @@ fgrep -qL "" require-modules-from-pmr-a.sentinel && fail-message "Y fgrep -q 'index not matches "(.+):(.+)"' require-modules-from-pmr-a.sentinel || fgrep -q 'index not matches ".+:.+"' require-modules-from-pmr-a.sentinel || fgrep -q 'index matches "^[^:]*$"' require-modules-from-pmr-a.sentinel || fail-message "You have not replaced '' with 'index not matches \"(.+):(.+)\"' or 'index matches \"^[^:]*$\"' yet." -fgrep -qL "" require-modules-from-pmr-a.sentinel && fail-message "You have not replaced '' in require-modules-from-pmr-a.sentinel with a condition that tests if the module call has a source from the desired private module registry yet." +fgrep -qL "" require-modules-from-pmr-a.sentinel && fail-message "You have not replaced '' in require-modules-from-pmr-a.sentinel with a condition that tests if the module call has a source from the desired Terraform Private Registry yet." fgrep -q 'strings.has_prefix(mc.source, tf_address + "/" + tf_org)' require-modules-from-pmr-a.sentinel || fail-message "You have not replaced '' with 'strings.has_prefix(mc.source, tf_address + \"/\" + tf_org)' yet." diff --git a/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/setup-sentinel b/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/setup-sentinel index 54da162c..031717e3 100755 --- a/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/setup-sentinel +++ b/instruqt-tracks/sentinel-for-terraform-v4/08-private-module-registry-v1/setup-sentinel @@ -5,7 +5,7 @@ set -e cat <<-'EOF' > /root/sentinel/require-modules-from-pmr-a.sentinel # require-modules-from-pmr-a.sentinel # This policy validates that all modules loaded directly by the -# root module are in the Private Module Registry (PMR) of a TFC +# root module are in the Terraform Private Registry of a TFC # organization. # Import the v2 tfplan import, but use the alias "tfplan" @@ -42,7 +42,7 @@ require_modules_from_pmr = func(tf_address, tf_org) { if not validated { print("All modules called from the root module must come from the", - "private module registry", tf_address + "/" + tf_org) + "Terraform Private Registry", tf_address + "/" + tf_org) } return validated diff --git a/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/assignment.md b/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/assignment.md index 0602b19f..4861c38f 100644 --- a/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/assignment.md +++ b/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/assignment.md @@ -3,7 +3,7 @@ slug: private-module-registry-v2 type: challenge title: Exercise 5b teaser: | - Only allow modules from the Private Module Registry (second version). + Only allow modules from the Terraform Private Registry (second version). notes: - type: text contents: |- @@ -67,7 +67,7 @@ timelimit: 1800 In this challenge, you will write a second version of the fifth Sentinel policy for Terraform. -Your task is to complete and test a Sentinel policy that requires that all modules loaded by the root module come from the [Private Module Registry](https://www.terraform.io/docs/cloud/registry/index.html) (PMR) of a Terraform Cloud organization. +Your task is to complete and test a Sentinel policy that requires that all modules loaded by the root module come from the [Terraform Private Registry](https://www.terraform.io/docs/cloud/registry/index.html) of a HCP Terraform organization. > [!NOTE] > At any point while solving the challenge, you can click the green "Check" button to get a hint suggesting something that you still need to do. @@ -99,6 +99,6 @@ Finally, test your policy on the "Sentinel CLI" tab with this command: sentinel test -run=pmr-b.sentinel -verbose ``` -Both test cases should pass with green output. Additionally, the fail test case will print messages indicating that the root module of the Terraform configuration called modules that are not from the desired private module registry. +Both test cases should pass with green output. Additionally, the fail test case will print messages indicating that the root module of the Terraform configuration called modules that are not from the desired Terraform Private Registry. If that is not the case, you will need to edit the `require-modules-from-pmr-b.sentinel` policy and test the policy again until both test cases pass. diff --git a/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/setup-sentinel b/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/setup-sentinel index d76eb12c..0afb87af 100755 --- a/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/setup-sentinel +++ b/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/setup-sentinel @@ -8,7 +8,7 @@ mkdir -p /root/sentinel/common-functions/module-functions cat <<-'EOF' > /root/sentinel/require-modules-from-pmr-b.sentinel # require-modules-from-pmr-b.sentinel # This policy validates that all modules loaded directly by the -# root module are in the Private Module Registry (PMR) of a TFC +# root module are in the Terraform Private Registry of a TFC # organization. # Import module-functions.sentinel as "modules" diff --git a/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/solve-sentinel b/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/solve-sentinel index adc61d0a..c52744b2 100755 --- a/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/solve-sentinel +++ b/instruqt-tracks/sentinel-for-terraform-v4/09-private-module-registry-v2/solve-sentinel @@ -33,7 +33,7 @@ require_modules_from_pmr = func(tf_address, tf_org) { if not validated { print("All modules called from the root module must come from the", - "private module registry", tf_address + "/" + tf_org) + "Terraform Private Registry", tf_address + "/" + tf_org) } return validated diff --git a/instruqt-tracks/sentinel-for-terraform-v4/track.yml b/instruqt-tracks/sentinel-for-terraform-v4/track.yml index 0930203a..66769cbc 100644 --- a/instruqt-tracks/sentinel-for-terraform-v4/track.yml +++ b/instruqt-tracks/sentinel-for-terraform-v4/track.yml @@ -7,7 +7,7 @@ teaser: Learn how to write and test Sentinel policies for Terraform. description: |- [Sentinel](https://docs.hashicorp.com/sentinel) allows customers to implement policy-as-code in the same way that Terraform implements infrastructure-as-code. - Governance and security teams can write Sentinel policies to restrict what can be provisioned in Terraform Cloud and Terraform Enterprise workspaces. Sentinel allows these teams to control costs and enforce security standards. + Governance and security teams can write Sentinel policies to restrict what can be provisioned in HCP Terraform and Terraform Enterprise workspaces. Sentinel allows these teams to control costs and enforce security standards. In this track, you will write and test policies that restrict resources, data sources, and modules provisioned by Terraform in AWS, Azure, and GCP. This version of the track uses the v2 versions of the tfplan, tfstate, and tfconfig Sentinel imports. diff --git a/instruqt-tracks/terraform-cloud-aws-v2/05-protecting-sensitive-variables/setup-workstation b/instruqt-tracks/terraform-cloud-aws-v2/05-protecting-sensitive-variables/setup-workstation deleted file mode 100755 index 1770ea53..00000000 --- a/instruqt-tracks/terraform-cloud-aws-v2/05-protecting-sensitive-variables/setup-workstation +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-cloud - -# Replace the entire file. We need to do this -# in this manner as to replacethe code block for -# the TFE workspace. We can manipulate the code with -# bash but this is more straight forward. -cp -f /root/terraform-cloud/exercises/05-main.tf /root/terraform-cloud/main.tf - -# Aggregate the required content -# main.tf -cat /root/terraform-cloud/exercises/05-env_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/05-tf_vars_main.tf >> /root/terraform-cloud/main.tf - -# variables.tf -cat /root/terraform-cloud/exercises/05-env_vars_variables.tf >> /root/terraform-cloud/variables.tf -cat /root/terraform-cloud/exercises/05-tf_vars_variables.tf >> /root/terraform-cloud/variables.tf - -# Re-use deployment variables so we can upload to TFC -cat /root/hashicat-aws/terraform.tfvars >> /root/terraform-cloud/terraform.tfvars - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-aws-v2/06-team-management/setup-workstation b/instruqt-tracks/terraform-cloud-aws-v2/06-team-management/setup-workstation deleted file mode 100755 index f762eed6..00000000 --- a/instruqt-tracks/terraform-cloud-aws-v2/06-team-management/setup-workstation +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-cloud - -cat /root/terraform-cloud/exercises/06-main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/06-variables.tf >> /root/terraform-cloud/variables.tf - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-aws-v2/08-versioned-infrastructure/setup-workstation b/instruqt-tracks/terraform-cloud-aws-v2/08-versioned-infrastructure/setup-workstation deleted file mode 100755 index 2f58f7d3..00000000 --- a/instruqt-tracks/terraform-cloud-aws-v2/08-versioned-infrastructure/setup-workstation +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-github - -# Replace the entire file. We need to do this -# in this manner as to replacethe code block for -# the TFE workspace. We can manipulate the code with -# bash but this is more straight forward. -cp -f /root/terraform-cloud/exercises/08-main.tf /root/terraform-cloud/main.tf - -# Aggregate the required content -# main.tf -cat /root/terraform-cloud/exercises/05-env_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/05-tf_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-users_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-github_main.tf >> /root/terraform-cloud/main.tf - -# Aggregate with new variables -cat /root/terraform-cloud/exercises/08-variables.tf >> /root/terraform-cloud/variables.tf - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-aws-v2/12-private-module-registry/setup-workstation b/instruqt-tracks/terraform-cloud-aws-v2/12-private-module-registry/setup-workstation deleted file mode 100755 index 4b4e5a01..00000000 --- a/instruqt-tracks/terraform-cloud-aws-v2/12-private-module-registry/setup-workstation +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-cloud - -cp -a /root/hashicat-$CLOUD_ENV/exercises/13-main.tf /root/hashicat-$CLOUD_ENV/main.tf - -sed -i "s/STORAGE_MODULE/aws-s3-bucket/g" /root/terraform-cloud/exercises/13-main.tf -cat /root/terraform-cloud/exercises/13-main.tf >> /root/terraform-cloud/main.tf - -sed -i "s/STORAGE_MODULE/terraform-aws-s3-bucket/g" /root/terraform-cloud/exercises/13-variables.tf -cat /root/terraform-cloud/exercises/13-variables.tf >> /root/terraform-cloud/variables.tf - -sed -i "s/STORAGE_MODULE/terraform-aws-s3-bucket/g" /root/terraform-cloud/exercises/13-terraform.tfvars -cat /root/terraform-cloud/exercises/13-terraform.tfvars >> /root/terraform-cloud/terraform.tfvars - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-aws-v2/14-quiz-4/assignment.md b/instruqt-tracks/terraform-cloud-aws-v2/14-quiz-4/assignment.md deleted file mode 100755 index b321114e..00000000 --- a/instruqt-tracks/terraform-cloud-aws-v2/14-quiz-4/assignment.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -slug: quiz-4 -id: mxsh9aupqddg -type: quiz -title: Quiz 4 - Private Module Registry -teaser: | - A quiz about the private module registry -notes: -- type: text - contents: Congratulations! You've been promoted to Terraform Cloud Ninja. -answers: -- "True" -- "False" -solution: -- 1 -difficulty: basic -timelimit: 1800 ---- -The Terraform private module registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-cloud-aws/15-quiz-4/assignment.md b/instruqt-tracks/terraform-cloud-aws/15-quiz-4/assignment.md deleted file mode 100755 index 06fe4b25..00000000 --- a/instruqt-tracks/terraform-cloud-aws/15-quiz-4/assignment.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -slug: quiz-4 -id: gzm6rry7gsqu -type: quiz -title: "\U0001F4DD Quiz 4 - Private Module Registry" -teaser: | - A quiz about the private module registry -notes: -- type: text - contents: "\U0001F431‍\U0001F4BB Congratulations! You've been promoted to Terraform - Cloud Ninja." -answers: -- "True" -- "False" -solution: -- 1 -difficulty: basic -timelimit: 1800 ---- -The Terraform private module registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-cloud-azure-v2/05-protecting-sensitive-variables/setup-workstation b/instruqt-tracks/terraform-cloud-azure-v2/05-protecting-sensitive-variables/setup-workstation deleted file mode 100755 index 1a0d3089..00000000 --- a/instruqt-tracks/terraform-cloud-azure-v2/05-protecting-sensitive-variables/setup-workstation +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-cloud - -# Replace the entire file. We need to do this -# in this manner as to replacethe code block for -# the TFE workspace. We can manipulate the code with -# bash but this is more straight forward. -cp -f /root/terraform-cloud/exercises/05-main.tf /root/terraform-cloud/main.tf - -# Aggregate the required content -# main.tf -cat /root/terraform-cloud/exercises/05-env_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/05-tf_vars_main.tf >> /root/terraform-cloud/main.tf - -# variables.tf -cat /root/terraform-cloud/exercises/05-env_vars_variables.tf >> /root/terraform-cloud/variables.tf -cat /root/terraform-cloud/exercises/05-tf_vars_variables.tf >> /root/terraform-cloud/variables.tf - -# Re-use deployment variables so we can upload to TFC -cat /root/hashicat-$CLOUD_ENV/terraform.tfvars >> /root/terraform-cloud/terraform.tfvars - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-azure-v2/06-team-management/setup-workstation b/instruqt-tracks/terraform-cloud-azure-v2/06-team-management/setup-workstation deleted file mode 100755 index f762eed6..00000000 --- a/instruqt-tracks/terraform-cloud-azure-v2/06-team-management/setup-workstation +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-cloud - -cat /root/terraform-cloud/exercises/06-main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/06-variables.tf >> /root/terraform-cloud/variables.tf - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-azure-v2/08-versioned-infrastructure/setup-workstation b/instruqt-tracks/terraform-cloud-azure-v2/08-versioned-infrastructure/setup-workstation deleted file mode 100755 index 2f58f7d3..00000000 --- a/instruqt-tracks/terraform-cloud-azure-v2/08-versioned-infrastructure/setup-workstation +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-github - -# Replace the entire file. We need to do this -# in this manner as to replacethe code block for -# the TFE workspace. We can manipulate the code with -# bash but this is more straight forward. -cp -f /root/terraform-cloud/exercises/08-main.tf /root/terraform-cloud/main.tf - -# Aggregate the required content -# main.tf -cat /root/terraform-cloud/exercises/05-env_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/05-tf_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-users_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-github_main.tf >> /root/terraform-cloud/main.tf - -# Aggregate with new variables -cat /root/terraform-cloud/exercises/08-variables.tf >> /root/terraform-cloud/variables.tf - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-azure-v2/12-private-module-registry/setup-workstation b/instruqt-tracks/terraform-cloud-azure-v2/12-private-module-registry/setup-workstation deleted file mode 100755 index bbb3db68..00000000 --- a/instruqt-tracks/terraform-cloud-azure-v2/12-private-module-registry/setup-workstation +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-cloud - -cp -a /root/hashicat-$CLOUD_ENV/exercises/13-main.tf /root/hashicat-$CLOUD_ENV/main.tf - -sed -i "s/STORAGE_MODULE/azure-backup-storage/g" /root/terraform-cloud/exercises/13-main.tf -cat /root/terraform-cloud/exercises/13-main.tf >> /root/terraform-cloud/main.tf - -sed -i "s/STORAGE_MODULE/terraform-azurerm-azure-backup/g" /root/terraform-cloud/exercises/13-variables.tf -cat /root/terraform-cloud/exercises/13-variables.tf >> /root/terraform-cloud/variables.tf - -sed -i "s/STORAGE_MODULE/terraform-azurerm-azure-backup/g" /root/terraform-cloud/exercises/13-terraform.tfvars -cat /root/terraform-cloud/exercises/13-terraform.tfvars >> /root/terraform-cloud/terraform.tfvars - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-azure-v2/14-quiz-4/assignment.md b/instruqt-tracks/terraform-cloud-azure-v2/14-quiz-4/assignment.md deleted file mode 100755 index 39c8ea15..00000000 --- a/instruqt-tracks/terraform-cloud-azure-v2/14-quiz-4/assignment.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -slug: quiz-4 -type: quiz -title: Quiz 4 - Private Module Registry -teaser: | - A quiz about the private module registry -notes: -- type: text - contents: Congratulations! You've been promoted to Terraform Cloud Ninja. -answers: -- "True" -- "False" -solution: -- 1 -difficulty: basic -timelimit: 1800 ---- -The Terraform private module registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-cloud-azure/15-quiz-4/assignment.md b/instruqt-tracks/terraform-cloud-azure/15-quiz-4/assignment.md deleted file mode 100755 index f0becd72..00000000 --- a/instruqt-tracks/terraform-cloud-azure/15-quiz-4/assignment.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -slug: quiz-4 -type: quiz -title: "\U0001F4DD Quiz 4 - Private Module Registry" -teaser: | - A quiz about the private module registry -notes: -- type: text - contents: "\U0001F431‍\U0001F4BB Congratulations! You've been promoted to Terraform - Cloud Ninja." -answers: -- "True" -- "False" -solution: -- 1 -difficulty: basic -timelimit: 1800 ---- -The Terraform private module registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/05-protecting-sensitive-variables/setup-workstation b/instruqt-tracks/terraform-cloud-gcp-v2/05-protecting-sensitive-variables/setup-workstation deleted file mode 100755 index 1a0d3089..00000000 --- a/instruqt-tracks/terraform-cloud-gcp-v2/05-protecting-sensitive-variables/setup-workstation +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-cloud - -# Replace the entire file. We need to do this -# in this manner as to replacethe code block for -# the TFE workspace. We can manipulate the code with -# bash but this is more straight forward. -cp -f /root/terraform-cloud/exercises/05-main.tf /root/terraform-cloud/main.tf - -# Aggregate the required content -# main.tf -cat /root/terraform-cloud/exercises/05-env_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/05-tf_vars_main.tf >> /root/terraform-cloud/main.tf - -# variables.tf -cat /root/terraform-cloud/exercises/05-env_vars_variables.tf >> /root/terraform-cloud/variables.tf -cat /root/terraform-cloud/exercises/05-tf_vars_variables.tf >> /root/terraform-cloud/variables.tf - -# Re-use deployment variables so we can upload to TFC -cat /root/hashicat-$CLOUD_ENV/terraform.tfvars >> /root/terraform-cloud/terraform.tfvars - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/06-team-management/setup-workstation b/instruqt-tracks/terraform-cloud-gcp-v2/06-team-management/setup-workstation deleted file mode 100755 index f762eed6..00000000 --- a/instruqt-tracks/terraform-cloud-gcp-v2/06-team-management/setup-workstation +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-cloud - -cat /root/terraform-cloud/exercises/06-main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/06-variables.tf >> /root/terraform-cloud/variables.tf - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/08-versioned-infrastructure/setup-workstation b/instruqt-tracks/terraform-cloud-gcp-v2/08-versioned-infrastructure/setup-workstation deleted file mode 100755 index 2f58f7d3..00000000 --- a/instruqt-tracks/terraform-cloud-gcp-v2/08-versioned-infrastructure/setup-workstation +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-github - -# Replace the entire file. We need to do this -# in this manner as to replacethe code block for -# the TFE workspace. We can manipulate the code with -# bash but this is more straight forward. -cp -f /root/terraform-cloud/exercises/08-main.tf /root/terraform-cloud/main.tf - -# Aggregate the required content -# main.tf -cat /root/terraform-cloud/exercises/05-env_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/05-tf_vars_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-users_main.tf >> /root/terraform-cloud/main.tf -cat /root/terraform-cloud/exercises/08-github_main.tf >> /root/terraform-cloud/main.tf - -# Aggregate with new variables -cat /root/terraform-cloud/exercises/08-variables.tf >> /root/terraform-cloud/variables.tf - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/12-private-module-registry/setup-workstation b/instruqt-tracks/terraform-cloud-gcp-v2/12-private-module-registry/setup-workstation deleted file mode 100755 index a15deb87..00000000 --- a/instruqt-tracks/terraform-cloud-gcp-v2/12-private-module-registry/setup-workstation +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -l -set -e - -# Set workdir -set-workdir /root/terraform-cloud - -cp -a /root/hashicat-$CLOUD_ENV/exercises/13-main.tf /root/hashicat-$CLOUD_ENV/main.tf - -sed -i "s/STORAGE_MODULE/google-cloud-storage/g" /root/terraform-cloud/exercises/13-main.tf -cat /root/terraform-cloud/exercises/13-main.tf >> /root/terraform-cloud/main.tf - -sed -i "s/STORAGE_MODULE/terraform-google-cloud-storage/g" /root/terraform-cloud/exercises/13-variables.tf -cat /root/terraform-cloud/exercises/13-variables.tf >> /root/terraform-cloud/variables.tf - -sed -i "s/STORAGE_MODULE/terraform-google-cloud-storage/g" /root/terraform-cloud/exercises/13-terraform.tfvars -cat /root/terraform-cloud/exercises/13-terraform.tfvars >> /root/terraform-cloud/terraform.tfvars - -exit 0 diff --git a/instruqt-tracks/terraform-cloud-gcp-v2/14-quiz-4/assignment.md b/instruqt-tracks/terraform-cloud-gcp-v2/14-quiz-4/assignment.md deleted file mode 100755 index 39c8ea15..00000000 --- a/instruqt-tracks/terraform-cloud-gcp-v2/14-quiz-4/assignment.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -slug: quiz-4 -type: quiz -title: Quiz 4 - Private Module Registry -teaser: | - A quiz about the private module registry -notes: -- type: text - contents: Congratulations! You've been promoted to Terraform Cloud Ninja. -answers: -- "True" -- "False" -solution: -- 1 -difficulty: basic -timelimit: 1800 ---- -The Terraform private module registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-cloud-gcp/15-quiz-4/assignment.md b/instruqt-tracks/terraform-cloud-gcp/15-quiz-4/assignment.md deleted file mode 100755 index f0becd72..00000000 --- a/instruqt-tracks/terraform-cloud-gcp/15-quiz-4/assignment.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -slug: quiz-4 -type: quiz -title: "\U0001F4DD Quiz 4 - Private Module Registry" -teaser: | - A quiz about the private module registry -notes: -- type: text - contents: "\U0001F431‍\U0001F4BB Congratulations! You've been promoted to Terraform - Cloud Ninja." -answers: -- "True" -- "False" -solution: -- 1 -difficulty: basic -timelimit: 1800 ---- -The Terraform private module registry automatically updates private modules copied from the public registry if the original public modules are updated. diff --git a/instruqt-tracks/terraform-foundations-aws/01-getting-started/assignment.md b/instruqt-tracks/terraform-foundations-aws/01-getting-started/assignment.md index 546010e3..44850af6 100755 --- a/instruqt-tracks/terraform-foundations-aws/01-getting-started/assignment.md +++ b/instruqt-tracks/terraform-foundations-aws/01-getting-started/assignment.md @@ -30,7 +30,7 @@ tabs: hostname: tf-foundations - title: Slides type: website - url: https://hashicorp.github.io/field-workshops-terraform/slides/multi-cloud/terraform-cloud/how-tf-works/#2 + url: https://hashicorp.github.io/field-workshops-terraform/slides/multi-cloud/hcp-terraform/how-tf-works/#2 - title: AWS Provider type: website url: https://registry.terraform.io/providers/hashicorp/aws/latest/docs diff --git a/instruqt-tracks/terraform-foundations-aws/02-terraform-basics/assignment.md b/instruqt-tracks/terraform-foundations-aws/02-terraform-basics/assignment.md index 9266429e..dbd0ccc9 100755 --- a/instruqt-tracks/terraform-foundations-aws/02-terraform-basics/assignment.md +++ b/instruqt-tracks/terraform-foundations-aws/02-terraform-basics/assignment.md @@ -25,7 +25,7 @@ tabs: hostname: tf-foundations - title: Slides type: website - url: https://hashicorp.github.io/field-workshops-terraform/slides/multi-cloud/terraform-cloud/tf-basics/#2 + url: https://hashicorp.github.io/field-workshops-terraform/slides/multi-cloud/hcp-terraform/tf-basics/#2 - title: AWS VPC type: website url: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/vpc diff --git a/instruqt-tracks/terraform-foundations-aws/03-terraform-state/assignment.md b/instruqt-tracks/terraform-foundations-aws/03-terraform-state/assignment.md index ae532839..b6f3dc0a 100755 --- a/instruqt-tracks/terraform-foundations-aws/03-terraform-state/assignment.md +++ b/instruqt-tracks/terraform-foundations-aws/03-terraform-state/assignment.md @@ -7,7 +7,7 @@ teaser: |- ◉ Exploring State - ◉ Terraform Cloud Setup + ◉ HCP Terraform Setup ◉ Remote State notes: @@ -25,7 +25,7 @@ tabs: hostname: tf-foundations - title: Slides type: website - url: https://hashicorp.github.io/field-workshops-terraform/slides/multi-cloud/terraform-cloud/tf-basics/#2 + url: https://hashicorp.github.io/field-workshops-terraform/slides/multi-cloud/hcp-terraform/tf-basics/#2 - title: Terraform State type: website url: https://www.terraform.io/docs/state/purpose.html @@ -38,7 +38,7 @@ timelimit: 5000 You may have noticed the two new files in your `Code Editor` tab after we run successful applies called `terraform.tfstate` and `terraform.tfstate.backup`. Click the terraform.tfstate file in the code editor to view the state file. Note that this state file is stored locally on our machine. During the slides we discussed reasons why storing the Terraform state locally is not a best practice. In this lab challenge we will configure remote state -and use Terraform Cloud to store and protect our state file. +and use HCP Terraform to store and protect our state file. You should also notice all of the details of our VPC and subnet in our state file. This is an exact representation of what we currently have provisioned in AWS. If we deleted this state file, the record of what is provisioned would be lost. If we would run another plan and apply after @@ -49,9 +49,9 @@ forward. Due to the importance of your Terraform state file, it is crucial that you have a secure and stable configuration to manage storage and locking of the your state files. -[**Terraform Cloud Setup**](https://app.terraform.io/) +[**HCP Terraform Setup**](https://app.terraform.io/) -Let's start with setting up a Terraform Cloud Account. We recommend not using any production Terraform Cloud accounts for this course. +Let's start with setting up an HCP Terraform Account. We recommend not using any production HCP Terraform accounts for this course. Click on the link below and create an account if you do not already have one. Please be sure to validate your email address. This is required to create an organization. @@ -61,30 +61,30 @@ an organization. After you have validated your email you will be given the option to create an organization. The organization name needs to be unique so be creative. You can now click on "Workspaces". Since this is a new organization, you shouldn't have any in the list yet. -Now we are going to create an API token for Terraform Cloud. From the terminal run the following command +Now we are going to create an API token for HCP Terraform. From the terminal run the following command ``` terraform login ``` -When prompted, enter `yes` to proceed. Click on the URL provided. This will forward you to Terraform Cloud to create an API token. Copy the token string +When prompted, enter `yes` to proceed. Click on the URL provided. This will forward you to HCP Terraform to create an API token. Copy the token string and paste that at the "Token for app.terraform.io" prompt. [**Remote State**](https://www.terraform.io/docs/state/remote.html) -Before we do a plan and apply to deploy our infrastructure, let's set up remote state. We have already created a `remote_backend.tf` file which configures Terraform -Cloud as a remote backend. You will need to update this file with the organization name you created. Once the organization is updated, we just need to migrate -our state file to Terraform Cloud by running another init. +Before we do a plan and apply to deploy our infrastructure, let's set up remote state. We have already created a `remote_backend.tf` file which configures HCP Terraform +as a remote backend. You will need to update this file with the organization name you created. Once the organization is updated, we just need to migrate +our state file to HCP Terraform by running another init. ``` terraform init ``` You should have been prompted with a new message asking if you want to copy the existing state to the new backend location we defined. Type 'yes' and press enter. -You should now see the new workspace created in Terraform Cloud. In Terraform Cloud, click on your workspace name and click on "States" in the upper right. You should +You should now see the new workspace created in HCP Terraform. In HCP Terraform, click on your workspace name and click on "States" in the upper right. You should see the state file that you just migrated. You can click on this first version of your state file to look at it's contents. -Click on "Settings" and select "General". There are two execution modes for Terraform Cloud, Remote and Local. Remote will be the default and sets Terraform -Cloud to run the terraform commands in Terraform Cloud. Local will allow you to run the commands on your local computer but still get the advantages of having -secure remote state in Terraform Cloud. Select the `Local` option and save this setting. +Click on "Settings" and select "General". There are two execution modes for HCP Terraform, Remote and Local. Remote will be the default and sets HCP Terraform +to run the terraform commands in HCP Terraform. Local will allow you to run the commands on your local computer but still get the advantages of having +secure remote state in HCP Terraform. Select the `Local` option and save this setting. -Let's make a change to our template and see how Terraform Cloud updates the version of the state file. Change your "prefix" variable to something different. +Let's make a change to our template and see how HCP Terraform updates the version of the state file. Change your "prefix" variable to something different. Since we are using this prefix to prefix our resource name tags, it will update those tags on our existing resources. Perform a plan to do a dry run on the Terraform code. Review the output to confirm what will be changed when you apply. It should be just the name tags. @@ -95,15 +95,15 @@ Now run an apply to make those name tag changes in AWS. ``` terraform apply -auto-approve ``` -After the apply completes, navigate back to Terraform Cloud. Select your workspace and review the states again. You should see a few different revisions +After the apply completes, navigate back to HCP Terraform. Select your workspace and review the states again. You should see a few different revisions of your state with the changes you just made. -Since we are now confident that our state file is centrally stored in Terraform Cloud, we can delete our local state files that we have been working with. +Since we are now confident that our state file is centrally stored in HCP Terraform, we can delete our local state files that we have been working with. ``` rm -Rf *tfstate* ``` -Now let's go back and change the Execution Mode back to remote. In Terraform Cloud, select your workspace again, go into "Settings" and "General" then select -remote. This will have the plan and apply run in Terraform cloud. While you are in the General Settings page, change the "Apply Method" to "Auto apply". +Now let's go back and change the Execution Mode back to remote. In HCP Terraform, select your workspace again, go into "Settings" and "General" then select +remote. This will have the plan and apply run in HCP Terraform. While you are in the General Settings page, change the "Apply Method" to "Auto apply". This will remove the requirement to confirm your applies in the console. Don't forget to save your settings. We will need to transfer our AWS credentials to our workspace environment variables. Echo your AWS access key and secret from your terminal, like we did in @@ -112,7 +112,7 @@ the first challenge. echo $AWS_ACCESS_KEY_ID echo $AWS_SECRET_ACCESS_KEY ``` -This will be the information we will transfer to Terraform Cloud. In the "Workspace variables" section on the bottom of the page, click on "Add variable". +This will be the information we will transfer to HCP Terraform. In the "Workspace variables" section on the bottom of the page, click on "Add variable". Choose the "Environment variable" bullet and add both AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY with the values shown above. Be sure to set the "AWS_SECRET_ACCESS_KEY" as "Sensitive" to ensure that your sensitive credentials cannot be retrieved. @@ -133,16 +133,16 @@ terraform plan ``` terraform apply -auto-approve ``` -If you go back to Terraform Cloud, you will see the "Run Status" of our workspace as "Planning" or "Applying". You can also click on your workspace to review -the outputs of your current or previous plans and applies. Feel free to make changes to your prefix variable and run more plan and applies. Review the Terraform -Cloud console to see the job status. +If you go back to HCP Terraform, you will see the "Run Status" of our workspace as "Planning" or "Applying". You can also click on your workspace to review +the outputs of your current or previous plans and applies. Feel free to make changes to your prefix variable and run more plan and applies. Review the HCP Terraform +console to see the job status. -When you have completed exploring Terraform Cloud, run the following command to destroy the infrastructure we have created. +When you have completed exploring HCP Terraform, run the following command to destroy the infrastructure we have created. ``` terraform destroy -auto-approve ``` -This can be done in Terraform Cloud as well. Choose "Destruction and Deletion" in the settings of the workspace. There will be two options in this menu. Run +This can be done in HCP Terraform as well. Choose "Destruction and Deletion" in the settings of the workspace. There will be two options in this menu. Run "Queue destroy plan" to destroy the infrastructure created by this workspace. -"Delete from Terraform Cloud" will delete the workspace but will not run a terraform destroy. Use this with caution. It will remove your state file and workspace +"Delete from HCP Terraform" will delete the workspace but will not run a terraform destroy. Use this with caution. It will remove your state file and workspace but leave your infrastructure in place. This will remove all terraform management from the infrastructure created with that workspace. diff --git a/instruqt-tracks/terraform-foundations-aws/03-terraform-state/check-tf-foundations b/instruqt-tracks/terraform-foundations-aws/03-terraform-state/check-tf-foundations index 17724840..76adcfcc 100755 --- a/instruqt-tracks/terraform-foundations-aws/03-terraform-state/check-tf-foundations +++ b/instruqt-tracks/terraform-foundations-aws/03-terraform-state/check-tf-foundations @@ -11,7 +11,7 @@ cd ~/gitclones/tflabs if [ ! -f "/root/.terraform.d/credentials.tfrc.json" ] then - fail-message "TFC token not set, please run the terraform login command or refresh your Terminal tab before continuing." + fail-message "HCP Terraform token not set, please run the terraform login command or refresh your Terminal tab before continuing." else TOKEN=$(jq -r '.credentials."app.terraform.io".token' /root/.terraform.d/credentials.tfrc.json) echo $(echo TFE_TOKEN=$TOKEN >> /root/.bashrc) @@ -19,7 +19,7 @@ fi if [ -z "$TOKEN" ] then - fail-message "TFC token not set, please run the terraform login command or refresh your Terminal tab before continuing." + fail-message "HCP Terraform token not set, please run the terraform login command or refresh your Terminal tab before continuing." else echo $(echo TFE_TOKEN=$TOKEN >> /root/.bashrc) fi @@ -28,7 +28,7 @@ export TFC_ORG=$(awk -F'"' '/organization/ {print $2}' remote_backend.tf) export TFC_WORKSPACE=$(awk -F'"' '/ name/ {print $2}' remote_backend.tf) if [ $TFC_ORG = "UpdateThisWithYourOrgName" ] then - fail-message "Please update your remote_backend.tf to your organization name in Terraform Cloud. Make sure to run a 'terraform init' after updating the file. This will migrated your statefile to Terraform Cloud" + fail-message "Please update your remote_backend.tf to your organization name in HCP Terraform. Make sure to run a 'terraform init' after updating the file. This will migrated your statefile to HCP Terraform" fi terraform init -input=false -reconfigure -force-copy >/tmp/tfinit.test 2>&1 @@ -44,15 +44,15 @@ fi if [ -z $(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.apitoken" "https://app.terraform.io/api/v2/vars?filter%5Borganization%5D%5Bname%5D=$TFC_ORG&filter%5Bworkspace%5D%5Bname%5D=$TFC_WORKSPACE"|jq '.data[].attributes | select(.key == "AWS_ACCESS_KEY_ID") .key') ] then - fail-message "Missing AWS_ACCESS_KEY_ID variable in your Terraform Cloud workspace $TFC_WORKSPACE. This is required to authenticate to AWS in remote execution mode" + fail-message "Missing AWS_ACCESS_KEY_ID variable in your HCP Terraform workspace $TFC_WORKSPACE. This is required to authenticate to AWS in remote execution mode" fi if [ -z $(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.apitoken" "https://app.terraform.io/api/v2/vars?filter%5Borganization%5D%5Bname%5D=$TFC_ORG&filter%5Bworkspace%5D%5Bname%5D=$TFC_WORKSPACE"|jq '.data[].attributes | select(.key == "AWS_SECRET_ACCESS_KEY") .key') ] then - fail-message "Missing AWS_SECRET_ACCESS_KEY variable in your Terraform Cloud workspace $TFC_WORKSPACE. This is required to authenticate to AWS in remote execution mode" + fail-message "Missing AWS_SECRET_ACCESS_KEY variable in your HCP Terraform workspace $TFC_WORKSPACE. This is required to authenticate to AWS in remote execution mode" fi if [ $(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.apitoken" "https://app.terraform.io/api/v2/vars?filter%5Borganization%5D%5Bname%5D=$TFC_ORG&filter%5Bworkspace%5D%5Bname%5D=$TFC_WORKSPACE"|jq '.data[].attributes | select(.key == "AWS_SECRET_ACCESS_KEY") .sensitive') == false ] then - fail-message "You didn't set the AWS_SECRET_ACCESS_KEY variable in your Terraform Cloud workspace $TFC_WORKSPACE as 'sensitive'. This would be considered a security risk since anyone with access to the workspace would see the secret in clear text" + fail-message "You didn't set the AWS_SECRET_ACCESS_KEY variable in your HCP Terraform workspace $TFC_WORKSPACE as 'sensitive'. This would be considered a security risk since anyone with access to the workspace would see the secret in clear text" fi \ No newline at end of file diff --git a/instruqt-tracks/terraform-foundations-aws/04-terraform-intermediate/assignment.md b/instruqt-tracks/terraform-foundations-aws/04-terraform-intermediate/assignment.md index 6a780ccf..8c347d4e 100755 --- a/instruqt-tracks/terraform-foundations-aws/04-terraform-intermediate/assignment.md +++ b/instruqt-tracks/terraform-foundations-aws/04-terraform-intermediate/assignment.md @@ -31,7 +31,7 @@ tabs: hostname: tf-foundations - title: Slides type: website - url: https://hashicorp.github.io/field-workshops-terraform/slides/multi-cloud/terraform-cloud/tf-intermediate/#2 + url: https://hashicorp.github.io/field-workshops-terraform/slides/multi-cloud/hcp-terraform/tf-intermediate/#2 - title: Terraform Data Sources type: website url: https://www.terraform.io/docs/configuration/data-sources.html @@ -59,9 +59,9 @@ In this exercise we will be using everything we've learned so far together, as w Please review the additional resources we added to your existing project. -[**Data Sources**](https://www.terraform.io/docs/configuration/data-sources.html) +[**Terraform Data Sources**](https://www.terraform.io/docs/configuration/data-sources.html) -Data sources allow data to be fetched or computed for use elsewhere in Terraform configuration. Here we are using an aws_ami data source to search for the latest version +Terraform Data Sources allow data to be fetched or computed for use elsewhere in Terraform configuration. Here we are using an `aws_ami` data source to search for the latest version of an Ubuntu image in the AWS AMI repository. We will use this image further down when creating an EC2 instance ``` @@ -83,9 +83,9 @@ Once a data source is defined its attributes become available for use in express You can reference a specific attribute as `data...`. For our AWS AMI example above, if you wanted to reference the AMI's ARN you would use `data.aws_ami.ubuntu.arn` -[**Local Values**](https://www.terraform.io/docs/configuration/locals.html) +[**Terraform Local Values**](https://www.terraform.io/docs/configuration/locals.html) -A local value assigns a name to an expression, so you can use it multiple times within a module without repeating it. +A Terraform Local Value assigns a name to an expression, so you can use it multiple times within a module without repeating it. Local values can be helpful to avoid repeating the same values or expressions multiple times in a configuration, but if overused they can also make a configuration hard to read by future maintainers by hiding the actual values used. @@ -113,7 +113,7 @@ The Terraform language includes a number of built-in functions that you can call While our networking components are not extremely complex, we want to be able to reuse this pattern for other web applications and build in some organizational best practices. -IMPORTANT: comment out or delete your VPC and subnet terraform resource definitions as well as the vpc_cidr and subnet_cidr variables in Terraform Cloud. We will now be +IMPORTANT: comment out or delete your VPC and subnet terraform resource definitions as well as the vpc_cidr and subnet_cidr variables in HCP Terraform. We will now be leveraging a network module instead. This module contains similar code and allows us to abstract away those network details. The source of our module is external from our project. By doing this, we decouple these components. This allows for further access controls around the code diff --git a/instruqt-tracks/terraform-foundations-aws/04-terraform-intermediate/check-tf-foundations b/instruqt-tracks/terraform-foundations-aws/04-terraform-intermediate/check-tf-foundations index 2d7f007b..cdac319e 100755 --- a/instruqt-tracks/terraform-foundations-aws/04-terraform-intermediate/check-tf-foundations +++ b/instruqt-tracks/terraform-foundations-aws/04-terraform-intermediate/check-tf-foundations @@ -9,7 +9,7 @@ fi if [ ! -f "/root/.terraform.d/credentials.tfrc.json" ] then - fail-message "TFC token not set, please run the terraform login command or refresh your Terminal tab before continuing." + fail-message "HCP Terraform token not set, please run the terraform login command or refresh your Terminal tab before continuing." else TOKEN=$(jq -r '.credentials."app.terraform.io".token' /root/.terraform.d/credentials.tfrc.json) echo $(echo TFE_TOKEN=$TOKEN >> /root/.bashrc) @@ -17,7 +17,7 @@ fi if [ -z "$TOKEN" ] then - fail-message "TFC token not set, please run the terraform login command or refresh your Terminal tab before continuing." + fail-message "HCP Terraform token not set, please run the terraform login command or refresh your Terminal tab before continuing." else echo $(echo TFE_TOKEN=$TOKEN >> /root/.bashrc) fi @@ -25,7 +25,7 @@ fi export TFC_ORG=$(awk -F'"' '/organization/ {print $2}' remote_backend.tf) export TFC_WORKSPACE=$(awk -F'"' '/ name/ {print $2}' remote_backend.tf) -# Get Terraform Cloud Workspace ID +# Get HCP Terraform Workspace ID export WRKS_ID=$(curl -s --header "Authorization: Bearer $TOKEN" --header "Content-Type: application/vnd.api+json" https://app.terraform.io/api/v2/organizations/$TFC_ORG/workspaces/$TFC_WORKSPACE|jq -r .data.id) # Get state download url for further jq queries diff --git a/instruqt-tracks/terraform-foundations-aws/05-version-control-basics/assignment.md b/instruqt-tracks/terraform-foundations-aws/05-version-control-basics/assignment.md index 21e0605c..ecc01517 100755 --- a/instruqt-tracks/terraform-foundations-aws/05-version-control-basics/assignment.md +++ b/instruqt-tracks/terraform-foundations-aws/05-version-control-basics/assignment.md @@ -7,7 +7,7 @@ teaser: |- ◉ What is a VCS? - ◉ Terraform Cloud VCS Workflow + ◉ HCP Terraform VCS Workflow ◉ Managing infrastructure changes in VCS notes: @@ -33,8 +33,8 @@ tabs: hostname: tf-foundations - title: Slides type: website - url: https://hashicorp.github.io/field-workshops-terraform/slides/multi-cloud/terraform-cloud/version-control/#2 -- title: Terraform Cloud + url: https://hashicorp.github.io/field-workshops-terraform/slides/multi-cloud/hcp-terraform/version-control/#2 +- title: HCP Terraform type: external url: https://app.terraform.io difficulty: basic @@ -42,13 +42,13 @@ timelimit: 5000 --- [**Version Control Systems (VCS)**](https://www.terraform.io/docs/state/remote.html) -We setup a GitLab server for this part of the labs. The foundational configurations for Terraform Cloud and GitLab have been setup as well. This includes setting up the +We setup a GitLab server for this part of the labs. The foundational configurations for HCP Terraform and GitLab have been setup as well. This includes setting up the webhook integration between them which allows information to be shared between the two tools. We've also added GitLab groups to simulate a Development Team and a Network Team, committed our application code to projects/repositories in these groups, and added branches to represent various application environments. Finally we've added these -projects/repositories to Terraform Cloud in the form of "Workspaces". +projects/repositories to HCP Terraform in the form of "Workspaces". HashiCat is a new project that we added for this part of the labs. This will create a simple webserver that we can use to promote changes between environments with -Terraform Cloud. +HCP Terraform. We've set the foundation for you, so that you can focus on the operational workflows and the power that comes along with them. Let's start with the VCS... @@ -83,7 +83,7 @@ Select `Browse files` button in the upper right. This allows you to view the fil our state file was pushed into our repository. This is something that can easily happen by mistake. Select the `terraform.tfstate` file. Then in the upper right, select `Blame`. From here, you can see what changes occurred -for each commit, who did it and when. Using Terraform Cloud would keep these state files centralized outside of the project and +for each commit, who did it and when. Using HCP Terraform would keep these state files centralized outside of the project and encrypted with HashiCorp Vault. Select the `GitLab` logo in the upper left. This will take you back to our project list. @@ -92,11 +92,11 @@ Select `HashiCat AWS`. We will be working with this project for the remainder of Select the pulldown menu that is labeled `master`. From there you will see three branches of our project. You can think of a branch as a copy of the codebase that you can make changes to without impacting other branches. Keep this in mind as we look -at our Terraform Cloud setup for our new HashiCat application. +at our HCP Terraform setup for our new HashiCat application. -[**Terraform Cloud**](https://app.terraform.io/app/organizations) +[**HCP Terraform**](https://app.terraform.io/app/organizations) -When you navigate to TFC you will see a new Organization named `Terraform-Foundations-` in the top left pull down menu. +When you navigate to HCP Terraform you will see a new Organization named `Terraform-Foundations-` in the top left pull down menu. In this new organization you will have three new workspaces, one for each environment. Each of these workspaces are connected to our GitLab VCS and to the respected branches that we covered in the previous step. @@ -105,7 +105,7 @@ If all of your workspaces are not "Applied", please wait until they complete. Select the `HashiCat-Development` workspace. Let's review the current workspace configuration. From the `Overview` page there will be an `Outputs` tab. There should be two outputs that were created, `catapp_ip` and `catapp_url`. Each -Terraform Cloud workspace will have unique outputs for each environment. When you navigate to these URL's, the HashiCat webpage will indicate +HCP Terraform workspace will have unique outputs for each environment. When you navigate to these URL's, the HashiCat webpage will indicate which environment they are in. Variables are set for the AWS credentials and prefix, similar to the previous challenges. There is also a variable named "environment" that @@ -121,7 +121,7 @@ Each workspace is setup with it's respected variable for environment and watchin **Operational Changes** Let's look how a change promotion would look in this configuration we outlined. We are going to start in our "Development" environment -and move, or promote, that change to our other environments. Make sure you have both GitLab and Terraform Cloud web pages up. We will +and move, or promote, that change to our other environments. Make sure you have both GitLab and HCP Terraform web pages up. We will start in GitLab.. Select the `HashiCat AWS` project, if you are not already there. @@ -136,7 +136,7 @@ On line 14, add a message after the "Welcome" message. Add a "Commit message" be When you're done click on `Commit Changes` -Navigate back out to Terraform Cloud. You should see that your `HashiCat-Development` workspace is running. If you were not quick enough +Navigate back out to HCP Terraform. You should see that your `HashiCat-Development` workspace is running. If you were not quick enough to see it applying, you can look at the `Runs`. There will be a new run with your message that was triggered. Refresh your HashiCat Development web page to confirm that your updates are now displayed. @@ -161,14 +161,14 @@ and stage branches. These are the changes that will be merged into our target br Select `Submit merge request`. We now have an opened merge request. In our lab, approvals are optional but we could require multiple approvers before any changes get applied. We could deny the request and put a comment with details regarding why we denied it. -Right click on the green check-mark next to `Pipeline`. Open this link in a new tab. Under pipelines select the `Terraform Cloud` green check-mark. +Right click on the green check-mark next to `Pipeline`. Open this link in a new tab. Under pipelines select the `HCP Terraform` green check-mark. As a merge request reviewer, you can use this to review the Terraform plan that was ran by the GitLab pipeline. We peer reviewed the changes everything looks good. Now go back to the tab we left open with our merge request and select the green `Merge` button Notice that another pipeline was started under where the merge button was. It will have incremented by +1. Right click on this new pipeline and -open it in a new tab. You can use the external pipeline to link out to Terraform Cloud to review the apply. We could have also been watching -the Terraform Cloud workspace list to see our workspaces auto apply from our merge request. +open it in a new tab. You can use the external pipeline to link out to HCP Terraform to review the apply. We could have also been watching +the HCP Terraform workspace list to see our workspaces auto apply from our merge request. You can open the stage URL of our HashiCat app to confirm that our changes have been added. diff --git a/instruqt-tracks/terraform-foundations-aws/track.yml b/instruqt-tracks/terraform-foundations-aws/track.yml index 32842327..c02cb553 100644 --- a/instruqt-tracks/terraform-foundations-aws/track.yml +++ b/instruqt-tracks/terraform-foundations-aws/track.yml @@ -21,3 +21,12 @@ developers: - roger@hashicorp.com - jenna.wong@hashicorp.com show_timer: true +idle_timeout: 300 +timelimit: 14400 +lab_config: + overlay: false + width: 33 + position: right + sidebar_enabled: true + feedback_recap_enabled: true + loadingMessages: true \ No newline at end of file diff --git a/instruqt-tracks/terraform-intro-aws/track.yml b/instruqt-tracks/terraform-intro-aws/track.yml index 5cba538b..1e58f154 100644 --- a/instruqt-tracks/terraform-intro-aws/track.yml +++ b/instruqt-tracks/terraform-intro-aws/track.yml @@ -72,7 +72,7 @@ challenges: notes: - type: text contents: |- - Terraform open source is a command line application that you can download and run from your laptop or virtual workstation. + Terraform Community Edition is a command line application that you can download and run from your laptop or virtual workstation. It is written in Go and runs on macOS, Linux or Windows. You can always download the latest version of Terraform from https://www.terraform.io/downloads.html - type: text @@ -919,27 +919,27 @@ challenges: - 1 difficulty: basic timelimit: 1000 -- slug: terraform-cloud-setup +- slug: hcp-terraform-setup id: jlx3zubmjrid type: challenge - title: ☁️ Terraform Cloud Setup + title: ☁️ HCP Terraform Setup teaser: | - Terraform Cloud offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in Terraform Cloud. + HCP Terraform offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in HCP Terraform. notes: - type: text - contents: Terraform Cloud remote state storage is free for all users. + contents: HCP Terraform remote state storage is free for all users. assignment: |- - During this challenge and the next one, you'll use the remote state feature of Terraform Cloud to store your state file in the cloud. In order to do this you'll need a Terraform Cloud account. Click on the URL below and sign up for a free account if you don't have one already: + During this challenge and the next one, you'll use the remote state feature of HCP Terraform to store your state file in the cloud. In order to do this you'll need a HCP Terraform account. Click on the URL below and sign up for a free account if you don't have one already: https://app.terraform.io/signup/account If you already have an account you can simply sign in with your existing credentials. - Once you're signed into Terraform Cloud create a new organization called YOURNAME-training. Replace YOURNAME with your own name or other text. + Once you're signed into HCP Terraform create a new organization called YOURNAME-training. Replace YOURNAME with your own name or other text. Next you'll be prompted to create a workspace. You can skip the VCS integration step by clicking the "CLI-driven workflow" panel. Name your workspace **hashicat-aws**. - **Note:** If you already have a **hashicat-aws** workspace, please delete the workspace by selecting the **Settings >> Destruction and Deletion** menu, clicking the "Delete from Terraform Cloud" button, typing "hashicat-aws" to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you played the [Terraform Cloud with AWS](https://play.instruqt.com/hashicorp/tracks/terraform-cloud-aws) track and then played this track. + **Note:** If you already have a **hashicat-aws** workspace, please delete the workspace by selecting the **Settings >> Destruction and Deletion** menu, clicking the "Delete from HCP Terraform" button, typing "hashicat-aws" to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you played the [HCP Terraform with AWS](https://play.instruqt.com/hashicorp/tracks/terraform-cloud-aws) track and then played this track. Run `terraform version` on the "Shell" tab and then set the **Terraform Version** to match on the workspace's **Settings >> General** settings page. @@ -961,21 +961,21 @@ challenges: type: challenge title: "\U0001F39B️ Configure Remote State" teaser: | - The terraform command line tool can store its state in Terraform Cloud. All that is required is a user token. + The terraform command line tool can store its state in HCP Terraform. All that is required is a user token. notes: - type: text contents: |- With *local* execution mode the Terraform commands and variables all remain on your workstation. - With *remote* execution mode Terraform runs in a Terraform Cloud + With *remote* execution mode Terraform runs in a HCP Terraform container environment. All variables must be configured in the cloud environment with this method. assignment: |- - During this challenge we'll configure Terraform Cloud as a remote state backend, and then migrate our existing state file to Terraform Cloud. + During this challenge we'll configure HCP Terraform as a remote state backend, and then migrate our existing state file to HCP Terraform. Edit the "remote_backend.tf" file and replace the YOURORGANIZATION placeholder with your org name. Be sure to save the file. - Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in Terraform Cloud: + Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in HCP Terraform: https://app.terraform.io/app/settings/tokens @@ -983,21 +983,21 @@ challenges: Back in the Instruqt track, you need to add your API token to a file called "credentials.tfrc.json". Select the "Credentials File" tab and open the `/root/.terraform.d/credentials.tfrc.json` file directly. - Replace the part that says YOURTOKEN with what you copied from Terraform Cloud. Be sure to save the file. + Replace the part that says YOURTOKEN with what you copied from HCP Terraform. Be sure to save the file. Your token is now safely stored in the `/root/.terraform.d/credentials.tfrc.json` file. - Now run `terraform init` to migrate your state to Terraform Cloud. + Now run `terraform init` to migrate your state to HCP Terraform. ``` terraform init ``` - Type "yes" when it prompts you to migrate your state into Terraform Cloud. + Type "yes" when it prompts you to migrate your state into HCP Terraform. - Your state is now safely stored in Terraform Cloud. You can verify this on the "States" tab of your workspace in the TFC UI. + Your state is now safely stored in HCP Terraform. You can verify this on the "States" tab of your workspace in the TFC UI. - Run a `terraform apply -auto-approve` and watch your state file evolve with each change. You can browse through previous state files with the Terraform Cloud UI. + Run a `terraform apply -auto-approve` and watch your state file evolve with each change. You can browse through previous state files with the HCP Terraform UI. tabs: - title: Shell type: terminal diff --git a/instruqt-tracks/terraform-intro-azure/track.yml b/instruqt-tracks/terraform-intro-azure/track.yml index f10920e5..e765c2bd 100644 --- a/instruqt-tracks/terraform-intro-azure/track.yml +++ b/instruqt-tracks/terraform-intro-azure/track.yml @@ -71,7 +71,7 @@ challenges: notes: - type: text contents: |- - Terraform open source is a command line application that you can download and run from your laptop or virtual workstation. + Terraform Community Edition is a command line application that you can download and run from your laptop or virtual workstation. It is written in Go and runs on macOS, Linux or Windows. You can always download the latest version of Terraform from https://www.terraform.io/downloads.html - type: text @@ -922,27 +922,27 @@ challenges: - 1 difficulty: basic timelimit: 1067 -- slug: terraform-cloud-setup +- slug: hcp-terraform-setup id: mq6cxmxuoxyi type: challenge - title: ☁️ Terraform Cloud Setup + title: ☁️ HCP Terraform Setup teaser: | - Terraform Cloud offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in Terraform Cloud. + HCP Terraform offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in HCP Terraform. notes: - type: text - contents: Terraform Cloud remote state storage is free for all users. + contents: HCP Terraform remote state storage is free for all users. assignment: |- - During this challenge and the next one, you'll use the remote state feature of Terraform Cloud to store your state file in the cloud. In order to do this you'll need a Terraform Cloud account. Click on the URL below and sign up for a free account if you don't have one already: + During this challenge and the next one, you'll use the remote state feature of HCP Terraform to store your state file in the cloud. In order to do this you'll need a HCP Terraform account. Click on the URL below and sign up for a free account if you don't have one already: https://app.terraform.io/signup/account If you already have an account you can simply sign in with your existing credentials. - Once you're signed into Terraform Cloud create a new organization called YOURNAME-training. Replace YOURNAME with your own name or other text. + Once you're signed into HCP Terraform create a new organization called YOURNAME-training. Replace YOURNAME with your own name or other text. Next you'll be prompted to create a workspace. You can skip the VCS integration step by clicking the "CLI-driven workflow" panel. Name your workspace **hashicat-azure**. - **Note:** If you already have a **hashicat-azure** workspace, please delete the workspace by selecting the **Settings >> Destruction and Deletion** menu, clicking the "Delete from Terraform Cloud" button, typing "hashicat-azure" to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you played the [Terraform Cloud with Azure](https://play.instruqt.com/hashicorp/tracks/terraform-cloud-azure) track and then played this track. + **Note:** If you already have a **hashicat-azure** workspace, please delete the workspace by selecting the **Settings >> Destruction and Deletion** menu, clicking the "Delete from HCP Terraform" button, typing "hashicat-azure" to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you played the [HCP Terraform with Azure](https://play.instruqt.com/hashicorp/tracks/terraform-cloud-azure) track and then played this track. Run `terraform version` on the "Shell" tab and then set the **Terraform Version** to match on the workspace's **Settings >> General** settings page. @@ -964,21 +964,21 @@ challenges: type: challenge title: "\U0001F39B️ Configure Remote State" teaser: | - The Terraform command line tool can store its state in Terraform Cloud. All that is required is a user token. + The Terraform command line tool can store its state in HCP Terraform. All that is required is a user token. notes: - type: text contents: |- With *local* execution mode the Terraform commands and variables all remain on your workstation. - With *remote* execution mode Terraform runs in a Terraform Cloud + With *remote* execution mode Terraform runs in a HCP Terraform container environment. All variables must be configured in the cloud environment with this method. assignment: |- - During this challenge we'll configure Terraform Cloud as a remote state backend, and then migrate our existing state file to Terraform Cloud. + During this challenge we'll configure HCP Terraform as a remote state backend, and then migrate our existing state file to HCP Terraform. Edit the "remote_backend.tf" file and replace the YOURORGANIZATION and YOURWORKSPACE placeholders with your org name and workspace name. Be sure to save the file. - Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in Terraform Cloud: + Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in HCP Terraform: https://app.terraform.io/app/settings/tokens @@ -986,21 +986,21 @@ challenges: Back in the Instruqt track, you need to add your API token to a file called "credentials.tfrc.json". Select the "Credentials File" tab and open the `/root/.terraform.d/credentials.tfrc.json` file directly. - Replace the part that says YOURTOKEN with what you copied from Terraform Cloud. Be sure to save the file. + Replace the part that says YOURTOKEN with what you copied from HCP Terraform. Be sure to save the file. Your token is now safely stored in the `/root/.terraform.d/credentials.tfrc.json` file. - Now run `terraform init` to migrate your state to Terraform Cloud. + Now run `terraform init` to migrate your state to HCP Terraform. ``` terraform init ``` - Type "yes" when it prompts you to migrate your state to Terraform Cloud. + Type "yes" when it prompts you to migrate your state to HCP Terraform. - Your state is now safely stored in Terraform Cloud. You can verify this on the "States" tab of your workspace in the TFC UI. + Your state is now safely stored in HCP Terraform. You can verify this on the "States" tab of your workspace in the TFC UI. - Run a `terraform apply -auto-approve` and watch your state file evolve with each change. You can browse through previous state files with the Terraform Cloud UI. + Run a `terraform apply -auto-approve` and watch your state file evolve with each change. You can browse through previous state files with the HCP Terraform UI. tabs: - title: Shell type: terminal diff --git a/instruqt-tracks/terraform-intro-gcp/track.yml b/instruqt-tracks/terraform-intro-gcp/track.yml index c27ee338..60683d34 100644 --- a/instruqt-tracks/terraform-intro-gcp/track.yml +++ b/instruqt-tracks/terraform-intro-gcp/track.yml @@ -71,7 +71,7 @@ challenges: notes: - type: text contents: |- - Terraform open source is a command line application that you can download and run from your laptop or virtual workstation. + Terraform Community Edition is a command line application that you can download and run from your laptop or virtual workstation. It is written in Go and runs on macOS, Linux or Windows. You can always download the latest version of Terraform from https://www.terraform.io/downloads.html - type: text @@ -884,27 +884,27 @@ challenges: - 1 difficulty: basic timelimit: 1000 -- slug: terraform-cloud-setup +- slug: hcp-terraform-setup id: ybvvptd2fxpo type: challenge - title: ☁️ Terraform Cloud Setup + title: ☁️ HCP Terraform Setup teaser: | - Terraform Cloud offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in Terraform Cloud. + HCP Terraform offers unlimited free Terraform state storage for users. Safeguard your state files by storing them remotely in HCP Terraform. notes: - type: text - contents: Terraform Cloud remote state storage is free for all users. + contents: HCP Terraform remote state storage is free for all users. assignment: |- - During this challenge and the next one, you'll use the remote state feature of Terraform Cloud to store your state file in the cloud. In order to do this you'll need a Terraform Cloud account. Click on the URL below and sign up for a free account if you don't have one already: + During this challenge and the next one, you'll use the remote state feature of HCP Terraform to store your state file in the cloud. In order to do this you'll need a HCP Terraform account. Click on the URL below and sign up for a free account if you don't have one already: https://app.terraform.io/signup/account If you already have an account you can simply sign in with your existing credentials. - Once you're signed into Terraform Cloud create a new organization called YOURNAME-training. Replace YOURNAME with your own name or other text. + Once you're signed into HCP Terraform create a new organization called YOURNAME-training. Replace YOURNAME with your own name or other text. Next you'll be prompted to create a workspace. You can skip the VCS integration step by clicking the "CLI-driven workflow" panel. Name your workspace **hashicat-gcp**. - **Note:** If you already have a **hashicat-gcp** workspace, please delete the workspace by selecting the **Settings >> Destruction and Deletion** menu, clicking the "Delete from Terraform Cloud" button, typing "hashicat-gcp" to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you played the [Terraform Cloud with GCP](https://play.instruqt.com/hashicorp/tracks/terraform-cloud-gcp) track and then played this track. + **Note:** If you already have a **hashicat-gcp** workspace, please delete the workspace by selecting the **Settings >> Destruction and Deletion** menu, clicking the "Delete from HCP Terraform" button, typing "hashicat-gcp" to confirm, and then clicking the "Delete workspace" button. Then re-create it as above. Doing this avoids possible problems with mis-matched state versions when executing local runs after having executed remote runs. This could happen if you played the [HCP Terraform with GCP](https://play.instruqt.com/hashicorp/tracks/terraform-cloud-gcp) track and then played this track. Run `terraform version` on the "Shell" tab and then set the **Terraform Version** to match on the workspace's **Settings >> General** settings page. @@ -926,21 +926,21 @@ challenges: type: challenge title: "\U0001F39B️ Configure Remote State" teaser: | - The terraform command line tool can store its state in Terraform Cloud. All that is required is a user token. + The terraform command line tool can store its state in HCP Terraform. All that is required is a user token. notes: - type: text contents: |- With *local* execution mode the Terraform commands and variables all remain on your workstation. - With *remote* execution mode Terraform runs in a Terraform Cloud + With *remote* execution mode Terraform runs in a HCP Terraform container environment. All variables must be configured in the cloud environment with this method. assignment: |- - During this challenge we'll configure Terraform Cloud as a remote state backend, and then migrate our existing state file to Terraform Cloud. + During this challenge we'll configure HCP Terraform as a remote state backend, and then migrate our existing state file to HCP Terraform. Edit the "remote_backend.tf" file and replace the YOURORGANIZATION and YOURWORKSPACE placeholders with your org name and workspace name. Be sure to save the file. - Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in Terraform Cloud: + Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in HCP Terraform: https://app.terraform.io/app/settings/tokens @@ -948,21 +948,21 @@ challenges: Back in the Instruqt track, you need to add your API token to a file called "credentials.tfrc.json". Select the "Credentials File" tab and open the `/root/.terraform.d/credentials.tfrc.json` file directly. - Replace the part that says YOURTOKEN with what you copied from Terraform Cloud. Be sure to save the file. + Replace the part that says YOURTOKEN with what you copied from HCP Terraform. Be sure to save the file. Your token is now safely stored in the `/root/.terraform.d/credentials.tfrc.json` file. - Now run `terraform init` to migrate your state to Terraform Cloud. + Now run `terraform init` to migrate your state to HCP Terraform. ``` terraform init ``` - Type "yes" when it prompts you to migrate your state into Terraform Cloud. + Type "yes" when it prompts you to migrate your state into HCP Terraform. - Your state is now safely stored in Terraform Cloud. You can verify this on the "States" tab of your workspace in the TFC UI. + Your state is now safely stored in HCP Terraform. You can verify this on the "States" tab of your workspace in the TFC UI. - Run a `terraform apply -auto-approve` and watch your state file evolve with each change. You can browse through previous state files with the Terraform Cloud UI. + Run a `terraform apply -auto-approve` and watch your state file evolve with each change. You can browse through previous state files with the HCP Terraform UI. tabs: - title: Shell type: terminal diff --git a/instruqt-tracks/terraform-module-lab/setup-our-environment/setup-workstation b/instruqt-tracks/terraform-module-lab/setup-our-environment/setup-workstation index dcad0c84..742e6ffd 100644 --- a/instruqt-tracks/terraform-module-lab/setup-our-environment/setup-workstation +++ b/instruqt-tracks/terraform-module-lab/setup-our-environment/setup-workstation @@ -36,18 +36,18 @@ echo "******************************************************************" echo "* Skip to Challenge Configuration Script" echo "******************************************************************" echo -echo "This script will set up your Terraform Cloud token and organization" +echo "This script will set up your HCP Terraform token and organization" echo "configuration. Once that is done you may use the 'skip to challenge'" echo "feature of Instruqt to fast-forward to a particular point in the" echo "training." echo -echo "Please enter your Terraform Cloud organization name." +echo "Please enter your HCP Terraform organization name." read ORG echo echo "Please enter your workspace name." read WORKSPACE echo -echo "Please enter your Terraform Cloud user token." +echo "Please enter your HCP Terraform user token." read TOKEN echo eecho "Please enter your GitHub user ID." diff --git a/instruqt-tracks/terraform-module-lab/track.yml b/instruqt-tracks/terraform-module-lab/track.yml index 58a2416b..7239a8a4 100644 --- a/instruqt-tracks/terraform-module-lab/track.yml +++ b/instruqt-tracks/terraform-module-lab/track.yml @@ -61,18 +61,18 @@ challenges: hostname: workstation difficulty: basic timelimit: 7200 -- slug: terraform-cloud-setup +- slug: hcp-terraform-setup id: wor8lync260t type: challenge - title: ☁️ Terraform Cloud Setup + title: ☁️ HCP Terraform Setup teaser: | - Terraform Cloud offers almost all the same features as on-premise Terraform Enterprise. + HCP Terraform offers almost all the same features as on-premise Terraform Enterprise. notes: - type: text - contents: Terraform Cloud offers features like remote state and a private module + contents: HCP Terraform offers features like remote state and a private module registry. assignment: |- - During this challenge you'll sign up for a free Terraform Cloud account. Click on the URL below and sign up for an account if you don't have one already: + During this challenge you'll sign up for a free HCP Terraform account. Click on the URL below and sign up for an account if you don't have one already: https://app.terraform.io/signup/account @@ -80,7 +80,7 @@ challenges: Next you'll configure a token for running terraform commands from your workstation. - Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in Terraform Cloud: + Let's generate a new **user token** for use on your workstation. Visit the User Settings > Tokens page in HCP Terraform: https://app.terraform.io/app/settings/tokens @@ -88,7 +88,7 @@ challenges: Back in the Instruqt track, you need to add your API token to a file called "credentials.tfrc.json". Select the "Credentials File" tab and open the `/root/.terraform.d/credentials.tfrc.json` file directly. - Replace the part that says YOURTOKEN with what you copied from Terraform Cloud. Be sure to save the file. + Replace the part that says YOURTOKEN with what you copied from HCP Terraform. Be sure to save the file. Your token is now safely stored in the "credentials.tfrc.json" file. @@ -116,9 +116,9 @@ challenges: notes: - type: text contents: Terraform modules can be stored in your Version Control System (VCS), - and automatically imported into the Private Module Registry + and automatically imported into the Terraform Private Registry assignment: |- - In order for different teams and individuals to be able to work on the same Terraform code, you need to use a Version Control System (VCS). Terraform Cloud can integrate with the most popular VCS systems including GitHub, GitLab and Bitbucket. + In order for different teams and individuals to be able to work on the same Terraform code, you need to use a Version Control System (VCS). HCP Terraform can integrate with the most popular VCS systems including GitHub, GitLab and Bitbucket. You will need a free GitHub.com account for this challenge. We recommend using a personal account for training instead your work account (if you have one). @@ -126,7 +126,7 @@ challenges: https://www.terraform.io/docs/cloud/vcs/github.html - Once you've configured GitHub access, you can import modules into your private module registry. + Once you've configured GitHub access, you can import modules into your Terraform Private Registry. tabs: - title: Code Editor type: code @@ -138,7 +138,7 @@ challenges: - title: Configuring Github Access type: external url: https://www.terraform.io/docs/cloud/vcs/github.html - - title: Terraform Cloud + - title: HCP Terraform type: external url: https://app.terraform.io difficulty: basic @@ -146,15 +146,15 @@ challenges: - slug: private-module-registry id: jpljzmbguwas type: challenge - title: "\U0001F4DA Private Module Registry" + title: "\U0001F4DA Terraform Private Registry" teaser: | - Some of your users want a simple way to deploy databases and network configurations. Enter the Private Module Registry, where you can store standard, re-usable Terraform configurations that others can use in their own workspaces. + Some of your users want a simple way to deploy databases and network configurations. Enter the Terraform Private Registry, where you can store standard, re-usable Terraform configurations that others can use in their own workspaces. notes: - type: text contents: Storing your modules in a git repo allows you to do code reviews and tag different versions. assignment: |- - In this challenge you'll learn to use the Private Module Registry, which allows you to store and version re-usable snippets of Terraform code. Think of modules like custom resources for your own environment. + In this challenge you'll learn to use the Terraform Private Registry, which allows you to store and version re-usable snippets of Terraform code. Think of modules like custom resources for your own environment. Instead of writing this module from scratch you can copy the existing vpc module from the public Terraform registry. Visit this URL to view the VPC module: @@ -162,13 +162,13 @@ challenges: Note the **Source:** link that points at the github repository for this module. Click on the Source URL. As you did in previous workshop tracks, create your own fork of this repository with the **Fork** button. - Back in the Terraform Cloud control panel, click on the **Modules** link at the top of the page. Click on the **+Add Module** button. Click on the Github button and select the terraform-aws-vpc module that you just forked. + Back in the HCP Terraform control panel, click on the **Modules** link at the top of the page. Click on the **+Add Module** button. Click on the Github button and select the terraform-aws-vpc module that you just forked. Click on **Publish Module**. Create a new Terraform file called `main.tf` in your "workspace" directory and add a module to your module in it to create a new VPC. You'll also want to add an `aws` provider block and set its `region` attribute to `eu-west-1` to match the availability zones in the sample code. - HINT: The docs are your friend. They might even have an example of how the code should look. But be sure to set the source of the module to the one shown for it in your Private Module Registry. Don't use the source from the module's README.md file. + HINT: The docs are your friend. They might even have an example of how the code should look. But be sure to set the source of the module to the one shown for it in your Terraform Private Registry. Don't use the source from the module's README.md file. After you finish editing your main.tf file, you can initialize your Terraform configuration with this command: @@ -210,7 +210,7 @@ challenges: - title: Shell type: terminal hostname: workstation - - title: Terraform Cloud + - title: HCP Terraform type: external url: https://app.terraform.io difficulty: basic diff --git a/instruqt-tracks/terraform-workshop-base/setup-our-environment/setup-workstation b/instruqt-tracks/terraform-workshop-base/setup-our-environment/setup-workstation index 41e9e9af..6f1ee354 100644 --- a/instruqt-tracks/terraform-workshop-base/setup-our-environment/setup-workstation +++ b/instruqt-tracks/terraform-workshop-base/setup-our-environment/setup-workstation @@ -46,18 +46,18 @@ echo "******************************************************************" echo "* Skip to Challenge Configuration Script" echo "******************************************************************" echo -echo "This script will set up your Terraform Cloud token and organization" +echo "This script will set up your HCP Terraform token and organization" echo "configuration. Once that is done you may use the 'skip to challenge'" echo "feature of Instruqt to fast-forward to a particular point in the" echo "training." echo -echo "Please enter your Terraform Cloud organization name." +echo "Please enter your HCP Terraform organization name." read ORG echo echo "Please enter your workspace name." read WORKSPACE echo -echo "Please enter your Terraform Cloud user token." +echo "Please enter your HCP Terraform user token." read TOKEN echo eecho "Please enter your GitHub user ID."