Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 在地形中同时创建多个资源_Azure_Terraform - Fatal编程技术网

Azure 在地形中同时创建多个资源

Azure 在地形中同时创建多个资源,azure,terraform,Azure,Terraform,我正在编写我的第一个terraform脚本,我需要创建多个服务主体应用程序。我可以使用以下脚本创建每个脚本: resource "azuread_application" "main" { name = var.name available_to_other_tenants = false identifier_uris = [format("http://%s", var.name)] } resource "azuread_service_principal" "auth"

我正在编写我的第一个terraform脚本,我需要创建多个服务主体应用程序。我可以使用以下脚本创建每个脚本:

resource "azuread_application" "main" {
  name = var.name

  available_to_other_tenants = false

  identifier_uris = [format("http://%s", var.name)]
}

resource "azuread_service_principal" "auth" {
  application_id = "${azuread_application.auth.application_id}"
}

resource "random_string" "password" {
  length = 16
  special = true
  override_special = "/@\" "
}

resource "azuread_service_principal_password" "auth" {
  service_principal_id = "${azuread_service_principal.auth.id}"
  value                = "${random_string.password.result}"
  end_date_relative    = "240h"
}

output "client_secret" {
  value = "${random_string.password.result}"
  description = "Client Secret"
}

provider "azurerm" {
  version = "=1.24.0"
}

data "azurerm_subscription" "primary" {}

data "azurerm_client_config" "current" {}

resource "azurerm_role_assignment" "auth" {
  scope                = "${data.azurerm_subscription.primary.id}"
  role_definition_name = "Reader"
  principal_id         = "${azuread_service_principal.auth.id}"
}
我想创建其中的6个,什么时候对所有6个SP重用此代码是最好的方法

我知道这样的事情是可以做到的:

resource "azuread_application" "auth" {
  name = "${var.sp_names[count.index]}"

  available_to_other_tenants = false

  identifier_uris = [format("http://%s", ${var.sp_names[count.index]})]
  count                = "${length(var.sp_names)}
}

但是如果我这样做,我会将ide传递给
azuread\u service\u principal
block?

要通过Terraform同时创建多个服务主体,您需要使用资源中的
count
属性

下面是示例代码:

resource "azuread_application" "example" {
    count                      = 2
    name                       = "example-${count.index}"

  available_to_other_tenants = false
  oauth2_allow_implicit_flow = true
}

resource "azuread_service_principal" "example" {
    count                         = 2
    application_id                = "${azuread_application.example[count.index].application_id}"
    app_role_assignment_required  = false
}

我看到您还需要为服务主体设置密码和角色分配,然后您还需要在其资源中使用如上所述的
count
属性。

要通过Terraform同时创建多个服务主体,您需要在资源中使用
count
属性

下面是示例代码:

resource "azuread_application" "example" {
    count                      = 2
    name                       = "example-${count.index}"

  available_to_other_tenants = false
  oauth2_allow_implicit_flow = true
}

resource "azuread_service_principal" "example" {
    count                         = 2
    application_id                = "${azuread_application.example[count.index].application_id}"
    app_role_assignment_required  = false
}
我看到您还需要为服务主体设置密码和角色分配,然后您还需要在其资源中使用
count
属性,如上文所述