devpro / terraform-backend-mongodb

Terraform/OpenTofu HTTP backend (REST API) to manage & secure managed infrastructure state in a MongoDB database

Home Page:https://devpro.github.io/terraform-backend-mongodb/

Repository from Github https://github.comdevpro/terraform-backend-mongodbRepository from Github https://github.comdevpro/terraform-backend-mongodb

Terraform backend management in MongoDB

CI PKG Quality Gate Status Docker Image Version

Store Terraform state in MongoDB, using HTTP backend.

How to use

  • 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"

How to demonstrate

How to contribute

This is a .NET 7 / C# codebase (open-source, cross-platform, free, object-oriented technologies)

Project structure

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)

Packages (NuGet)

Name Description
MongoDB.Bson, MongoDB.Driver MongoDB .NET Driver
Swashbuckle.AspNetCore OpenAPI / Swagger generation
System.Text.Json JSON support

How to compare

Samples with other solutions

About

Terraform/OpenTofu HTTP backend (REST API) to manage & secure managed infrastructure state in a MongoDB database

https://devpro.github.io/terraform-backend-mongodb/

License:GNU Affero General Public License v3.0


Languages

Language:C# 97.8%Language:Dockerfile 1.8%Language:JavaScript 0.4%