• HashiCorp Developer

  • HashiCorp Cloud Platform
  • Terraform
  • Packer
  • Consul
  • Vault
  • Boundary
  • Nomad
  • Waypoint
  • Vagrant
Terraform
  • Install
  • Tutorials
    • About the Docs
    • Configuration Language
    • Terraform CLI
    • Terraform Cloud
    • Terraform Enterprise
    • CDK for Terraform
    • Provider Use
    • Plugin Development
    • Registry Publishing
    • Integration Program
  • Registry(opens in new tab)
  • Try Cloud(opens in new tab)
  • Sign up
Terraform Home

Configuration Language

Skip to main content
  • Configuration Language
  • Data Sources
    • Overview
    • Terraform Cloud
      • Backend Configuration
        • local
        • remote
        • azurerm
        • consul
        • cos
        • gcs
        • http
        • Kubernetes
        • oss
        • pg
        • s3
  • Upgrading to Terraform v1.3
  • v1.x Compatibility Promises

  • Terraform Internals

  • Resources

  • Tutorial Library
  • Certifications
  • Community Forum
    (opens in new tab)
  • Support
    (opens in new tab)
  • GitHub
    (opens in new tab)
  • Terraform Registry
    (opens in new tab)
  1. Developer
  2. Terraform
  3. Configuration Language
  4. Terraform Settings
  5. Backends
  6. http
  • Terraform
  • v1.2.x
  • v1.1 and earlier

»http

Stores the state using a simple REST client.

State will be fetched via GET, updated via POST, and purged with DELETE. The method used for updating is configurable.

This backend optionally supports state locking. When locking support is enabled it will use LOCK and UNLOCK requests providing the lock info in the body. The endpoint should return a 423: Locked or 409: Conflict with the holding lock info when it's already taken, 200: OK for success. Any other status will be considered an error. The ID of the holding lock info will be added as a query parameter to state updates requests.

Example Usage

terraform {
  backend "http" {
    address = "http://myrest.api.com/foo"
    lock_address = "http://myrest.api.com/foo"
    unlock_address = "http://myrest.api.com/foo"
  }
}

Data Source Configuration

data "terraform_remote_state" "foo" {
  backend = "http"
  config = {
    address = "http://my.rest.api.com"
  }
}

Configuration Variables

Warning: We recommend using environment variables to supply credentials and other sensitive data. If you use -backend-config or hardcode these values directly in your configuration, Terraform will include these values in both the .terraform subdirectory and in plan files. Refer to Credentials and Sensitive Data for details.

The following configuration options / environment variables are supported:

  • address / TF_HTTP_ADDRESS - (Required) The address of the REST endpoint
  • update_method / TF_HTTP_UPDATE_METHOD - (Optional) HTTP method to use when updating state. Defaults to POST.
  • lock_address / TF_HTTP_LOCK_ADDRESS - (Optional) The address of the lock REST endpoint. Defaults to disabled.
  • lock_method / TF_HTTP_LOCK_METHOD - (Optional) The HTTP method to use when locking. Defaults to LOCK.
  • unlock_address / TF_HTTP_UNLOCK_ADDRESS - (Optional) The address of the unlock REST endpoint. Defaults to disabled.
  • unlock_method / TF_HTTP_UNLOCK_METHOD - (Optional) The HTTP method to use when unlocking. Defaults to UNLOCK.
  • username / TF_HTTP_USERNAME - (Optional) The username for HTTP basic authentication
  • password / TF_HTTP_PASSWORD - (Optional) The password for HTTP basic authentication
  • skip_cert_verification - (Optional) Whether to skip TLS verification. Defaults to false.
  • retry_max / TF_HTTP_RETRY_MAX – (Optional) The number of HTTP request retries. Defaults to 2.
  • retry_wait_min / TF_HTTP_RETRY_WAIT_MIN – (Optional) The minimum time in seconds to wait between HTTP request attempts. Defaults to 1.
  • retry_wait_max / TF_HTTP_RETRY_WAIT_MAX – (Optional) The maximum time in seconds to wait between HTTP request attempts. Defaults to 30.
Edit this page on GitHub

On this page

  1. http
  2. Example Usage
  3. Data Source Configuration
  4. Configuration Variables
Give Feedback(opens in new tab)
  • Certifications
  • System Status
  • Terms of Use
  • Security
  • Privacy
  • Trademark Policy
  • Trade Controls
  • Give Feedback(opens in new tab)