$ terraform init
$ terraform apply
Always use "_" sign in the resource name (project_name, cluster_name etc). Sign "-" is forbidden!
AWS_REGION
> Name of the AWS region selected by user in AWS console (e.x. "eu-central-1")
AWS_DEFAULT_VPD_CIDR
> Go to AWS Console > Services > VPC > Your VPCs (left menu) > Select 'IPv4 CIDR' field for specific VPC
AWS_DEFAULT_VPC_ID
> Go to AWS Console > Services > VPC > Your VPCs (left menu) > Select 'VPC ID' field for specific VPC
AWS_ACCOUNT_ID
> Go to AWS Console > Select 'My Account' (top dropdown mentu for current user) > Copy 'Account Id'
ATLAS_PUBLIC_KEY
> This is the MongoDB Atlas API public_key which should be created by user > Go to MongoDB Atlas account > Projects > Access Manager > Api Keys tab > Create API Key or select existing
ATLAS_PRIVATE_KEY
> Same section as above
ATLAS_ORGANIZATION_ID
> Go to MongoDB Atlas account > Projects > Settings
ATLAS_CIDR_BLOCK
> Go to MongoDB Atlas account > Projects > Select Project > Network Access > Peering tab > Add Peering Connection > Select aws > copy VPC CIDR
provider_instance_size_name
> M10 - will charge your account, to test it for free select M0
provider_region_name
> location of MongoDB cluster - reference list for AWS
locals {
aws_region = AWS_REGION
aws_default_vpc_cidr = AWS_DEFAULT_VPD_CIDR
aws_default_vpc_id = AWS_DEFAULT_VPC_ID
aws_account_id = AWS_ACCOUNT_ID
atlas_mongo_public_key = ATLAS_PUBLIC_KEY
atlas_mongo_private_key = ATLAS_PRIVATE_KEY
atlas_org_id = ATLAS_ORGANIZATION_ID
atlas_cidr_block = ATLAS_CIDR_BLOCK
}
// PROVIDERS
provider "aws" {
region = local.aws_region
shared_credentials_file = "$HOME/.aws/credentials"
}
provider "mongodbatlas" {
public_key = local.atlas_mongo_public_key
private_key = local.atlas_mongo_private_key
}
// MONGO SETUP
resource "mongodbatlas_project" "project_name" {
name = "project_name"
org_id = local.atlas_org_id
}
resource "mongodbatlas_cluster" "cluster_name" {
project_id = mongodbatlas_project.<project_name>.id
name = "cluster_name"
num_shards = 1
replication_factor = 3
provider_backup_enabled = true
auto_scaling_disk_gb_enabled = true
mongo_db_major_version = "4.2"
provider_name = "AWS"
provider_volume_type = "STANDARD"
provider_instance_size_name = "M10"
provider_region_name = "EU_CENTRAL_1"
}
resource "mongodbatlas_network_container" "container_name" {
project_id = mongodbatlas_project.<project_name>.id
atlas_cidr_block = local.atlas_cidr_block
provider_name = "AWS"
region_name = "EU_CENTRAL_1"
}
resource "mongodbatlas_network_peering" "network_peering_name" {
accepter_region_name = "EU_CENTRAL_1"
project_id = mongodbatlas_project.<project_name>.id
container_id = mongodbatlas_network_container.<container_name>.container_id
provider_name = "AWS"
route_table_cidr_block = local.aws_default_vpc_cidr
vpc_id = local.aws_default_vpc_id
aws_account_id = local.aws_account_id
}
resource "aws_vpc_peering_connection_accepter" "peer_name" {
vpc_peering_connection_id = mongodbatlas_network_peering.<network_peering_name>.connection_id
auto_accept = true
}
$ terraform plan
Correct output: Plan: to add, 0 to change, 0 to destroy = SUCCESS
$ transform apply
$ terraform destroy
Correct output: Plan: 0 to add, 0 to change, to destroy
How I can connect to an actual db cluster from terraform ?