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.

About

Terraform provider for Folge

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages