CDK for Terraform
CDK (Cloud Development Kit) for Terraform allows developers to use familiar programming languages to define cloud infrastructure and provision it through HashiCorp Terraform.
CDK for Terraform apps are written in one of the supported programming languages and can leverage the entire ecosystem of Terraform modules and providers. The application synthesizes Terraform configuration in JSON. Terraform or the CDK for Terraform can then be used to deploy the application.
The CDK for Terraform project includes two packages:
- cdktf-cli - A CLI that allows users to run commands to initialize, import, and synthesize CDK for Terraform applications.
- cdktf - A library for defining Terraform resources using programming constructs.
The project currently supports TypeScript, Python, Java, and C#.
Choose a language:
Hands-on: Try the tutorials in the CDK for Terraform collection on HashiCorp Learn.
Please note: Support for Golang is at an experimental state. In the CDK for Terraform and in the upstream library JSII which powers the support for the supported languages.
⚠️High memory usage: the provider generation currently needs ~6 GB of memory. Hence the maximum for Node.js is currently set to 8GB
- google cloud kubernetes engine + kubernetes
- Install and run a quick start tutorial at HashiCorp Learn
- Learn how to use any module or provider with the CDK for Terraform. You can find all modules and providers in the Terraform Registry.
- Explore the CDK for Terraform CLI.
- Defining Terraform outputs.
- Using Terraform remote backend.
- Using the CDK for Terraform escape hatch.
- Using the CDK for Terraform tokens.
- Using Terraform data sources.
- Using Terraform variables.
- Synthesizing Terraform configuration using CDK for Terraform synthesize command.
- Project telemetry.
- Defining Terraform locals.
- Handling breaking changes with feature flags.
- Writing own remote templates for init.
- Using assets to transfer files into the Terraform context.
Project Maturity and Production Readiness
CDK for Terraform is under active development; we’re still working out key workflows and best practices. We’re iterating fast and are likely to introduce breaking changes to existing APIs to improve the overall user experience of the product.
This tool can be used with Terraform Cloud and Terraform Enterprise, but is not eligible for commercial support, and is not officially recommended for production use cases. Like other HashiCorp pre-1.0 tools, some early-adopter users are already using CDK for Terraform in production, and we are working with those users to validate and improve workflows.
Early adopters of CDK for Terraform should expect to encounter and work around bugs occasionally, may need to refactor their codebase with each major release, and will intermittently need to use HCL and understand how JSON Terraform configurations are generated, for example to use overrides to use Terraform functionality that cannot currently be expressed using CDK for Terraform. Our goal is to provide a user experience where this is an exceptional edge case. If you’re comfortable with this level of troubleshooting, we’re very interested in your feedback and practical experience.
These caveats apply to CDK for Terraform itself, which generates Terraform configurations. Generated Terraform configurations are applied using Terraform Core, a well established / mature tool to provision infrastructure.
Contributing and Feedback
CDK for Terraform is an early experimental project and the development team would love your feedback to help guide the project.
- Contribute using the CONTRIBUTING.md guide.
- Ask a question on the HashiCorp Discuss using the terraform-cdk category.
- Report a bug or request a new feature.
- Browse all open issues.
Clone the project repository
git clone https://github.com/hashicorp/terraform-cdk.git
cd terraform-cdk/ yarn install
Build the project and packages