Store Terraform state in MongoDB, using HTTP backend.
- Create a MongoDB database (you can provision a cluster in MongoDB Atlas)
# example on a MongoDB container running locally
docker run --name mongodb -d -p 27017:27017 mongo:5.0-
Run the web API
-
Update the Terraform file
terraform {
backend "http" {
address = "<webapi_url>/state/<project_name>"
lock_address = "<webapi_url>/state/<project_name>/lock"
unlock_address = "<webapi_url>/state/<project_name>/lock"
lock_method = "POST"
unlock_method = "DELETE"
username = "<api_username>"
password = "<api_password>"
# uncomment if HTTPS certificate is not valid
# skip_cert_verification = "true"
}
}-
Execute usual Terraform command lines
-
(Optional) Add MongoDB indexes for optimal performances
# example on a MongoDB container running locally
docker run --rm --link mongodb \
-v "$(pwd)/scripts":/home/scripts mongo:5.0 \
bash -c "mongo mongodb://mongodb:27017/terraform_backend_dev /home/scripts/mongo-create-index.js"- Run the terraform-docker sample
This is a .NET 7 / C# codebase (open-source, cross-platform, free, object-oriented technologies)
| Project name | Technology | Project type |
|---|---|---|
Common.AspNetCore |
.NET 7 | Library |
Common.MongoDb |
.NET 7 | Library |
Common.Runtime |
.NET 7 | Library |
Domain |
.NET 7 | Library |
Infrastructure.MongoDb |
.NET 7 | Library |
WebApi |
ASP.NET 7 | Web application (REST API) |
| Name | Description |
|---|---|
MongoDB.Bson, MongoDB.Driver |
MongoDB .NET Driver |
Swashbuckle.AspNetCore |
OpenAPI / Swagger generation |
System.Text.Json |
JSON support |