terraform-provider-restful

command module
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 24, 2022 License: MPL-2.0 Imports: 5 Imported by: 0

README

Terraform Provider Restful

This is a general Terraform provider aims to work for any platform as long as it exposes a RESTful API.

The document of this provider is available on Terraform Provider Registry.

Features

  • Different authentication choices: HTTP auth (Basic, Bearer), API Key auth and OAuth2 (client credential, password credential).
  • Support resources created via either PUT or POST
  • Support resources created via either PUT or PATCH
  • Support polling asynchronous operations
  • Partial body tracking: only the specified properties of the resource in the body attribute is tracked for diffs
  • restful_operation resource that supports arbitrary Restful API call (e.g. POST) on create/update

Why

Given there already exists platform oriented, first-class providers, why do I create this? The reason is that most providers today are manually maintained, which means some latest features are likely not available in these first-class providers. For this case, terraform-provider-restful can be used as your escape hatch.

Another common use case is that the platform you are currently working on do not have a Terraform provider yet. In this case, you can use terraform-provider-restful to manage the resources for that platform.

Requirement

terraform-provider-restful has following assumptions about the API:

  • The API is expected to support the following HTTP methods:
    • POST/POST: create the resource
    • GET: read the resource
    • PUT/PATCH: update the resource
    • DELETE: remove the resource
  • The API content type is application/json
  • The resource should have a unique identifier (e.g. /foos/foo1).
    • For resource that is created via PUT, the identifier is the API endpoint (i.e. /foos/foo1).
    • For resource that is created via POST (the endpoint is /foos), the identifier is retrieved from the response of POST, either the whole identifier (i.e. /foos/foo1), or the last segment behind the API endpoint (i.e. foo1).

Regarding the users, as terraform-provider-restful is essentially just a terraform-wrapped API client, practitioners have to know the details of the API for the target platform quite well, e.g.:

  • Wheter a resource is created via PUT or POST
  • Wheter a resource is updated via PUT or PATCH
  • Whether any query parameter is needed for CRUD
  • For asynchronous operations, how to poll the result
  • For resources that are created via POST, how to identify the id/name from the response
  • etc.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL