An open API service indexing awesome lists of open source software.

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]

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"
}
```