modules/azure_devops/service_connections.tf (46 lines of code) (raw):

resource "azuredevops_serviceendpoint_azurerm" "alz" { for_each = var.environments project_id = local.project_id service_endpoint_name = each.value.service_connection_name description = "Managed by Terraform" service_endpoint_authentication_scheme = local.authentication_scheme_workload_identity_federation credentials { serviceprincipalid = var.managed_identity_client_ids[each.key] } azurerm_spn_tenantid = var.azure_tenant_id azurerm_subscription_id = var.azure_subscription_id azurerm_subscription_name = var.azure_subscription_name } resource "azuredevops_check_approval" "alz" { count = length(var.approvers) == 0 ? 0 : 1 project_id = local.project_id target_resource_id = azuredevops_serviceendpoint_azurerm.alz[local.apply_key].id target_resource_type = "endpoint" requester_can_approve = length(var.approvers) == 1 approvers = [ azuredevops_group.alz_approvers.origin_id ] timeout = 43200 } resource "azuredevops_check_exclusive_lock" "alz" { for_each = var.environments project_id = local.project_id target_resource_id = azuredevops_serviceendpoint_azurerm.alz[each.key].id target_resource_type = "endpoint" timeout = 43200 } resource "azuredevops_check_required_template" "alz" { for_each = var.environments project_id = local.project_id target_resource_id = azuredevops_serviceendpoint_azurerm.alz[each.key].id target_resource_type = "endpoint" dynamic "required_template" { for_each = each.value.service_connection_required_templates content { repository_type = "azuregit" repository_name = "${var.project_name}/${local.repository_name_templates}" repository_ref = "refs/heads/main" template_path = required_template.value } } }