2017-02-15 19:47:30 +01:00
|
|
|
|
---
|
2020-08-15 03:51:06 +02:00
|
|
|
|
layout: "language"
|
2017-02-15 21:19:38 +01:00
|
|
|
|
page_title: "Backend Type: http"
|
|
|
|
|
sidebar_current: "docs-backends-types-standard-http"
|
2017-02-15 19:47:30 +01:00
|
|
|
|
description: |-
|
2017-02-15 21:19:38 +01:00
|
|
|
|
Terraform can store state remotely at any valid HTTP endpoint.
|
2017-02-15 19:47:30 +01:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# http
|
|
|
|
|
|
2017-08-13 18:49:49 +02:00
|
|
|
|
**Kind: Standard (with optional locking)**
|
2017-02-15 21:19:38 +01:00
|
|
|
|
|
2017-02-15 19:47:30 +01:00
|
|
|
|
Stores the state using a simple [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) client.
|
|
|
|
|
|
2017-08-20 14:59:34 +02:00
|
|
|
|
State will be fetched via GET, updated via POST, and purged with DELETE. The method used for updating is configurable.
|
2017-02-15 19:47:30 +01:00
|
|
|
|
|
2017-08-20 14:59:34 +02:00
|
|
|
|
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.
|
2017-08-13 18:49:49 +02:00
|
|
|
|
|
2017-02-15 19:47:30 +01:00
|
|
|
|
## Example Usage
|
|
|
|
|
|
2017-04-05 17:29:27 +02:00
|
|
|
|
```hcl
|
2017-02-15 21:19:38 +01:00
|
|
|
|
terraform {
|
|
|
|
|
backend "http" {
|
2017-08-20 14:59:34 +02:00
|
|
|
|
address = "http://myrest.api.com/foo"
|
|
|
|
|
lock_address = "http://myrest.api.com/foo"
|
|
|
|
|
unlock_address = "http://myrest.api.com/foo"
|
2017-02-15 21:19:38 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
2017-02-15 19:47:30 +01:00
|
|
|
|
```
|
|
|
|
|
|
2020-02-19 01:40:14 +01:00
|
|
|
|
## Data Source Configuration
|
2017-02-15 19:47:30 +01:00
|
|
|
|
|
2017-04-05 17:29:27 +02:00
|
|
|
|
```hcl
|
2017-02-15 19:47:30 +01:00
|
|
|
|
data "terraform_remote_state" "foo" {
|
2017-04-05 17:29:27 +02:00
|
|
|
|
backend = "http"
|
2018-10-29 17:22:21 +01:00
|
|
|
|
config = {
|
2017-04-05 17:29:27 +02:00
|
|
|
|
address = "http://my.rest.api.com"
|
|
|
|
|
}
|
2017-02-15 19:47:30 +01:00
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Configuration variables
|
|
|
|
|
|
2020-09-02 14:35:08 +02:00
|
|
|
|
The following configuration options / environment variables are supported:
|
2017-02-15 19:47:30 +01:00
|
|
|
|
|
2020-09-02 14:35:08 +02:00
|
|
|
|
* `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
|
2017-02-15 19:47:30 +01:00
|
|
|
|
* `skip_cert_verification` - (Optional) Whether to skip TLS verification.
|
|
|
|
|
Defaults to `false`.
|
2020-09-02 14:35:08 +02:00
|
|
|
|
* `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`.
|