Terraform with azure cosmosdb Mongodb example (2024)

murugan

Posted on

Terraform with azure cosmosdb Mongodb example (2) Terraform with azure cosmosdb Mongodb example (3) Terraform with azure cosmosdb Mongodb example (4) Terraform with azure cosmosdb Mongodb example (5) Terraform with azure cosmosdb Mongodb example (6)

#mongodb #cosmosdb #azure #terraform

Terraform with azure cosmosdb Mongodb example

Azure Cosmos DB is a globally distributed, multi-model database services that allows you to elastically scale in both throughput and storage. You can use document, key-value, columnar and graph databases in Azure Cosmos DB thanks to their multiple API offerings

Creating an Account

Before even creating our account, we’ll need to tell Terraform that we’re deploying our resources to Azure. We can do this by using the Azure Provider. This is used to configure infrastructure in Azure. We’ll also use this provider to tell Terraform which subscription we are using. For that, we’ll need to provide our Subscription Id.

We’ll stick the Subscription Id in a file called variables.tf like so and also add the other related resource name like below

variable "subscription_id" { default = "******-*****-*****" // Add your azure subcription_id here}variable "resource_group_name" { default = "multi-cloud-tooling"}variable "resource_group_location" { default = "centralindia"}variable "cosmos_db_account_name" { default = "cosmosmongodb"}variable "failover_location" { default = "westindia"}

Then create a file called main.tf and write the following code:

terraform { required_version = ">= 0.12.6" required_providers { azurerm = { version = "~> 2.53.0" } }}provider "azurerm" { features {} subscription_id = var.subscription_id skip_provider_registration = true}resource "azurerm_cosmosdb_account" "acc" { name = var.cosmos_db_account_name location = var.resource_group_location resource_group_name = var.resource_group_name offer_type = "Standard" kind = "MongoDB" enable_automatic_failover = true capabilities { name = "EnableMongo" } consistency_policy { consistency_level = "BoundedStaleness" max_interval_in_seconds = 400 max_staleness_prefix = 200000 } geo_location { location = var.failover_location failover_priority = 1 } geo_location { location = var.resource_group_location failover_priority = 0 }}resource "azurerm_cosmosdb_mongo_database" "mongodb" { name = "cosmosmongodb" resource_group_name = azurerm_cosmosdb_account.acc.resource_group_name account_name = azurerm_cosmosdb_account.acc.name throughput = 400}resource "azurerm_cosmosdb_mongo_collection" "coll" { name = "cosmosmongodbcollection" resource_group_name = azurerm_cosmosdb_account.acc.resource_group_name account_name = azurerm_cosmosdb_account.acc.name database_name = azurerm_cosmosdb_mongo_database.mongodb.name default_ttl_seconds = "777" shard_key = "uniqueKey" throughput = 400 lifecycle { ignore_changes = [index] } depends_on = [azurerm_cosmosdb_mongo_database.mongodb]}

Let’s go through this block by block.

First up, we are setting up the terraform version and provider information

In the second block we are setting up the subscription_id, features{} to tell Terraform which Azure subscription I want to deploy my cosmos DB resources.

Then i am creating the azurerm_cosmosdb_account block to set up our Cosmos DB account. I'm giving it a name, assigning it to my resource group, giving it a location, defining the offer type, the kind of Cosmos DB account to create, defining the Consistency level of my Cosmos DB account, enabling geo_location for geo-replication and failover location priorities

Creating Databases

Now that we have our account, I’m going to create a SQL API database within that account. Add the following resource definition to your main.tf file:

resource "azurerm_cosmosdb_mongo_database" "mongodb" { name = "cosmosmongodb" resource_group_name = azurerm_cosmosdb_account.acc.resource_group_name account_name = azurerm_cosmosdb_account.acc.name throughput = 400}

Here, I’m giving my database a name called “cosmosmongodb”. I’m then telling Terraform to deploy my database in the same resource group as my Cosmos DB account as well as assigning the database to my account name.

Creating Collections:

Let’s create a collection under our database. We can do this with the azurerm_cosmosdb_sql_container resource definition. Add the following Terraform code to your main.tf file:

resource "azurerm_cosmosdb_mongo_collection" "coll" { name = "cosmosmongodbcollection" resource_group_name = azurerm_cosmosdb_account.acc.resource_group_name account_name = azurerm_cosmosdb_account.acc.name database_name = azurerm_cosmosdb_mongo_database.mongodb.name default_ttl_seconds = "777" shard_key = "uniqueKey" throughput = 400 lifecycle { ignore_changes = [index] } depends_on = [azurerm_cosmosdb_mongo_database.mongodb]}

In this resource, I’ve given my container a name ('cosmosdbcollection'), assigned it to my resource group, account and database and then given my container a Partition Key of '/CollId'.

Everything has now been set up, so let’s deploy it to Azure!

Deploying to Azure

First, we’ll need to login to Azure via the command line.
If you’ve got it already, run the following command:

az login

When we build infrastructure in Terraform, we need to perform the following three steps:

  1. Terraform Init
  2. Terraform Plan
  3. Terraform Apply

Then create a file called Makefile and write the following code:

.PHONY: initinit: terraform init.PHONY: planplan: terraform plan.PHONY: applyapply: validate terraform apply --auto-approve.PHONY: formatformat: terraform fmt.PHONY: validatevalidate: terraform validate.PHONY: destroydestroy: terraform destroy --auto-approve.PHONY: refreshrefresh: terraform refresh

Run the following commands to create the azure infrastruture.

make init will create a new configuration for our Terraform environment.It will create a directory called .terraform and download any plugins needed for the configuration. It will also configure the back-end for the Terraform state. Each Terraform provider will have it’s own binaries that are separate from Terraform itself, so the init command will download and install these based on what provider we are using

make plan terraform plan also checks our syntax and attempts to connect to our Azure account to check if there are any differences between our Terraform code and our current state.

make apply This command is used to apply our changes. We should run this command in the same directory as the main.tf file.

It will create the resources in azure which we mentioned in the main.tf.

Once done those do the following step to check the created MongoDB working

1.Follow the below screenshot to open the MongoDB shell

Terraform with azure cosmosdb Mongodb example (7)

2.select the database using the below commands

use cosmosmongodb

3.List down the collections

show collections

4.Insert the data to the collections

db.mrfirstcosmosmongodbcollection.insert({"id":1,"uniqueKey":"1"})

5.Find all records

db.mrfirstcosmosmongodbcollection.find()

6.Find the single record

db.mrfirstcosmosmongodbcollection.findOne({"uniqueKey":"1"})

Terraform with azure cosmosdb Mongodb example (2024)

References

Top Articles
The Niles Republican from Niles, Michigan
The Definitive Guide to O‘Reilly Auto Parts Battery Installation - Marketing Scoop
Spasa Parish
Rentals for rent in Maastricht
159R Bus Schedule Pdf
Sallisaw Bin Store
Black Adam Showtimes Near Maya Cinemas Delano
Espn Transfer Portal Basketball
Pollen Levels Richmond
11 Best Sites Like The Chive For Funny Pictures and Memes
Things to do in Wichita Falls on weekends 12-15 September
Craigslist Pets Huntsville Alabama
Paulette Goddard | American Actress, Modern Times, Charlie Chaplin
What's the Difference Between Halal and Haram Meat & Food?
R/Skinwalker
Rugged Gentleman Barber Shop Martinsburg Wv
Jennifer Lenzini Leaving Ktiv
Justified - Streams, Episodenguide und News zur Serie
Epay. Medstarhealth.org
Olde Kegg Bar & Grill Portage Menu
Cubilabras
Half Inning In Which The Home Team Bats Crossword
Amazing Lash Bay Colony
Juego Friv Poki
Dirt Devil Ud70181 Parts Diagram
Truist Bank Open Saturday
Water Leaks in Your Car When It Rains? Common Causes & Fixes
What’s Closing at Disney World? A Complete Guide
New from Simply So Good - Cherry Apricot Slab Pie
Drys Pharmacy
Ohio State Football Wiki
FirstLight Power to Acquire Leading Canadian Renewable Operator and Developer Hydromega Services Inc. - FirstLight
Webmail.unt.edu
2024-25 ITH Season Preview: USC Trojans
Metro By T Mobile Sign In
Restored Republic December 1 2022
12 30 Pacific Time
Jami Lafay Gofundme
Litter-Robot 3 Pinch Contact & Dfi Kit
Greenbrier Bunker Tour Coupon
No Compromise in Maneuverability and Effectiveness
Black Adam Showtimes Near Cinemark Texarkana 14
Teamnet O'reilly Login
U-Haul Hitch Installation / Trailer Hitches for Towing (UPDATED) | RV and Playa
Wie blocke ich einen Bot aus Boardman/USA - sellerforum.de
Infinity Pool Showtimes Near Maya Cinemas Bakersfield
Hooda Math—Games, Features, and Benefits — Mashup Math
Dermpathdiagnostics Com Pay Invoice
How To Use Price Chopper Points At Quiktrip
Maria Butina Bikini
Busted Newspaper Zapata Tx
Latest Posts
Article information

Author: Patricia Veum II

Last Updated:

Views: 6433

Rating: 4.3 / 5 (44 voted)

Reviews: 91% of readers found this page helpful

Author information

Name: Patricia Veum II

Birthday: 1994-12-16

Address: 2064 Little Summit, Goldieton, MS 97651-0862

Phone: +6873952696715

Job: Principal Officer

Hobby: Rafting, Cabaret, Candle making, Jigsaw puzzles, Inline skating, Magic, Graffiti

Introduction: My name is Patricia Veum II, I am a vast, combative, smiling, famous, inexpensive, zealous, sparkling person who loves writing and wants to share my knowledge and understanding with you.