1.Virtual.Network/AD/main.tf (96 lines of code) (raw):
terraform {
required_version = ">=1.11.0"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>4.27.0"
}
}
backend azurerm {
key = "1.Virtual.Network.AD"
use_azuread_auth = true
}
}
provider azurerm {
features {
}
subscription_id = data.terraform_remote_state.core.outputs.subscriptionId
storage_use_azuread = true
}
variable resourceGroupName {
type = string
}
data terraform_remote_state core {
backend = "local"
config = {
path = "../../0.Core.Foundation/terraform.tfstate"
}
}
data terraform_remote_state network {
backend = "azurerm"
config = {
subscription_id = data.terraform_remote_state.core.outputs.subscriptionId
resource_group_name = data.terraform_remote_state.core.outputs.resourceGroup.name
storage_account_name = data.terraform_remote_state.core.outputs.storage.account.name
container_name = data.terraform_remote_state.core.outputs.storage.containerName.terraformState
key = "1.Virtual.Network"
use_azuread_auth = true
}
}
data azurerm_user_assigned_identity studio {
name = data.terraform_remote_state.core.outputs.managedIdentity.name
resource_group_name = data.terraform_remote_state.core.outputs.resourceGroup.name
}
data azurerm_key_vault studio {
name = data.terraform_remote_state.core.outputs.keyVault.name
resource_group_name = data.terraform_remote_state.core.outputs.resourceGroup.name
}
data azurerm_key_vault_secret admin_username {
name = data.terraform_remote_state.core.outputs.keyVault.secretName.adminUsername
key_vault_id = data.azurerm_key_vault.studio.id
}
data azurerm_key_vault_secret admin_password {
name = data.terraform_remote_state.core.outputs.keyVault.secretName.adminPassword
key_vault_id = data.azurerm_key_vault.studio.id
}
data azurerm_key_vault_secret ssh_key_public {
name = data.terraform_remote_state.core.outputs.keyVault.secretName.sshKeyPublic
key_vault_id = data.azurerm_key_vault.studio.id
}
data azurerm_app_configuration_keys studio {
configuration_store_id = data.terraform_remote_state.core.outputs.appConfig.id
}
data azurerm_virtual_network studio {
name = data.terraform_remote_state.network.outputs.virtualNetwork.default.name
resource_group_name = data.terraform_remote_state.network.outputs.virtualNetwork.default.resourceGroup.name
}
data azurerm_subnet identity {
name = "Identity"
resource_group_name = data.azurerm_virtual_network.studio.resource_group_name
virtual_network_name = data.azurerm_virtual_network.studio.name
}
locals {
activeDirectory = merge(var.activeDirectory, {
machine = merge(var.activeDirectory.machine, {
adminLogin = merge(var.activeDirectory.machine.adminLogin, {
userName = var.activeDirectory.machine.adminLogin.userName != "" ? var.activeDirectory.machine.adminLogin.userName : data.azurerm_key_vault_secret.admin_username.value
userPassword = var.activeDirectory.machine.adminLogin.userPassword != "" ? var.activeDirectory.machine.adminLogin.userPassword : data.azurerm_key_vault_secret.admin_password.value
})
})
})
}
resource azurerm_resource_group active_directory {
name = var.resourceGroupName
location = data.azurerm_virtual_network.studio.location
tags = {
AAA = basename(path.cwd)
}
}
resource azurerm_resource_group active_directory_client {
count = var.activeDirectoryClient.enable ? 1 : 0
name = "${azurerm_resource_group.active_directory.name}.Client"
location = azurerm_resource_group.active_directory.location
tags = {
AAA = basename(path.cwd)
}
}