https://github.com/konfjs/tfkonf
Terraform / OpenTofu in Typescript. Like CDKTF but simpler. [experimental]
https://github.com/konfjs/tfkonf
cdk cdktf terraform typescript
Last synced: 6 months ago
JSON representation
Terraform / OpenTofu in Typescript. Like CDKTF but simpler. [experimental]
- Host: GitHub
- URL: https://github.com/konfjs/tfkonf
- Owner: konfjs
- License: mpl-2.0
- Created: 2024-11-27T21:09:59.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-03-28T00:17:25.000Z (7 months ago)
- Last Synced: 2025-03-29T15:12:02.081Z (7 months ago)
- Topics: cdk, cdktf, terraform, typescript
- Language: TypeScript
- Homepage: https://konfjs.github.io
- Size: 3.82 MB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# tfkonf
Terraform / OpenTofu in Typescript. Like CDKTF but simpler.
## Concepts
`@tfkonf/core` - Core library that provides the basic building blocks for creating Terraform configurations.
For example, `TerraformConfig` - Represents a Terraform configuration file. Each Terraform resource must belong to a `TerraformConfig`.`@tfkonf/provider-` - Provider libraries that provide resources for a specific Terraform provider. Example: `@tfkonf/provider-google` provides resources for Google Cloud Platform.
`@tfkonf/provider-generator` - CLI tool that generates Typescript code from Terraform provider schemas.
## Example
Input
```ts
import { Provider, Terraform, TerraformConfig } from '@tfkonf/core';
import { google_service_account } from '@tfkonf/provider-google/google_service_account';const main = new TerraformConfig('main.tf');
new google_service_account(main, 'my_service_account', {
account_id: 'my-service-account',
});new Terraform(main, {
backend: {
gcs: {
bucket: 'my-bucket',
prefix: 'terraform/state',
},
},
required_version: '>= 1.9.0',
required_providers: {
google: {
source: 'hashicorp/google',
version: '6.12.0',
},
},
});new Provider(main, 'google', {
project: 'foo',
region: 'us-west1',
});main.save();
```Output
```terraform
resource "google_service_account" "my_service_account" {
account_id = "my-service-account"
}terraform {
backend "gcs" {
bucket = "my-bucket"
prefix = "terraform/state"
}
required_version = ">= 1.9.0"
required_providers {
google = {
source = "hashicorp/google"
version = "6.12.0"
}
}
}provider "google" {
project = "foo"
region = "us-west1"
}
```