All Projects → everest-engineering → terraform-aws-mongodb

everest-engineering / terraform-aws-mongodb

Licence: Apache-2.0 License
Simplify MongoDB provisioning on AWS using Terraform

Projects that are alternatives of or similar to terraform-aws-mongodb

Terraform Aws Alb
Terraform module to provision a standard ALB for HTTP/HTTP traffic
Stars: ✭ 53 (+165%)
Mutual labels:  ec2, terraform, ecs
terraform-ecs
Terraform ECS module
Stars: ✭ 15 (-25%)
Mutual labels:  ec2, ecs, terraform-modules
ecs-autoscale
A framework that runs on AWS Lambda for autoscaling ECS clusters and services
Stars: ✭ 69 (+245%)
Mutual labels:  ec2, ecs
terraform-aws-route53
A Terraform module to create a Route53 Domain Name System (DNS) on Amazon Web Services (AWS). https://aws.amazon.com/route53/
Stars: ✭ 39 (+95%)
Mutual labels:  terraform-modules, terraform-aws
terraform-aws-ec2-instance
Terraform module for provisioning a general purpose EC2 host
Stars: ✭ 123 (+515%)
Mutual labels:  ec2, terraform-modules
terraform-aws-nat-instance
Terraform module to provision a NAT Instance using an Auto Scaling Group and Spot Instance from $1/month
Stars: ✭ 126 (+530%)
Mutual labels:  terraform-modules, terraform-aws
terraform-aws-ecs-cluster
Terraform module for building an ECS cluster in AWS
Stars: ✭ 42 (+110%)
Mutual labels:  ecs, terraform-modules
terraform-aws-lambda-function
A Terraform module for deploying and managing Lambda functions on Amazon Web Services (AWS). https://aws.amazon.com/lambda/
Stars: ✭ 37 (+85%)
Mutual labels:  terraform-modules, terraform-aws
Infrastructure As Code Tutorial
Infrastructure As Code Tutorial. Covers Packer, Terraform, Ansible, Vagrant, Docker, Docker Compose, Kubernetes
Stars: ✭ 1,954 (+9670%)
Mutual labels:  packer, terraform
terraform-aws-ecs-service
Creates an ECS Service.
Stars: ✭ 86 (+330%)
Mutual labels:  ecs, terraform-modules
terraform-aws-iam-user
A Terraform module to create and manage Identity and Access Management (IAM) Users on Amazon Web Services (AWS). https://aws.amazon.com/iam
Stars: ✭ 17 (-15%)
Mutual labels:  terraform-modules, terraform-aws
terraform-aws-alb-ingress
Terraform module to provision an HTTP style ingress rule based on hostname and path for an ALB using target groups
Stars: ✭ 20 (+0%)
Mutual labels:  ecs, terraform-modules
terraform-aws-ecs-web-service
A Terraform module to create an Amazon Web Services (AWS) EC2 Container Service (ECS) service associated with an Application Load Balancer (ALB).
Stars: ✭ 26 (+30%)
Mutual labels:  ecs, terraform-modules
ecs-ansible-packer-terraform-wordpress
Proof of concept: Install wordpress environment using ansible, packer, docker, terraform and AWS.
Stars: ✭ 29 (+45%)
Mutual labels:  packer, ec2
Detectionlab
Automate the creation of a lab environment complete with security tooling and logging best practices
Stars: ✭ 3,237 (+16085%)
Mutual labels:  packer, terraform
terraform-aws-cognito-user-pool
A Terraform module to create and manage Cognito User Pools (Simple and Secure User Sign-Up, Sign-In, and Access Control) on Amazon Web Services (AWS). https://aws.amazon.com/cognito
Stars: ✭ 46 (+130%)
Mutual labels:  terraform-modules, terraform-aws
packer-templates
Packer templates for creating Amazon EC2 images, Proxmox templates and Vagrant boxes
Stars: ✭ 70 (+250%)
Mutual labels:  packer, ec2
Multi Env Deploy
Complete example of deploying complex web apps to AWS using Terraform, Ansible, and Packer
Stars: ✭ 132 (+560%)
Mutual labels:  packer, terraform
Ops Cli
Ops - cli wrapper for Terraform, Ansible, Helmfile and SSH for cloud automation
Stars: ✭ 152 (+660%)
Mutual labels:  packer, terraform
pnzr
pnzr is docker deploy tool for ecs.
Stars: ✭ 31 (+55%)
Mutual labels:  ec2, ecs

Terraform MongoDB Provisioning

The purpose of the module is to simplify the process of provisioning MongoDB on AWS cloud using Terraform. Here, we have listed our three different approaches to achieve that. Each approach has it's pros and cons. Choose the right pick for your requirement.

Approach 1: MongoDB Provisioning using EC2

This approach creates EC2 instance(s) and provision MongoDB using Ansible in the specified VPC and subnet. The mongodb data will be persisted in specified EBS volume. You can provision MongoDB server either in a public subnet or in a private subnet using Bastion host.

MongoDB on EC2 Instances

Pros

  1. Simplified MongoDB provisioner supporting Replication
  2. EC2 instances can be provisioned with newer MongoDB versions and attach to existing EBS data volumes if versions are compatible.
  3. MongoDB can be provisioned in either public subnet or in private subnet using Bastion host.

Cons

  1. Dynamic increase/decrease of number of replica nodes is not yet supported.
  2. No out-of-the-box monitoring support.

Find out more about this approach here

Approach 2: Mongo Provisioning using ECS

This approach creates an ECS task for mongo and runs/manages that task on EC2 instance of provided instance type. This mongo task uses a docker plugin called rexray/ebs to provision and use EBS volume for persistent storage of mongo container. MongoDB on ECS

Pros:

  1. Simplified mongo infra management with just Terraform
  2. Mongo task gets restarted automatically in case of failure
  3. Easy version upgrades with minimal downtime
  4. Auto provision of EBS volume
  5. Built-in ECS monitoring provided in ECS dashboard
  6. Data volume will not be lost unless deleted manually.

Cons:

  1. Rolling deployments are not supported yet due to mongo single instance limitation.
  2. EBS volume size should be chosen carefully because it is not possible to expand it later as it is managed by docker plugin

Find out more about this approach here

Approach 3: Mongo Provisioning using Packer and EC2

This approcah creates pre configured mongo AMIs using packer tool. Then it provisions the mongodb instances from pre configured AMIs in private subnet.

MongoDB on Packer EC2 Instances

Pros:

  1. It creates immutable infrastructure.
  2. Easy version upgrades.
  3. Minimal configuration needed for moving to other cloud providers.
Cons:
  1. Maintaining the pre configured AMIs.

Find out more about this approach here

License

License

Authors

EverestEngineering

License: EverestEngineering

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].