main.tf (30 lines of code) (raw):
resource "terraform_data" "replacement" {
input = var.resource_group_name
}
resource "terraform_data" "provisioner" {
provisioner "local-exec" {
command = "echo Connect ${var.name} to Azure Arc..."
}
provisioner "local-exec" {
command = "powershell.exe -ExecutionPolicy Bypass -NoProfile -File ${path.module}/connect.ps1 -userName ${var.local_admin_user} -password \"${var.local_admin_password}\" -authType ${var.authentication_method} -ip ${var.server_ip} -port ${var.winrm_port} -subscriptionId ${var.subscription_id} -resourceGroupName ${var.resource_group_name} -region ${var.location} -tenant ${var.tenant} -servicePrincipalId ${var.service_principal_id} -servicePrincipalSecret ${var.service_principal_secret} -expandC ${var.expand_c}"
interpreter = ["PowerShell", "-Command"]
}
provisioner "local-exec" {
command = "echo connected ${var.name}"
}
lifecycle {
replace_triggered_by = [terraform_data.replacement]
}
}
data "azurerm_arc_machine" "server" {
name = var.name
resource_group_name = var.resource_group_name
depends_on = [terraform_data.provisioner]
}
resource "azurerm_role_assignment" "machine_role_assign" {
for_each = local.roles
principal_id = data.azurerm_arc_machine.server.identity[0].principal_id
scope = "/subscriptions/${var.subscription_id}/resourceGroups/${var.resource_group_name}"
role_definition_name = each.value
depends_on = [data.azurerm_arc_machine.server]
}