diff --git a/modules/azure/cosmosdb/azure.tf b/modules/azure/cosmosdb/azure.tf new file mode 100644 index 000000000..8ec729873 --- /dev/null +++ b/modules/azure/cosmosdb/azure.tf @@ -0,0 +1,3 @@ +provider "azurerm" { + version = "=1.38.0" +} diff --git a/modules/azure/cosmosdb/backend.tf.azurerm b/modules/azure/cosmosdb/backend.tf.azurerm new file mode 100644 index 000000000..c1fba0933 --- /dev/null +++ b/modules/azure/cosmosdb/backend.tf.azurerm @@ -0,0 +1,8 @@ +terraform { + backend "azurerm" { + resource_group_name = "example-tfstate" + storage_account_name = "exampletfstate" + container_name = "tfstate" + key = "cosmosdb/terraform.tfstate" + } +} diff --git a/modules/azure/cosmosdb/locals.tf b/modules/azure/cosmosdb/locals.tf new file mode 100644 index 000000000..64a50a274 --- /dev/null +++ b/modules/azure/cosmosdb/locals.tf @@ -0,0 +1,10 @@ +locals { + network = { + name = data.terraform_remote_state.network.outputs.network_name + region = data.terraform_remote_state.network.outputs.region + } + + kubernetes = { + node_pool_subnet_id = data.terraform_remote_state.kubernetes.outputs.node_pool_subnet_id + } +} diff --git a/modules/azure/cosmosdb/main.tf b/modules/azure/cosmosdb/main.tf new file mode 100644 index 000000000..744399c66 --- /dev/null +++ b/modules/azure/cosmosdb/main.tf @@ -0,0 +1,7 @@ +module "cosmosdb" { + source = "git::https://github.com/scalar-labs/scalar-terraform.git//modules/azure/cosmosdb?ref=master" + + # Required Variables + network = local.network + kubernetes = local.kubernetes +} diff --git a/modules/azure/cosmosdb/output.tf b/modules/azure/cosmosdb/output.tf new file mode 100644 index 000000000..df7f0a2d6 --- /dev/null +++ b/modules/azure/cosmosdb/output.tf @@ -0,0 +1,11 @@ +output "cosmosdb_account_endpoint" { + value = module.cosmosdb.cosmosdb_account_endpoint +} + +output "cosmosdb_account_primary_master_key" { + value = module.cosmosdb.cosmosdb_account_primary_master_key +} + +output "cosmosdb_account_secondary_master_key" { + value = module.cosmosdb.cosmosdb_account_secondary_master_key +} diff --git a/modules/azure/cosmosdb/remote.tf b/modules/azure/cosmosdb/remote.tf new file mode 100644 index 000000000..8b6ee82ff --- /dev/null +++ b/modules/azure/cosmosdb/remote.tf @@ -0,0 +1,15 @@ +data "terraform_remote_state" "network" { + backend = "local" + + config = { + path = "../network/terraform.tfstate" + } +} + +data "terraform_remote_state" "kubernetes" { + backend = "local" + + config = { + path = "../kubernetes/terraform.tfstate" + } +} diff --git a/modules/azure/cosmosdb/remote.tf.azurerm b/modules/azure/cosmosdb/remote.tf.azurerm new file mode 100644 index 000000000..e4412e6c1 --- /dev/null +++ b/modules/azure/cosmosdb/remote.tf.azurerm @@ -0,0 +1,19 @@ +data "terraform_remote_state" "network" { + backend = "azurerm" + + config = { + storage_account_name = "exampletfstate" + container_name = "tfstate" + key = "network/terraform.tfstate" + } +} + +data "terraform_remote_state" "kubernetes" { + backend = "azurerm" + + config = { + storage_account_name = "exampletfstate" + container_name = "tfstate" + key = "kubernetes/terraform.tfstate" + } +} diff --git a/modules/azure/kubernetes/example.tfvars b/modules/azure/kubernetes/example.tfvars index 3f6f109f6..3a6257c4e 100644 --- a/modules/azure/kubernetes/example.tfvars +++ b/modules/azure/kubernetes/example.tfvars @@ -31,6 +31,8 @@ kubernetes_scalar_apps_pool = { # cluster_auto_scaling_max_count = "6" } +# use_cosmosdb = false + custom_tags = { # "environment" = "example" } diff --git a/modules/azure/kubernetes/main.tf b/modules/azure/kubernetes/main.tf index a4fc2d34d..fd65a86fa 100644 --- a/modules/azure/kubernetes/main.tf +++ b/modules/azure/kubernetes/main.tf @@ -8,5 +8,6 @@ module "kubernetes" { kubernetes_cluster = var.kubernetes_cluster kubernetes_default_node_pool = var.kubernetes_default_node_pool kubernetes_scalar_apps_pool = var.kubernetes_scalar_apps_pool + use_cosmosdb = var.use_cosmosdb custom_tags = var.custom_tags } diff --git a/modules/azure/kubernetes/output.tf b/modules/azure/kubernetes/output.tf index 9c66f3653..28697626d 100644 --- a/modules/azure/kubernetes/output.tf +++ b/modules/azure/kubernetes/output.tf @@ -1,3 +1,7 @@ +output "node_pool_subnet_id" { + value = module.kubernetes.node_pool_subnet_id +} + output "kube_config" { value = module.kubernetes.kube_config description = "kubectl configuration e.g: ~/.kube/config" diff --git a/modules/azure/kubernetes/vars.tf b/modules/azure/kubernetes/vars.tf index 94a092c9e..f08cea873 100644 --- a/modules/azure/kubernetes/vars.tf +++ b/modules/azure/kubernetes/vars.tf @@ -22,6 +22,12 @@ variable "kubernetes_scalar_apps_pool" { description = "Custom definition kubernetes scalar apps node pools, same as default_node_pool" } +variable "use_cosmosdb" { + type = bool + default = false + description = "Whether to use Cosmos DB. If true, a service endpoint for Cosmos DB is enabled." +} + variable "custom_tags" { type = map default = {}