Я прочитал статьи в Интернете, но они, кажется, не охватывают эту тему полностью и надеются, что кто-то, кто сделал это, может иметь какое-то направление для меня.Мы настраиваем сложный шаблон Terraform, чтобы удовлетворить наши требования IaC, касающиеся нашего предложения SaaS.При этом мы хотим, чтобы шаблон использовал учетные данные пользователя при запуске, чтобы создать нового участника службы в Azure AD (в этой части у меня нет проблем).Затем в следующей части шаблона мы используем этого участника службы в качестве поставщика.Проблема заключается в том, что он выдает ошибки в плане / применении, потому что субъект службы не существует (он также не существует, так как раздел поставщика услуг еще не запущен).Так есть ли способ, которым я могу это сделать?Создать субъект службы и затем использовать его в псевдониме поставщика, который использует этот субъект службы, не разбивая его на несколько шаблонов?
В конце я хочу, чтобы этот шаблон создал поставщика услуг с использованием разрешений локального пользователя или MSI,назначьте ей подписку RBAC, а затем используйте этого поставщика услуг для создания активов в этой подписке.
main.ts (root)
provider "azurerm" {
alias = "ActiveDirectory"
subscription_id = "${var.subscriptionNucleus}"
}
provider "azurerm" {
alias = "Infrastructure"
subscription_id = "${var.subscriptionInfrastructure}"
}
module "activedirectory" {
providers = { azurerm = "azurerm.ActiveDirectory"
}
source = "./modules/activedirectory"
subscription_id_infrastructure = "${var.subscriptionInfrastructure}"
}
module "infrastructure" {
providers = { azurerm = "azurerm.Infrastructure"}
source = "./modules/infrastructure"
location = "${var.location}"
application_id =
"${module.activedirectory.service_principal_application_id}"
subscription_id = "${var.subscriptionInfrastructure}"
prefix = "${var.prefix}"
}
main.ts (./modules/infrastructure)
data "azurerm_azuread_service_principal" "serviceprincipal" {
application_id = "${var.application_id}"
}
provider "azurerm" {
alias = "InfrastructureSP"
subscription_id = "${var.subscription_id}"
client_id = "${var.application_id}"
client_secret = "secret"
tenant_id =
"${data.azurerm_client_config.clientconfig.tenant_id}"
}