Improve content in terraform roadmap (#7852)

pull/7862/head
Vedansh 1 month ago committed by GitHub
parent 6c9b0c1fb8
commit 64b5bdfbe2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      src/data/roadmaps/terraform/content/-replace-option-in-apply@jvHtSRLuCXJrGIiesgbE-.md
  2. 4
      src/data/roadmaps/terraform/content/authentication@RPcsyhIG027uP7KF0hwaY.md
  3. 2
      src/data/roadmaps/terraform/content/checkov@ljj7ngl1N4ezCXQ0o6Y8x.md
  4. 2
      src/data/roadmaps/terraform/content/circle-ci@6OoAdvikyp0byMH2oZhyQ.md
  5. 2
      src/data/roadmaps/terraform/content/contract-testing@bjozhkpOI9UjjNfmT5HhY.md
  6. 6
      src/data/roadmaps/terraform/content/creation--destroy-time@CJfCpRN_oVf6n_EfLNJSV.md
  7. 4
      src/data/roadmaps/terraform/content/custom-provisioners@HEr-BBxE3jRKTqRnguds1.md
  8. 2
      src/data/roadmaps/terraform/content/deployment@pjmOK1MEMnIV_zAlaOF01.md
  9. 2
      src/data/roadmaps/terraform/content/end-to-end-testing@QqwlAtz7VfrMtNEGpT5Sa.md
  10. 4
      src/data/roadmaps/terraform/content/enterprise-features@elW7IMBSF0ydmlb7rtI1o.md
  11. 2
      src/data/roadmaps/terraform/content/environment-variables@fm8oUyNvfdGWTgLsYANUr.md
  12. 4
      src/data/roadmaps/terraform/content/file-provisioner@Qch8k6e4pS8OlmG_sI0hH.md
  13. 2
      src/data/roadmaps/terraform/content/for_each@gcdg_GhAacIWzv19ITTE_.md
  14. 1
      src/data/roadmaps/terraform/content/github-actions@weIlGqGN15U8BH1yE9moA.md
  15. 2
      src/data/roadmaps/terraform/content/gitlab-ci@fH27mGrdnkDQCrGGDFU6p.md
  16. 2
      src/data/roadmaps/terraform/content/hashicorp-config-language-hcl@qhO7CY-1_vuh2BVJYQCzh.md
  17. 2
      src/data/roadmaps/terraform/content/import-existing-resources@L7wAMGi_yU-Bbc9fXlmxZ.md
  18. 2
      src/data/roadmaps/terraform/content/inputs--outputs@NsBJTYH9KXvjJuhPzjE_L.md
  19. 5
      src/data/roadmaps/terraform/content/inspect--modify-state@KXlLlaR0_S7gE_ZB1hNEd.md
  20. 7
      src/data/roadmaps/terraform/content/installing-terraform@AYtBLFU1nowEq-EVlXrEZ.md
  21. 2
      src/data/roadmaps/terraform/content/integration-testing@ENkLj3z6hR2cKT7rBhYp5.md
  22. 9
      src/data/roadmaps/terraform/content/introduction@h6qRrUe-bn25s0UkxU600.md
  23. 2
      src/data/roadmaps/terraform/content/list@Y-mgCkDpawt5NrMwDH9Ki.md
  24. 4
      src/data/roadmaps/terraform/content/modules-best-practices@gTMPK0tfs2JYgoL7SAGW6.md
  25. 8
      src/data/roadmaps/terraform/content/modules@R2AORYmc1NgGTqLZY5Fu-.md
  26. 4
      src/data/roadmaps/terraform/content/mv@0xVXwjWPFXDGRw_3p6th6.md
  27. 6
      src/data/roadmaps/terraform/content/output-syntax@31fa8kBzCEn-uCrTSoPM4.md
  28. 2
      src/data/roadmaps/terraform/content/preconditions@DB-p_S4Ce4tDWF4wDiGSt.md
  29. 2
      src/data/roadmaps/terraform/content/project-initialization@GlIXmCuvR_C81RMeMM1Kz.md
  30. 6
      src/data/roadmaps/terraform/content/provisioners@6vs1VvjeILgAPLL6g7dfy.md
  31. 2
      src/data/roadmaps/terraform/content/resources@BYydmFc2e-YPCC4MCWmh2.md
  32. 2
      src/data/roadmaps/terraform/content/run-tasks@nU1WoRtxRF9KeNhzuwNUB.md
  33. 4
      src/data/roadmaps/terraform/content/secret-management@uVz9WwVAgMu1ZU0qjqVnc.md
  34. 7
      src/data/roadmaps/terraform/content/security@3MnZK2V5KhBhw67SyUVPk.md
  35. 2
      src/data/roadmaps/terraform/content/sensitive-data@16vLOPP9lTCuBh0q-UVMk.md
  36. 2
      src/data/roadmaps/terraform/content/show@7DZB2VeyuouFXOdFEfeZt.md
  37. 2
      src/data/roadmaps/terraform/content/state-force-unlock@Trpi2ZlnXZVYJCibE2bQ8.md
  38. 2
      src/data/roadmaps/terraform/content/state-locking@GseYuG9wT8H9R_enxWzuQ.md
  39. 2
      src/data/roadmaps/terraform/content/state-replace-provider@Os6AOXp1CVI_Bh3NYnX17.md
  40. 2
      src/data/roadmaps/terraform/content/terraform-apply@LDpj-LY_SOXzno04D-Y25.md
  41. 2
      src/data/roadmaps/terraform/content/terraform-validate@wdYLjB-tKg76B7YcnhevQ.md
  42. 6
      src/data/roadmaps/terraform/content/testing-modules@H3_So6qX-s2131WHGR_GO.md
  43. 2
      src/data/roadmaps/terraform/content/tflint@YftsQYpcqJqBKPjy5tWOq.md
  44. 2
      src/data/roadmaps/terraform/content/type-constraints@HUiodBFIp_rsQDkf3WgbI.md
  45. 4
      src/data/roadmaps/terraform/content/unit-testing@V7_NnDIY1MefV_xjCCsnI.md
  46. 2
      src/data/roadmaps/terraform/content/usecases-and-benefits@hRIDJHIxWc5Iav7tsu8l-.md
  47. 2
      src/data/roadmaps/terraform/content/validation-rules@U2n2BtyUrOFLnw9SZYV_w.md
  48. 2
      src/data/roadmaps/terraform/content/what-is-hcl@Hma2IgatFME8STHPwpeMG.md
  49. 2
      src/data/roadmaps/terraform/content/when-to-use@CmmoshFC1dKE4y3SMN2bl.md
  50. 4
      src/data/roadmaps/terraform/terraform.md

@ -1,9 +1,9 @@
# -replace option in apply # -replace option in apply
The -replace flag in Terraform is used with the apply or plan command to force the replacement of a specific resource by tainting the resources. This flag instructs Terraform to delete and recreate the specified resource instead of updating it in place. It's useful when you need to regenerate a resource completely, such as when certain attributes can't be modified after creation. The flag is typically used when Terraform can't automatically detect that a resource needs replacement, or when you want to force a replacement for testing or troubleshooting purposes. While powerful, this flag should be used cautiously, especially with stateful resources, as it can lead to data loss. It's often employed in scenarios where in-place updates are not sufficient to achieve the desired configuration state of a resource. The `-replace` flag in Terraform is used with the apply or plan command to force the replacement of a specific resource by tainting the resources. This flag instructs Terraform to delete and recreate the specified resource instead of updating it in place. It's useful when you need to regenerate a resource completely, such as when certain attributes can't be modified after creation. The flag is typically used when Terraform can't automatically detect that a resource needs replacement, or when you want to force a replacement for testing or troubleshooting purposes. While powerful, this flag should be used cautiously, especially with stateful resources, as it can lead to data loss. It's often employed in scenarios where in-place updates are not sufficient to achieve the desired configuration state of a resource.
Learn more from the following resources: Learn more from the following resources:
- [@article@Forcing Re-creation of Resources](https://developer.hashicorp.com/terraform/cli/state/taint) - [@official@Forcing Re-creation of Resources](https://developer.hashicorp.com/terraform/cli/state/taint)
- [@article@Terraform Taint, Untaint, Replace – How to Use It (Examples)](https://spacelift.io/blog/terraform-taint) - [@article@Terraform Taint, Untaint, Replace – How to Use It (Examples)](https://spacelift.io/blog/terraform-taint)
- [@video@Terraform Taint Is Bad Actually - Use Replace Instead](https://www.youtube.com/watch?v=v_T1fuYGjV0) - [@video@Terraform Taint Is Bad Actually - Use Replace Instead](https://www.youtube.com/watch?v=v_T1fuYGjV0)

@ -4,6 +4,6 @@ HCP (HashiCorp Cloud Platform) authentication provides secure access management
Learn more from the following resources: Learn more from the following resources:
- [@official@hcp auth login](https://developer.hashicorp.com/hcp/docs/cli/commands/auth/login) - [@official@HCP Authentication](https://developer.hashicorp.com/hcp/docs/cli/commands/auth/login)
- [@article@Authenticate with HCP](https://registry.terraform.io/providers/hashicorp/hcp/latest/docs/guides/auth) - [@official@Authenticate with HCP](https://registry.terraform.io/providers/hashicorp/hcp/latest/docs/guides/auth)
- [@opensource@hashicorp/hcp-auth-login](https://github.com/hashicorp/hcp-auth-action) - [@opensource@hashicorp/hcp-auth-login](https://github.com/hashicorp/hcp-auth-action)

@ -4,6 +4,6 @@ Checkov is an open-source static code analysis tool designed for scanning Infras
Learn more from the following resources: Learn more from the following resources:
- [@official@Checkov Website](https://www.checkov.io/) - [@official@Checkov](https://www.checkov.io/)
- [@opensource@bridgecrewio/checkov](https://github.com/bridgecrewio/checkov) - [@opensource@bridgecrewio/checkov](https://github.com/bridgecrewio/checkov)
- [@article@Scanning Terraform Code with Checkov](https://devopscube.com/terraform-checkov-scan/) - [@article@Scanning Terraform Code with Checkov](https://devopscube.com/terraform-checkov-scan/)

@ -4,6 +4,6 @@ Integrating Terraform with CircleCI enables automated infrastructure management
Learn more from the following resources: Learn more from the following resources:
- [@official@Deploy infrastructure with Terraform and CircleCI](https://developer.hashicorp.com/terraform/tutorials/automation/circle-ci) - [@official@Deploy Infrastructure with Terraform and CircleCI](https://developer.hashicorp.com/terraform/tutorials/automation/circle-ci)
- [@opensource@CircleCI Terraform Orb](https://circleci.com/developer/orbs/orb/circleci/terraform) - [@opensource@CircleCI Terraform Orb](https://circleci.com/developer/orbs/orb/circleci/terraform)
- [@article@How I deployed terraform resources with CircleCI](https://medium.com/nerd-for-tech/how-i-deployed-terraform-resources-with-circleci-628aa29ed514) - [@article@How I deployed terraform resources with CircleCI](https://medium.com/nerd-for-tech/how-i-deployed-terraform-resources-with-circleci-628aa29ed514)

@ -4,6 +4,6 @@ Terraform contract testing focuses on verifying the interfaces and interactions
Learn more from the following resources: Learn more from the following resources:
- [@article@Terraform Contract Tests](https://www.hashicorp.com/blog/testing-hashicorp-terraform#contract-tests) - [@official@Terraform Contract Tests](https://www.hashicorp.com/blog/testing-hashicorp-terraform#contract-tests)
- [@article@Contract Testing: An Introduction and Guide](https://www.blazemeter.com/blog/contract-testing#:~:text=Contract%20testing%20focuses%20on%20verifying,services%20that%20rely%20on%20it.) - [@article@Contract Testing: An Introduction and Guide](https://www.blazemeter.com/blog/contract-testing#:~:text=Contract%20testing%20focuses%20on%20verifying,services%20that%20rely%20on%20it.)
- [@video@Contract testing for microservices is a must!](https://www.youtube.com/watch?v=Fh8CqZtghQw) - [@video@Contract testing for microservices is a must!](https://www.youtube.com/watch?v=Fh8CqZtghQw)

@ -6,6 +6,6 @@ Creation-time provisioners that fail will cause the resource creation to fail, p
Learn more from the following resources: Learn more from the following resources:
- [@official@Creation time provisioners](https://developer.hashicorp.com/terraform/language/resources/provisioners/syntax#creation-time-provisioners) - [@official@Creation Time Provisioners](https://developer.hashicorp.com/terraform/language/resources/provisioners/syntax#creation-time-provisioners)
- [@official@Destroy time provisioners](https://developer.hashicorp.com/terraform/language/resources/provisioners/syntax#destroy-time-provisioners) - [@official@Destroy Time Provisioners](https://developer.hashicorp.com/terraform/language/resources/provisioners/syntax#destroy-time-provisioners)
- [@article@How to: Terraform destroy time provisioners](https://support.hashicorp.com/hc/en-us/articles/11119084989587-How-to-Terraform-Destroy-time-Provisioners) - [@official@How to: Terraform destroy time provisioners](https://support.hashicorp.com/hc/en-us/articles/11119084989587-How-to-Terraform-Destroy-time-Provisioners)

@ -6,5 +6,5 @@ Developing custom provisioners requires a deep understanding of Terraform's arch
Learn more from the following resources: Learn more from the following resources:
- [@official@Terraform provisioners](https://developer.hashicorp.com/terraform/language/resources/provisioners/syntax) - [@official@Terraform Provisioners](https://developer.hashicorp.com/terraform/language/resources/provisioners/syntax)
- [@article@Terraform provisioners - Why you should avoid them](https://spacelift.io/blog/terraform-provisioners) - [@article@Terraform Provisioners - Why you should avoid them](https://spacelift.io/blog/terraform-provisioners)

@ -8,4 +8,4 @@ Deploying Terraform-defined infrastructure involves several key steps:
You can learn more from the following resources: You can learn more from the following resources:
- [@article@The Core Terraform Workflow](https://developer.hashicorp.com/terraform/intro/core-workflow) - [@official@The Core Terraform Workflow](https://developer.hashicorp.com/terraform/intro/core-workflow)

@ -4,6 +4,6 @@ Terraform end-to-end testing involves validating the entire infrastructure deplo
Learn more from the following resources: Learn more from the following resources:
- [@artice@Getting Started: End to End Tests](https://tf2project.io/docs/getting-started/end-to-end-tests.html) - [@article@Getting Started: End to End Tests](https://tf2project.io/docs/getting-started/end-to-end-tests.html)
- [@article@End-to-end tests](https://www.hashicorp.com/blog/testing-hashicorp-terraform#end-to-end-tests) - [@article@End-to-end tests](https://www.hashicorp.com/blog/testing-hashicorp-terraform#end-to-end-tests)
- [@video@End To End Testing On Terraform With Terratest](https://www.youtube.com/watch?v=PlzL6Bv2fSA) - [@video@End To End Testing On Terraform With Terratest](https://www.youtube.com/watch?v=PlzL6Bv2fSA)

@ -22,6 +22,6 @@ These features collectively provide a robust, secure, and scalable environment f
Learn more from the following resources: Learn more from the following resources:
- [@official@HCP Website](https://www.hashicorp.com/cloud) - [@official@HashiCorp Cloud Platform](https://www.hashicorp.com/cloud)
- [@article@HCP Terraform Plans and Features](https://developer.hashicorp.com/terraform/cloud-docs/overview) - [@official@HCP Terraform Plans and Features](https://developer.hashicorp.com/terraform/cloud-docs/overview)
- [@video@How does The Infrastructure Cloud work?](https://www.youtube.com/watch?v=zWWGsJrWj5E) - [@video@How does The Infrastructure Cloud work?](https://www.youtube.com/watch?v=zWWGsJrWj5E)

@ -1,6 +1,6 @@
# Environment Variables # Environment Variables
Environment variables can be used to customize various aspects of Terraform. You can set these variables to change the default behaviour of terraform such as increase verbosity, update log file path, set workspace, etc. Envrionment variables are optional and terraform does not need them by default. Environment variables can be used to customize various aspects of Terraform. You can set these variables to change the default behaviour of terraform such as increase verbosity, update log file path, set workspace, etc. Environment variables are optional and terraform does not need them by default.
Learn more from the following resources: Learn more from the following resources:

@ -4,5 +4,5 @@ The Terraform file provisioner is used to copy files or directories from the mac
Learn more from the following resources: Learn more from the following resources:
- [@official@Terraform file provisioner](https://developer.hashicorp.com/terraform/language/resources/provisioners/file) - [@official@Terraform File Provisioner](https://developer.hashicorp.com/terraform/language/resources/provisioners/file)
- [@article@The file provisioner](https://learning-ocean.com/tutorials/terraform/terraform-file-provisioner/) - [@article@The File Provisioner](https://learning-ocean.com/tutorials/terraform/terraform-file-provisioner/)

@ -2,7 +2,7 @@
The for_each meta-argument in Terraform enables you to create multiple instances of a resource based on a set or map. Unlike count, which uses a simple integer, for_each allows for more granular and dynamic resource creation, as each instance is associated with a specific key-value pair from the given set or map. This meta-argument is particularly useful for creating resources with unique configurations derived from the keys and values of the set or map. By leveraging for_each, you can manage collections of resources more efficiently, ensuring each instance can be individually referenced and customized based on its specific key. The for_each meta-argument in Terraform enables you to create multiple instances of a resource based on a set or map. Unlike count, which uses a simple integer, for_each allows for more granular and dynamic resource creation, as each instance is associated with a specific key-value pair from the given set or map. This meta-argument is particularly useful for creating resources with unique configurations derived from the keys and values of the set or map. By leveraging for_each, you can manage collections of resources more efficiently, ensuring each instance can be individually referenced and customized based on its specific key.
Note: You cannot declare for_each and count in the same resource. Note: You cannot declare `for_each` and `count` in the same resource.
Learn more from the following resources: Learn more from the following resources:

@ -4,6 +4,7 @@ Using Terraform with GitHub Actions allows for automated infrastructure manageme
Learn more from the following resources: Learn more from the following resources:
- [@official@GitHub Actions](https://docs.github.com/en/actions)
- [@official@Automate Terraform with GitHub Actions](https://developer.hashicorp.com/terraform/tutorials/automation/github-actions) - [@official@Automate Terraform with GitHub Actions](https://developer.hashicorp.com/terraform/tutorials/automation/github-actions)
- [@article@Terraform with GitHub Actions : How to Manage & Scale](https://spacelift.io/blog/github-actions-terraform) - [@article@Terraform with GitHub Actions : How to Manage & Scale](https://spacelift.io/blog/github-actions-terraform)
- [@opensource@setup-terraform](https://github.com/hashicorp/setup-terraform) - [@opensource@setup-terraform](https://github.com/hashicorp/setup-terraform)

@ -4,6 +4,6 @@ Using Terraform with GitLab CI enables automated infrastructure management withi
Learn more from the following resources: Learn more from the following resources:
- [@article@Infrastructure as Code with Terraform and GitLab](https://docs.gitlab.com/ee/user/infrastructure/iac/) - [@official@Infrastructure as Code with Terraform and GitLab](https://docs.gitlab.com/ee/user/infrastructure/iac/)
- [@article@How to Implement GitLab CI/CD Pipeline with Terraform](https://spacelift.io/blog/gitlab-terraform) - [@article@How to Implement GitLab CI/CD Pipeline with Terraform](https://spacelift.io/blog/gitlab-terraform)
- [@video@Automate deploying to AWS using Terraform with GitLab CICD pipeline](https://www.youtube.com/watch?v=oqOzM_WBqZc) - [@video@Automate deploying to AWS using Terraform with GitLab CICD pipeline](https://www.youtube.com/watch?v=oqOzM_WBqZc)

@ -4,5 +4,5 @@ HashiCorp Configuration Language (HCL) is a configuration language built by Hash
Learn more from the following resources: Learn more from the following resources:
- [@official@Terraform Language Documentation(https://developer.hashicorp.com/terraform/language) - [@official@Terraform Language Documentation](https://developer.hashicorp.com/terraform/language)
- [@opensource@HCL Repository](https://github.com/hashicorp/hcl) - [@opensource@HCL Repository](https://github.com/hashicorp/hcl)

@ -1,6 +1,6 @@
# Import Existing Resources # Import Existing Resources
terraform state import is a command used to bring existing resources under Terraform management. It allows you to add resources that were created outside of Terraform (e.g., manually or by other tools) into your Terraform state. The command takes two main arguments: the Terraform resource address and the real-world resource identifier. When executed, it adds the resource to the state file without modifying the actual infrastructure. This is useful for adopting Terraform in environments with existing resources, or for recovering from scenarios where state and reality have diverged. After importing, you need to write the corresponding configuration in your Terraform files to match the imported resource. Terraform state import is a command used to bring existing resources under Terraform management. It allows you to add resources that were created outside of Terraform (e.g., manually or by other tools) into your Terraform state. The command takes two main arguments: the Terraform resource address and the real-world resource identifier. When executed, it adds the resource to the state file without modifying the actual infrastructure. This is useful for adopting Terraform in environments with existing resources, or for recovering from scenarios where state and reality have diverged. After importing, you need to write the corresponding configuration in your Terraform files to match the imported resource.
In Terraform v1.5.0 and later you can also create `import` blocks in any Terraform configuration file. In Terraform v1.5.0 and later you can also create `import` blocks in any Terraform configuration file.

@ -6,4 +6,4 @@ When calling a module, inputs are provided as arguments. Outputs, defined using
Learn more from the following resources: Learn more from the following resources:
- [@official@Accessing module output values](https://developer.hashicorp.com/terraform/language/modules/syntax#accessing-module-output-values) - [@official@Accessing Module Output Values](https://developer.hashicorp.com/terraform/language/modules/syntax#accessing-module-output-values)

@ -1,3 +1,8 @@
# Inspect / Modify State # Inspect / Modify State
Terraform provides tools to inspect and modify state, enabling management of tracked resources without altering the actual infrastructure. These capabilities allow users to view the current state in human-readable format, list all resources in the state, and obtain detailed information on specific resources. For state modification, Terraform offers methods to move resources within the state or to different state files, remove resources from state without deleting the actual resource, and update the state to match real-world infrastructure. These tools are crucial for reconciling discrepancies between Terraform's state and actual infrastructure, and for managing resources across different Terraform configurations or workspaces. However, state modifications should be performed cautiously, as improper changes can lead to inconsistencies between the state and the actual infrastructure. Terraform provides tools to inspect and modify state, enabling management of tracked resources without altering the actual infrastructure. These capabilities allow users to view the current state in human-readable format, list all resources in the state, and obtain detailed information on specific resources. For state modification, Terraform offers methods to move resources within the state or to different state files, remove resources from state without deleting the actual resource, and update the state to match real-world infrastructure. These tools are crucial for reconciling discrepancies between Terraform's state and actual infrastructure, and for managing resources across different Terraform configurations or workspaces. However, state modifications should be performed cautiously, as improper changes can lead to inconsistencies between the state and the actual infrastructure.
Visit the following resources to learn more:
- [@official@Inspecting State](https://developer.hashicorp.com/terraform/cli/state/inspect)
- [@article@How to Manage Terraform State: A Step-by-Step Guide](https://meriemterki.medium.com/how-to-manage-terraform-state-a-step-by-step-guide-b615bd6ee0de)

@ -1,8 +1,11 @@
# Installing Terraform # Installing Terraform
Follow the instructions given in the following URL to install terraform: To install Terraform, you need to download the appropriate package for your operating system from the official Terraform website. After downloading, unzip the package and move the executable to a directory included in your system's PATH. This allows you to run Terraform commands from the terminal. For more detailed installation instructions, refer to the links below.
- [@article@Installing Terraform](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli) Visit the following resources to learn more:
- [@official@Install Terraform](https://developer.hashicorp.com/terraform/install)
- [@official@Installing Terraform CLI](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
- [@video@Install Terraform on Ubuntu](https://www.youtube.com/watch?v=LM3RLgNu7tU) - [@video@Install Terraform on Ubuntu](https://www.youtube.com/watch?v=LM3RLgNu7tU)
- [@video@Install Terraform on MacOS](https://www.youtube.com/watch?v=ViMwnReV1A8) - [@video@Install Terraform on MacOS](https://www.youtube.com/watch?v=ViMwnReV1A8)
- [@video@Install Terraform on Windows 10/11](https://www.youtube.com/watch?v=qj4cOSYr7po) - [@video@Install Terraform on Windows 10/11](https://www.youtube.com/watch?v=qj4cOSYr7po)

@ -4,6 +4,6 @@ Terraform integration testing involves verifying that Terraform configurations w
Learn more from the following resources: Learn more from the following resources:
- [@official@Integration or unit testing](https://developer.hashicorp.com/terraform/language/tests#integration-or-unit-testing) - [@official@Integration Testing or Unit Testing](https://developer.hashicorp.com/terraform/language/tests#integration-or-unit-testing)
- [@video@Learn Terraform - Integration and End-to-End Testing](https://www.youtube.com/watch?v=gdcc1WBzMwY) - [@video@Learn Terraform - Integration and End-to-End Testing](https://www.youtube.com/watch?v=gdcc1WBzMwY)
- [@article@Integration tests](https://www.hashicorp.com/blog/testing-hashicorp-terraform#integration-tests) - [@article@Integration tests](https://www.hashicorp.com/blog/testing-hashicorp-terraform#integration-tests)

@ -1,3 +1,10 @@
# Introduction # Introduction
Terraform is a powerful tool designed by HashiCorp that helps you set up, manage, and update infrastructure safely and efficiently across various cloud providers. Think of it as a way to define your cloud resources—like servers, storage, and networks—using a simple code format. This makes it easier to automate, share, and manage your infrastructure, ensuring that everything is consistent and can be quickly reproduced or modified as needed. Terraform is a powerful tool designed by HashiCorp that helps you set up, manage, and update infrastructure safely and efficiently across various cloud providers. Think of it as a way to define your cloud resources—like servers, storage, and networks—using a simple code format. This makes it easier to automate, share, and manage your infrastructure, ensuring that everything is consistent and can be quickly reproduced or modified as needed.
Visit the following resources to learn more:
- [@official@Terraform Website](https://www.terraform.io/)
- [@official@Terraform Documentation](https://developer.hashicorp.com/terraform)
- [@video@Terraform for Beginners](https://www.youtube.com/watch?v=SLB_c_ayRMo)
- [@feed@Explore top posts about Terraform](https://app.daily.dev/tags/terraform?ref=roadmapsh)

@ -4,4 +4,4 @@ The terraform list command is used to display a list of resources within the Ter
Learn more from the following resources: Learn more from the following resources:
- [@official@Terraform state list](https://developer.hashicorp.com/terraform/cli/commands/state/list) - [@official@Terraform State List](https://developer.hashicorp.com/terraform/cli/commands/state/list)

@ -1,7 +1,7 @@
# Modules Best Practices # Modules Best Practices
Terraform module best practices focus on creating reusable, maintainable, and scalable infrastructure components. Terraform module best practices focus on creating reusable, maintainable, and scalable infrastructure components.
- Modules should have a single, clear purpose and be designed with flexibility in mind, using input variables for customization. - Modules should have a single, clear purpose and be designed with flexibility in mind, using input variables for customization.
- Outputs should be carefully chosen to provide necessary information without over-exposing internal details. - Outputs should be carefully chosen to provide necessary information without over-exposing internal details.
- Version your modules and use semantic versioning to manage changes. - Version your modules and use semantic versioning to manage changes.
@ -15,6 +15,6 @@ Terraform module best practices focus on creating reusable, maintainable, and sc
Learn more from the following resources: Learn more from the following resources:
- [@official@Module best practices](https://developer.hashicorp.com/terraform/tutorials/modules/module#module-best-practices) - [@official@Module Best Practices](https://developer.hashicorp.com/terraform/tutorials/modules/module#module-best-practices)
- [@article@Terraform Modules Guide: Best Practices & Examples](https://www.env0.com/blog/terraform-modules) - [@article@Terraform Modules Guide: Best Practices & Examples](https://www.env0.com/blog/terraform-modules)
- [@video@Best practices for modularizing a Terraform project | PlatformCon 2023](https://www.youtube.com/watch?v=byzwaTng3ac) - [@video@Best practices for modularizing a Terraform project | PlatformCon 2023](https://www.youtube.com/watch?v=byzwaTng3ac)

@ -1,3 +1,9 @@
# Modules # Modules
Terraform modules are reusable components that encapsulate a set of resources, their configurations, and their interconnections. They allow for organizing Terraform code into logical, self-contained units that can be shared and reused across different projects or within the same project. Modules promote code reusability, maintainability, and consistency in infrastructure deployments. They can accept input variables, produce output values, and be nested within other modules. By using modules, teams can create standardized infrastructure components, enforce best practices, and simplify complex configurations. Modules can be sourced from local directories, version control systems, or public registries like the Terraform Registry. Effective use of modules can significantly reduce code duplication, improve infrastructure management, and enable the creation of scalable, maintainable Terraform configurations. Terraform modules are reusable components that encapsulate a set of resources, their configurations, and their interconnections. They allow for organizing Terraform code into logical, self-contained units that can be shared and reused across different projects or within the same project. Modules promote code reusability, maintainability, and consistency in infrastructure deployments. They can accept input variables, produce output values, and be nested within other modules. By using modules, teams can create standardized infrastructure components, enforce best practices, and simplify complex configurations. Modules can be sourced from local directories, version control systems, or public registries like the Terraform Registry. Effective use of modules can significantly reduce code duplication, improve infrastructure management, and enable the creation of scalable, maintainable Terraform configurations.
Visit the following resources to learn more:
- [@official@Modules Overview - Configuration Language | Terraform](https://developer.hashicorp.com/terraform/language/modules)
- [@official@Terraform Modules](https://developer.hashicorp.com/terraform/language/modules)
- [@official@Modules - Terraform Registry](https://registry.terraform.io/browse/modules)

@ -4,6 +4,6 @@ The terraform state mv command is used to move resources within a Terraform stat
Learn more from the following resources: Learn more from the following resources:
- [@official@Terraform state mv](https://developer.hashicorp.com/terraform/cli/commands/state/mv) - [@official@Terraform State mv](https://developer.hashicorp.com/terraform/cli/commands/state/mv)
- [@official@Moving Resources](https://developer.hashicorp.com/terraform/cli/state/move)
- [@video@Terraform — Terraform State MV ](https://www.youtube.com/watch?v=i10IMXn3l0o) - [@video@Terraform — Terraform State MV ](https://www.youtube.com/watch?v=i10IMXn3l0o)
- [@article@Moving resoureces](https://developer.hashicorp.com/terraform/cli/state/move)

@ -14,7 +14,7 @@ output "name" {
Learn more from the following resources: Learn more from the following resources:
- [@course@Hashicorp Output Tutorial](https://developer.hashicorp.com/terraform/tutorials/configuration-language/outputs) - [@official@Hashicorp Output Tutorial](https://developer.hashicorp.com/terraform/tutorials/configuration-language/outputs)
- [@official@Declaring an output value](https://developer.hashicorp.com/terraform/language/values/outputs#declaring-an-output-value) - [@official@Declaring an Output Value](https://developer.hashicorp.com/terraform/language/values/outputs#declaring-an-output-value)
- [@article@Terraform Output Values : Complete Guide & Examples](https://spacelift.io/blog/terraform-output) - [@article@Terraform Output Values : Complete Guide & Examples](https://spacelift.io/blog/terraform-output)
- [@article@Terraform: Output a field from a module](https://stackoverflow.com/questions/47034515/terraform-output-a-field-from-a-module) - [@article@Terraform: Output a field from a module](https://stackoverflow.com/questions/47034515/terraform-output-a-field-from-a-module)

@ -5,4 +5,4 @@ Terraform preconditions are declarative checks within resource or data blocks th
Learn more from the following resources: Learn more from the following resources:
- [@official@Custom Condition Checks](https://developer.hashicorp.com/terraform/language/values/outputs#custom-condition-checks) - [@official@Custom Condition Checks](https://developer.hashicorp.com/terraform/language/values/outputs#custom-condition-checks)
- [@video@Using Precondition and Postcondition Blocks in Terraform](https://www.youtube.com/watch?v=55ZLu8tSnvk) - [@video@Using Precondition and Post-condition Blocks in Terraform](https://www.youtube.com/watch?v=55ZLu8tSnvk)

@ -4,7 +4,7 @@ Project initialization in Terraform involves setting up the necessary configurat
Learn more from the following resources: Learn more from the following resources:
-[@official@Init Command](https://developer.hashicorp.com/terraform/cli/commands/init) - [@official@Init Command](https://developer.hashicorp.com/terraform/cli/commands/init)
- [@official@Initialize Terraform Configuration](https://developer.hashicorp.com/terraform/tutorials/cli/init) - [@official@Initialize Terraform Configuration](https://developer.hashicorp.com/terraform/tutorials/cli/init)
- [@article@Terraform Init](https://spacelift.io/blog/terraform-init) - [@article@Terraform Init](https://spacelift.io/blog/terraform-init)
- [@video@Learn Terraform: The Init Command](https://www.youtube.com/watch?v=82lsMLqWjS4) - [@video@Learn Terraform: The Init Command](https://www.youtube.com/watch?v=82lsMLqWjS4)

@ -1,3 +1,7 @@
# Provisioners # Provisioners
Provisioners in Terraform are used to execute scripts or other actions on local or remote machines as part of resource creation or destruction. They allow for configuration management tasks that go beyond Terraform's declarative model. Provisioners can run scripts, upload files, or execute other tools on resources after they're created. Common types include local-exec (runs commands on the machine running Terraform) and remote-exec (runs commands on a remote resource). While powerful, provisioners should be used sparingly as they can make Terraform runs less predictable and idempotent. They're often seen as a last resort when native Terraform resources or provider capabilities are insufficient. Best practices suggest using dedicated configuration management tools like Ansible or Chef instead of heavy reliance on provisioners. When used, provisioners should be designed to be idempotent and handle potential failures gracefully. Provisioners in Terraform are used to execute scripts or other actions on local or remote machines as part of resource creation or destruction. They allow for configuration management tasks that go beyond Terraform's declarative model. Provisioners can run scripts, upload files, or execute other tools on resources after they're created. Common types include local-exec (runs commands on the machine running Terraform) and remote-exec (runs commands on a remote resource). While powerful, provisioners should be used sparingly as they can make Terraform runs less predictable and idempotent. They're often seen as a last resort when native Terraform resources or provider capabilities are insufficient. Best practices suggest using dedicated configuration management tools like Ansible or Chef instead of heavy reliance on provisioners. When used, provisioners should be designed to be idempotent and handle potential failures gracefully.
Learn more from the following resources:
- [@official@Provisioners - Terraform](https://developer.hashicorp.com/terraform/language/resources/provisioners/syntax)

@ -1,6 +1,6 @@
# Resources # Resources
Resources represent components of your infrastructure such as Virtual Machines, Storage Buckets, Databases or Virtual Private Clouds. Access to provider resources comes after successful project initalization after declaring your desired providers. Resources represent components of your infrastructure such as Virtual Machines, Storage Buckets, Databases or Virtual Private Clouds. Access to provider resources comes after successful project initialization after declaring your desired providers.
Learn more from the following resources: Learn more from the following resources:

@ -5,5 +5,5 @@ HCP Run Tasks, a feature of Terraform Cloud, allow for the integration of extern
Learn more from the following resources: Learn more from the following resources:
- [@official@Run Tasks](https://developer.hashicorp.com/terraform/cloud-docs/workspaces/settings/run-tasks) - [@official@Run Tasks](https://developer.hashicorp.com/terraform/cloud-docs/workspaces/settings/run-tasks)
- [@official@Terrafrom Registry - Run Tasks](https://registry.terraform.io/browse/run-tasks) - [@official@Terraform Registry - Run Tasks](https://registry.terraform.io/browse/run-tasks)
- [@official@Run Tasks API](https://developer.hashicorp.com/terraform/cloud-docs/api-docs/run-tasks/run-tasks) - [@official@Run Tasks API](https://developer.hashicorp.com/terraform/cloud-docs/api-docs/run-tasks/run-tasks)

@ -4,6 +4,6 @@ Terraform secret management is a critical aspect of secure infrastructure-as-cod
Learn more from the following resources: Learn more from the following resources:
- [@official@Inject Secrets with Vault](https://developer.hashicorp.com/terraform/tutorials/secrets)
- [@article@Terraform Secrets - How to manage them](https://spacelift.io/blog/terraform-secrets) - [@article@Terraform Secrets - How to manage them](https://spacelift.io/blog/terraform-secrets)
- [@article@A comprehensive guide to managing secrets in your Terraform code](https://blog.gruntwork.io/a-comprehensive-guide-to-managing-secrets-in-your-terraform-code-1d586955ace1) - [@article@A comprehensive guide to managing secrets in your Terraform code](https://blog.gruntwork.io/a-comprehensive-guide-to-managing-secrets-in-your-terraform-code-1d586955ace1)
- [@official@Inject secrets with Vault](https://developer.hashicorp.com/terraform/tutorials/secrets)

@ -1,3 +1,8 @@
# Security # Security
Terraform security encompasses practices and tools to ensure the safe and compliant management of infrastructure-as-code. Key aspects include securing Terraform state files, which often contain sensitive information, by using encrypted remote backends. Access control is crucial, implementing least privilege principles for both human users and service accounts. Sensitive data management involves using vault systems or cloud-native secret managers rather than hardcoding credentials. Code review processes should include security checks, and automated scanning tools can be integrated to detect misconfigurations or policy violations. Implementing compliance-as-code with tools like Terraform Sentinel ensures adherence to organizational policies. Version control and proper git hygiene help maintain audit trails. Terraform security encompasses practices and tools to ensure the safe and compliant management of infrastructure-as-code. Key aspects include securing Terraform state files, which often contain sensitive information, by using encrypted remote backends. Access control is crucial, implementing least privilege principles for both human users and service accounts. Sensitive data management involves using vault systems or cloud-native secret managers rather than hardcoding credentials. Code review processes should include security checks, and automated scanning tools can be integrated to detect misconfigurations or policy violations. Implementing compliance-as-code with tools like Terraform Sentinel ensures adherence to organizational policies. Version control and proper git hygiene help maintain audit trails.
Visit the following resources to learn more:
- [@official@Terraform Security](https://www.terraform.io/cloud-docs/architectural-details/security-model)
- [@article@12 Terraform Security Best Practices](https://spacelift.io/blog/terraform-security)

@ -5,5 +5,5 @@ Terraform state files often contain sensitive data like passwords, API keys, and
Learn more from the following resources: Learn more from the following resources:
- [@official@Sensitive data in state](https://developer.hashicorp.com/terraform/language/state/sensitive-data) - [@official@Sensitive data in state](https://developer.hashicorp.com/terraform/language/state/sensitive-data)
- [@article@Handling Sensitive Values in State](https://developer.hashicorp.com/terraform/plugin/best-practices/sensitive-state) - [@official@Handling Sensitive Values in State](https://developer.hashicorp.com/terraform/plugin/best-practices/sensitive-state)
- [@video@Terraform — Protecting Sensitive Data](https://www.youtube.com/watch?v=yLc1YkB7DFo) - [@video@Terraform — Protecting Sensitive Data](https://www.youtube.com/watch?v=yLc1YkB7DFo)

@ -4,5 +4,5 @@ The terraform show command displays a human-readable view of the current state o
Learn more from the following resources: Learn more from the following resources:
- [@official@Terrform show](https://developer.hashicorp.com/terraform/cli/commands/show) - [@official@Terraform show](https://developer.hashicorp.com/terraform/cli/commands/show)
- [@official@Terraform state show](https://developer.hashicorp.com/terraform/cli/commands/state/show) - [@official@Terraform state show](https://developer.hashicorp.com/terraform/cli/commands/state/show)

@ -1,6 +1,6 @@
# state force-unlock # state force-unlock
The `terraform state force-unlock` command in Terraform is used to manually release a stuck state lock. State locking is a mechanism that prevents concurrent operations on the same state, but occasionally a lock may not be properly released due to crashes or network issues. This command allows administrators to forcibly remove the lock, enabling further Terraform operations to proceed. It should be used with extreme caution, as it can lead to state corruption if multiple users are attempting to modify the state simultaneously. Before using force-unlock, it's crucial to ensure that no other Terraform operations are genuinely in progress. This command is typically a last resort for resolving locking issues and should only be employed when certain that the lock is erroneously held and no conflicting operations are ongoing. The terraform `state force-unlock` command in Terraform is used to manually release a stuck state lock. State locking is a mechanism that prevents concurrent operations on the same state, but occasionally a lock may not be properly released due to crashes or network issues. This command allows administrators to forcibly remove the lock, enabling further Terraform operations to proceed. It should be used with extreme caution, as it can lead to state corruption if multiple users are attempting to modify the state simultaneously. Before using force-unlock, it's crucial to ensure that no other Terraform operations are genuinely in progress. This command is typically a last resort for resolving locking issues and should only be employed when certain that the lock is erroneously held and no conflicting operations are ongoing.
Learn more from the following resources: Learn more from the following resources:

@ -5,5 +5,5 @@ Terraform state locking is a mechanism that prevents concurrent modifications to
Learn more from the following resources: Learn more from the following resources:
- [@official@State - Locking](https://developer.hashicorp.com/terraform/language/state/locking) - [@official@State - Locking](https://developer.hashicorp.com/terraform/language/state/locking)
- [@article@State Storage and Locking](https://developer.hashicorp.com/terraform/language/state/backends) - [@official@State Storage and Locking](https://developer.hashicorp.com/terraform/language/state/backends)
- [@video@Terraform - State locking](https://www.youtube.com/watch?v=QdDCUpggmrw) - [@video@Terraform - State locking](https://www.youtube.com/watch?v=QdDCUpggmrw)

@ -1,6 +1,6 @@
# state replace-provider # state replace-provider
The `terraform state replace-provider` command in Terraform is used to update the provider information in the state file without altering the actual infrastructure. This command is particularly useful when migrating from one provider to another, or when updating to a new major version of a provider that involves a change in the provider's namespace. It allows users to change the provider associated with resources in the state file, effectively telling Terraform to use a different provider for managing these resources in future operations. This command is crucial for maintaining state consistency during provider transitions or upgrades, especially in large-scale infrastructures. While it doesn't modify the actual resources, it updates Terraform's understanding of which provider should be used to manage them, facilitating smooth provider migrations without requiring resource recreation. The terraform `state replace-provider` command in Terraform is used to update the provider information in the state file without altering the actual infrastructure. This command is particularly useful when migrating from one provider to another, or when updating to a new major version of a provider that involves a change in the provider's namespace. It allows users to change the provider associated with resources in the state file, effectively telling Terraform to use a different provider for managing these resources in future operations. This command is crucial for maintaining state consistency during provider transitions or upgrades, especially in large-scale infrastructures. While it doesn't modify the actual resources, it updates Terraform's understanding of which provider should be used to manage them, facilitating smooth provider migrations without requiring resource recreation.
Learn more from the following resources: Learn more from the following resources:

@ -2,7 +2,7 @@
`terraform apply` is the command used to implement the changes defined in your Terraform configuration files. It creates, updates, or deletes the specified infrastructure resources to match the desired state. Before making changes, it shows a plan similar to terraform plan and prompts for confirmation, unless the -auto-approve flag is used. Apply updates the state file to reflect the current infrastructure state, enabling Terraform to track and manage resources over time. It handles dependencies between resources, creating them in the correct order. `terraform apply` is the command used to implement the changes defined in your Terraform configuration files. It creates, updates, or deletes the specified infrastructure resources to match the desired state. Before making changes, it shows a plan similar to terraform plan and prompts for confirmation, unless the -auto-approve flag is used. Apply updates the state file to reflect the current infrastructure state, enabling Terraform to track and manage resources over time. It handles dependencies between resources, creating them in the correct order.
Learn more from the following resoureces: Learn more from the following resources:
- [@official@Terraform Apply Documentation](https://developer.hashicorp.com/terraform/cli/commands/apply) - [@official@Terraform Apply Documentation](https://developer.hashicorp.com/terraform/cli/commands/apply)
- [@course@Apply Terraform configuration](https://developer.hashicorp.com/terraform/tutorials/cli/apply) - [@course@Apply Terraform configuration](https://developer.hashicorp.com/terraform/tutorials/cli/apply)

@ -4,4 +4,4 @@ The validate command helps you make sure your Terraform code is syntactically co
Learn more from the following resources: Learn more from the following resources:
- [@article@Terraform Validate practical examples](https://www.env0.com/blog/terraform-validate-command-practical-examples-and-best-practices) - [@article@Terraform Validate Examples](https://www.env0.com/blog/terraform-validate-command-practical-examples-and-best-practices)

@ -4,6 +4,6 @@ Testing Terraform modules involves validating their functionality, reusability,
Learn more from the following resources: Learn more from the following resources:
- [@official@Write Terraform tests](https://developer.hashicorp.com/terraform/tutorials/configuration-language/test) - [@official@Write Terraform Tests](https://developer.hashicorp.com/terraform/tutorials/configuration-language/test)
- [@video@Terraform module testing](https://www.youtube.com/watch?v=1LInIWM_2UQ) - [@video@Terraform Module Testing](https://www.youtube.com/watch?v=1LInIWM_2UQ)
- [@article@Terraform test](https://developer.hashicorp.com/terraform/language/tests) - [@official@Terraform Test](https://developer.hashicorp.com/terraform/language/tests)

@ -1,6 +1,6 @@
# TFLint # TFLint
TFLint is a third-party, extensible linter for Terraform code. It performs static analysis of Terraform configurations to detect potential errors, enforce best practices, and maintain code consistency. Key features include: Checking for potential errors that terraform validate might miss, enforcing naming conventions and code style rules, identifying deprecated syntax or resource types and, providing cloud provider-specific checks TFLint is a third-party, extensible linter for Terraform code. It performs static analysis of Terraform configurations to detect potential errors, enforce best practices, and maintain code consistency. Key features include: Checking for potential errors that terraform validate might miss, enforcing naming conventions and code style rules, identifying deprecated syntax or resource types and, providing cloud provider-specific checks.
TFLint is configurable via .tflint.hcl files and supports custom rules. It can be integrated into CI/CD pipelines for automated code quality checks. While not an official Terraform tool, TFLint is widely used in the Terraform community to complement built-in validation tools and improve overall code quality and reliability in infrastructure-as-code projects. TFLint is configurable via .tflint.hcl files and supports custom rules. It can be integrated into CI/CD pipelines for automated code quality checks. While not an official Terraform tool, TFLint is widely used in the Terraform community to complement built-in validation tools and improve overall code quality and reliability in infrastructure-as-code projects.

@ -4,5 +4,5 @@ Terraform variable type constraints specify allowed data types for input variabl
Learn more from the following resources: Learn more from the following resources:
- [@official@Variable Type Contraints](https://developer.hashicorp.com/terraform/language/expressions/type-constraints) - [@official@Variable Type Constraints](https://developer.hashicorp.com/terraform/language/expressions/type-constraints)
- [@video@Terraform Type Constraints](https://www.youtube.com/watch?v=hNZiZEQfV4Q) - [@video@Terraform Type Constraints](https://www.youtube.com/watch?v=hNZiZEQfV4Q)

@ -4,5 +4,5 @@ Terraform unit testing focuses on verifying the behavior of individual modules o
Learn more from the following resources: Learn more from the following resources:
- [@article@Terraform unit tests](https://www.hashicorp.com/blog/testing-hashicorp-terraform#unit-tests) - [@official@Integration or Unit Testing](https://developer.hashicorp.com/terraform/language/tests#integration-or-unit-testing)
- [@official@Integration or unit testing](https://developer.hashicorp.com/terraform/language/tests#integration-or-unit-testing) - [@article@Terraform Unit Tests](https://www.hashicorp.com/blog/testing-hashicorp-terraform#unit-tests)

@ -4,6 +4,6 @@ Using Terraform offers numerous benefits. It allows you to define your infrastru
Learn more from the following resources: Learn more from the following resources:
- [@official@Use Cases](https://developer.hashicorp.com/terraform/intro/use-cases#use-cases) - [@official@Use Cases of Terraform](https://developer.hashicorp.com/terraform/intro/use-cases#use-cases)
- [@article@9 Terraform Use Cases for Your Infrastructure as Code](https://spacelift.io/blog/terraform-use-cases) - [@article@9 Terraform Use Cases for Your Infrastructure as Code](https://spacelift.io/blog/terraform-use-cases)
- [@video@What are the Benefits of Using Terraform?](https://www.youtube.com/watch?v=0M4IvedbLJ4) - [@video@What are the Benefits of Using Terraform?](https://www.youtube.com/watch?v=0M4IvedbLJ4)

@ -4,4 +4,4 @@ Validation rules can be used to specify custom validations to a variable. The mo
Learn more from the following resources: Learn more from the following resources:
- [@offical@Custom Validation Rules](https://developer.hashicorp.com/terraform/language/values/variables#custom-validation-rules) - [@official@Custom Validation Rules](https://developer.hashicorp.com/terraform/language/values/variables#custom-validation-rules)

@ -2,3 +2,5 @@
HCL, or HashiCorp Configuration Language, is a human-readable language for DevOps tools. It is used to code infrastructure management and service orchestration in a clear and manageable way. Several HashiCorp products, including Terraform, use HCL as their primary configuration language. Terraform uses HCL to provision and manage cloud resources efficiently. Its clear syntax and structure are instrumental in creating resource modules and configurations that align with the Terraform Roadmap's goals for providing a seamless, user-friendly platform for infrastructure as code. HCL, or HashiCorp Configuration Language, is a human-readable language for DevOps tools. It is used to code infrastructure management and service orchestration in a clear and manageable way. Several HashiCorp products, including Terraform, use HCL as their primary configuration language. Terraform uses HCL to provision and manage cloud resources efficiently. Its clear syntax and structure are instrumental in creating resource modules and configurations that align with the Terraform Roadmap's goals for providing a seamless, user-friendly platform for infrastructure as code.
- [@official@Syntax - Configuration Language | Terraform](https://developer.hashicorp.com/terraform/language/syntax/configuration)
- [@opensource@hashicorp/hcl](https://github.com/hashicorp/hcl)

@ -4,5 +4,5 @@ Provisioners in Terraform should be used judiciously, primarily when other decla
Learn more from the following resources: Learn more from the following resources:
- [@article@My thoughts on why you should use Terraform Provisioners as a final option](https://thomasthornton.cloud/2023/05/11/my-thoughts-on-why-you-should-use-terraform-provisioners-as-a-final-option/) - [@article@Why You should Use Terraform Provisioners as a Final Option](https://thomasthornton.cloud/2023/05/11/my-thoughts-on-why-you-should-use-terraform-provisioners-as-a-final-option/)
- [@article@Why Terraform Provisioners Are The Last Resort?](https://k21academy.com/terraform-iac/terraform-provisioners/) - [@article@Why Terraform Provisioners Are The Last Resort?](https://k21academy.com/terraform-iac/terraform-provisioners/)

@ -3,9 +3,9 @@ jsonUrl: '/jsons/roadmaps/terraform.json'
pdfUrl: '/pdfs/roadmaps/terraform.pdf' pdfUrl: '/pdfs/roadmaps/terraform.pdf'
order: 15 order: 15
briefTitle: 'Terraform' briefTitle: 'Terraform'
briefDescription: 'Step by step guide to learning Terraform in 2024' briefDescription: 'Step by step guide to learn Terraform in 2024'
title: 'Terraform Roadmap' title: 'Terraform Roadmap'
description: 'Step by step guide to learning Terraform in 2024' description: 'Step by step guide to learn Terraform in 2024'
isNew: false isNew: false
hasTopics: true hasTopics: true
dimensions: dimensions:

Loading…
Cancel
Save