modules/subscription/main.tf (85 lines of code) (raw):
resource "azapi_resource" "subscription" {
count = var.subscription_alias_enabled ? 1 : 0
type = "Microsoft.Subscription/aliases@2021-10-01"
body = {
properties = {
displayName = var.subscription_display_name
workload = var.subscription_workload
billingScope = var.subscription_billing_scope
additionalProperties = {
managementGroupId = var.subscription_management_group_association_enabled ? "/providers/Microsoft.Management/managementGroups/${var.subscription_management_group_id}" : null
tags = var.subscription_tags
}
}
}
name = var.subscription_alias_name
parent_id = "/"
response_export_values = ["properties.subscriptionId"]
lifecycle {
ignore_changes = [
body,
name
]
}
}
resource "terraform_data" "replacement" {
count = var.subscription_management_group_association_enabled ? 1 : 0
input = local.is_subscription_associated_to_management_group
}
resource "time_sleep" "wait_for_subscription_before_subscription_operations" {
count = var.subscription_alias_enabled ? 1 : 0
create_duration = var.wait_for_subscription_before_subscription_operations.create
destroy_duration = var.wait_for_subscription_before_subscription_operations.destroy
depends_on = [
azapi_resource.subscription
]
}
resource "azapi_resource_action" "subscription_association" {
count = var.subscription_management_group_association_enabled ? 1 : 0
resource_id = "/providers/Microsoft.Management/managementGroups/${var.subscription_management_group_id}/subscriptions/${local.subscription_id}"
type = "Microsoft.Management/managementGroups/subscriptions@2021-04-01"
method = "PUT"
depends_on = [
time_sleep.wait_for_subscription_before_subscription_operations
]
lifecycle {
replace_triggered_by = [terraform_data.replacement]
}
}
resource "azapi_update_resource" "subscription_tags" {
count = var.subscription_alias_enabled || var.subscription_update_existing ? 1 : 0
type = "Microsoft.Resources/tags@2022-09-01"
body = {
properties = {
tags = var.subscription_tags
}
}
resource_id = "/subscriptions/${local.subscription_id}/providers/Microsoft.Resources/tags/default"
depends_on = [
time_sleep.wait_for_subscription_before_subscription_operations
]
}
resource "azapi_resource_action" "subscription_rename" {
count = var.subscription_alias_enabled || var.subscription_update_existing ? 1 : 0
resource_id = "/subscriptions/${local.subscription_id}"
type = "Microsoft.Resources/subscriptions@2021-10-01"
action = "providers/Microsoft.Subscription/rename"
body = {
subscriptionName = var.subscription_display_name
}
method = "POST"
depends_on = [
time_sleep.wait_for_subscription_before_subscription_operations
]
}
resource "azapi_resource_action" "subscription_cancel" {
count = var.subscription_alias_enabled ? 1 : 0
resource_id = "/subscriptions/${local.subscription_id}"
type = "Microsoft.Resources/subscriptions@2021-10-01"
action = "providers/Microsoft.Subscription/cancel"
method = "POST"
when = "destroy"
depends_on = [
time_sleep.wait_for_subscription_before_subscription_operations
]
}