Azure частных конечных точек и Terraform - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь создать учетную запись хранения с частной конечной точкой в ​​Azure su bnet.

Я столкнулся с такой проблемой после terraform apply:

Ошибка создания частной конечной точки "dev-pe" (Ресурсная группа "privateendpoint-rg"): network.PrivateEndpointsClient # CreateOrUpdate: Ошибка отправки запроса: StatusCode = 400 - Исходная ошибка: Code = "PrivateEndpointCannotBeCreatedInSubnetThatHasNetworkPoliciesEnable" endd Private Endpoint "Private Endpoint" Private End End "Private end /subscription/00000000-0000-0000-0000-000000000000/resourceGroups/privateendpoint-rg/providers/Microsoft.Network/privateEndpoints/dev-pe не может быть создан в подсети / subscription / 00000000-0000-0000-0000-000000000000 / resourceGroups /privateendpoint-rg/providers/Microsoft.Network/virtualNetworks/dev-vnet/subnets/dev-storage-subnet, так как в ней включены частные сетевые политики конечных точек. " Подробности = []

Как вы можете видеть ниже, я установил enforce_private_link_endpoint_network_policies = false и поиграл с azurem_private_link_service.

Вот мой код:

resource "azurerm_resource_group" "example" {
  name     = "privateendpoint-rg"
  location = var.location
  tags     = local.common_tags
}

resource "azurerm_virtual_network" "example" {
  name                = "${var.environment}-vnet"
  address_space       = ["10.0.0.0/16"]
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  tags                = local.common_tags
}

resource "azurerm_subnet" "storage" {
  name                                           = "${var.environment}-storage-subnet"
  resource_group_name                            = azurerm_resource_group.example.name
  virtual_network_name                           = azurerm_virtual_network.example.name
  address_prefix                                 = "10.0.1.0/24"
  enforce_private_link_endpoint_network_policies = false
  // enforce_private_link_service_network_policies = false
  // service_endpoints                              = ["Microsoft.Storage"]
}  

resource "random_integer" "sa_num" {
  min = 10000
  max = 99999
}

resource "azurerm_storage_account" "example" {
  name                     = "${var.adoit_number}${lower(var.environment)}${random_integer.sa_num.result}"
  resource_group_name       = azurerm_resource_group.example.name
  location                  = azurerm_resource_group.example.location
  account_tier              = "Standard"
  account_replication_type  = "LRS"
  enable_https_traffic_only = true
  tags                      = local.common_tags
}

resource "azurerm_storage_container" "example" {
  name                  = "acctestcont"
  storage_account_name  = azurerm_storage_account.example.name
  container_access_type = "private"
}

resource "azurerm_private_endpoint" "example" {
  name                = "${var.environment}-pe"
  location            = azurerm_resource_group.example.location
  resource_group_name = azurerm_resource_group.example.name
  subnet_id           = azurerm_subnet.storage.id

  private_service_connection {
    name                           = "${var.environment}-psc"
    is_manual_connection           = false
    private_connection_resource_id = azurerm_storage_account.example.id
    subresource_names              = ["blob"]
  }

}

При изменении enforce_private_link_endpoint_network_policies = true я получаю следующую ошибку:

Ошибка создания частной конечной точки "dev-pe" (группа ресурсов "privateendpoint-rg"): network.PrivateEndpointsClient # CreateOrUpdate: Ошибка отправки запроса: StatusCode = 400 - Исходная ошибка: Code = "OperationNotAllowedOnKind" Message = "Операция не разрешена для вида учетной записи Хранилище" Подробности = []

1 Ответ

0 голосов
/ 18 марта 2020

ОК, нашел. Если вы хотите подключить учетную запись хранения к частной конечной точке, учетная запись хранения должна иметь вид StorageV2, который в коде Terraform выглядит следующим образом:

resource "azurerm_storage_account" "example" {
  name                     = "${var.adoit_number}${lower(var.environment)}${random_integer.sa_num.result}"
  resource_group_name       = azurerm_resource_group.example.name
  location                  = azurerm_resource_group.example.location
  account_kind              = "StorageV2"
  account_tier              = "Standard"
  account_replication_type  = "LRS"
  enable_https_traffic_only = true
  tags                      = local.common_tags
}
...