Skip to content

labd/terraform-provider-folge

Repository files navigation

Folge Terraform Provider

Test status codecov Go Report Card

The Terraform Folge provider allows you to configure your folge space with infrastructure-as-code principles.

Quick start

Read our documentation and check out the examples.

Usage

The provider is distributed via the Terraform registry. To use it you need to configure the required_provider block. For example:

terraform {
  required_providers {
    folge = {
      source = "labd/folge"

      # It's recommended to pin the version, e.g.:
      # version = "~> 0.0.1"
    }
  }
}

provider "folge" {
  client_id     = "<client-id>
  client_secret = "<client-secret>"
}

resource "folge_application" "test" {
  name = "My application"
}

resource "folge_datasource" "test" {
  application_id = folge_application.test.id

  name = "My datasource"
  url    = "http://localhost:8000/api/healthcheck"

  basic_auth {
    username = "my-user"
    password = "my-password"
  }
}

resource "folge_check_http_status" "test" {
  application_id = folge_application.test.id
  datasource_id = folge_datasource.test.id

  crontab     = "*/5 * * * *"
  label       = "My check"
  status_code = 200
}


resource "folge_check_json_property" "test" {
  application_id = folge_application.test.id
  datasource_id = folge_datasource.test.id

  crontab    = "*/5 * * * *"
  name       = "My check"
  path       = "authentication.failed"
  operator   = "eq"
  datatype   = "bool"
  value_bool = false
}


# Forwards metrics to an OpenTelemetry Collector
resource "folge_metrics_reader" "test" {
  datasource_id = folge_datasource.test.id

  crontab = "*/5 * * * *"
  fields  = ["*"]

  target = {
    type = "otel"
    url  = "http://localhost:4317"
    headers = {
      "X-Api-Key" = "secret"
    }
  }
}


# Store metrics in folge
resource "folge_metrics_reader" "test" {
  datasource_id = folge_datasource.test.id

  crontab = "*/5 * * * *"
  fields  = ["*"]

  target = {
    type = "internal"
  }
}

Contributing

Building the provider

Clone the repository and run the following command:

$ task build-local

Debugging / Troubleshooting

There are two environment settings for troubleshooting:

  • TF_LOG=INFO enables debug output for Terraform.

Note this generates a lot of output!

Releasing

Install "changie"

brew tap miniscruff/changie https://github.com/miniscruff/changie
brew install changie

Add unreleased change files by running for each change (add/fix/remove/etc.)

changie new

Commit this and a new PR will be created.

Once that's merged and its Github action is complete, a new release will be live.

Testing

Running unit tests

$ task test

Running acceptance tests

$ task testacc

Note that acceptance tests by default run based on pre-recorded results. The test stubs can be found in [internal/assets] (./internal/assets). A good habit is to create a separate stub file per test case, as otherwise there might be conflicts when multiple tests are run in parallel.

When adding or updating tests locally you can set RECORD=true to re-record results. This will clear all previous results and create a new snapshot of the API interaction.

Authors

This project is developed by Lab Digital. We welcome additional contributors. Please see our GitHub repository for more information.