This provider is a copy/fork of Terraforms http Provider except that this support HTTP JSON POST and mTLS.
thats all.
You can find the source here
This provider plugin is maintained by the sal, just sal for now.
This provider is published here:
terraform {
required_providers {
http-full = {
source = "salrashid123/http-full"
}
}
}
provider "http-full" {}
# HTTP POST
data "http" "example" {
provider = http-full
url = "https://httpbin.org/post"
method = "POST"
request_headers = {
content-type = "application/json"
}
request_body = jsonencode({
foo = "bar",
bar = "bar"
})
}
output "data" {
value = jsondecode(data.http.example.body)
}
# mTLS
data "http" "example" {
provider = http-full
url = "https://localhost:8081/get"
method = "GET"
ca = file("${path.module}/../certs/CA_crt.pem")
client_crt = file("${path.module}/../certs/client.crt")
client_key = file("${path.module}/../certs/client.key")
}
You can also use this to interact with an STS server to get any auth token.
data "http" "sts" {
provider = http-full
url = "https://stsserver-6w42z6vi3q-uc.a.run.app/token"
method = "POST"
request_headers = {
content-type = "application/json"
}
request_body = jsonencode({
grant_type = "urn:ietf:params:oauth:grant-type:token-exchange",
resource = "grpcserver-6w42z6vi3q-uc.a.run.app",
audience = "grpcserver-6w42z6vi3q-uc.a.run.app",
requested_token_type = "urn:ietf:params:oauth:token-type:access_token",
subject_token = "iamtheeggman",
subject_token_type = "urn:ietf:params:oauth:token-type:access_token"
})
}
output "sts_token" {
value = jsondecode(data.http.sts.body).access_token
}
The default mode will be POST with application/json
. To POST as application/x-www-form-urlencoded
:
data "http" "example_form" {
provider = http-full
url = "https://httpbin.org/post"
method = "POST"
request_headers = {
content-type = "application/x-www-form-urlencoded"
}
request_body = "foo=bar&bar=bar"
}
For mTLS and other configurations, see example/index.md
Clone repository to: `$GOPATH/src/github.com/salrashid123/terraform-provider-http-full
mkdir -p $GOPATH/src/github.com/terraform-providers
cd $GOPATH/src/github.com/terraform-providers
git clone https://github.com/salrashid123/terraform-provider-http-full.git
Enter the provider directory and build the provider
cd $GOPATH/src/github.com/terraform-providers/terraform-provider-http-full
make fmt
make build
Copy the provider to your directory
mkdir -p ~/.terraform.d/plugins/registry.terraform.io/salrashid123/http-full/5.0.0/linux_amd64/
cp $GOBIN/terraform-provider-http-full ~/.terraform.d/plugins/registry.terraform.io/salrashid123/http-full/5.0.0/linux_amd64/terraform-provider-http-full_v5.0.0
Then
cd example
terraform init
terraform apply
with
terraform {
required_providers {
http-full = {
source = "registry.terraform.io/salrashid123/http-full"
version = "~> 5.0.0"
}
}
}
provider "http-full" {
}
data "http" "example" {
provider = http-full
url = "https://httpbin.org/post"
method = "POST"
request_headers = {
content-type = "application/json"
}
request_body = jsonencode({
foo = "bar"
bar = "bar"
})
}
output "data" {
value = jsondecode(data.http.example.body)
}
…
In order to test the provider, you can simply run make test
.
$ make test
This site supports webmentions. Send me a mention via this form.