Создайте виртуальную машину SQL, используя ошибку бросания терраформ - PullRequest
1 голос
/ 14 июля 2020

Ниже приведен полный код, который я использую для создания виртуальной машины SQL, при создании ресурсов я получаю указанную ниже ошибку, я пытался выполнить отладку путем закрепления

  1. azurerm до указанной версии c,

  2. увеличил лимит квоты подписки для местоположения. Раньше он работал хорошо и внезапно выдавал ошибки.

          #Database Server 1
             provider "azurerm" {
               version = "2.10"
               features {}
             }
    
     resource "azurerm_resource_group" "RG" {
       name     = "resource_db"
       location = var.location
     }
    
     resource "azurerm_virtual_network" "VN" {
       name                = "vnet_db"
       resource_group_name = azurerm_resource_group.RG.name
       location            = azurerm_resource_group.RG.location
       address_space       = ["10.10.0.0/16"]
     }
    
     resource "azurerm_subnet" "DBSN" {
       name                 = "snet_db"
       resource_group_name  = azurerm_resource_group.RG.name
       virtual_network_name = azurerm_virtual_network.VN.name
       address_prefixes       = ["10.10.2.0/24"]
     }
    
     resource "azurerm_public_ip" "DBAZPIP" {
       name                = "pip_db"
       resource_group_name = azurerm_resource_group.RG.name
       location            = azurerm_resource_group.RG.location
       allocation_method   = "Static"
     }
    
     resource "azurerm_network_security_group" "NSGDB" {
         name = "nsg_db"
         location = azurerm_resource_group.RG.location
         resource_group_name = azurerm_resource_group.RG.name
    
      # RDP
       security_rule {
         name                       = "RDP"
         priority                   = 300
         direction                  = "Inbound"
         access                     = "Allow"
         protocol                   = "Tcp"
         source_port_range          = "*"
         destination_port_range     = "3389"
         source_address_prefix      = "*"
         destination_address_prefix = "*"
       }
    
         security_rule {
         name                       = "SQL"
         priority                   = 310
         direction                  = "Inbound"
         access                     = "Allow"
         protocol                   = "Tcp"
         source_port_range          = "*"
         destination_port_range     = "1433"
         source_address_prefix      = "*"
         destination_address_prefix = "*"
       }
    
     }
     resource "azurerm_subnet_network_security_group_association" "mainDB" {
       subnet_id                 = azurerm_subnet.DBSN.id
       network_security_group_id = azurerm_network_security_group.NSGDB.id
     }
    
     resource "azurerm_network_interface" "vmnicprimary" {
       name                    = "nic_db"
       location                = azurerm_resource_group.RG.location
       resource_group_name     = azurerm_resource_group.RG.name
    
       ip_configuration {
         name                                = "ipConfig_db"
         subnet_id                           = azurerm_subnet.DBSN.id
         private_ip_address_allocation       = "Dynamic"
         public_ip_address_id                = azurerm_public_ip.DBAZPIP.id
       }
     }
    
     resource "azurerm_virtual_machine" "DatabaseServer" {
         name = "vm_db"
         location = azurerm_resource_group.RG.location
         resource_group_name = azurerm_resource_group.RG.name
         network_interface_ids = [azurerm_network_interface.vmnicprimary.id,]
         vm_size = "Standard_D4s_v3"
    
         storage_image_reference {
             publisher = "MicrosoftSQLServer"
             offer = "SQL2017-WS2016"
             sku = "Enterprise"
             version = "latest"
         }
    
         storage_os_disk {
             name = "osdisk_db"
             caching = "ReadWrite"
             create_option = "FromImage"
             managed_disk_type = "Premium_LRS"
         }
    
         os_profile {
             computer_name = "compdb"
             admin_username = "vmadmin"
             admin_password = "P@ssW0rd123456"
           }
    
         os_profile_windows_config {
           provision_vm_agent        = true
           enable_automatic_upgrades = true
       }
     }
    
     resource "azurerm_mssql_virtual_machine" "example" {
       virtual_machine_id               = azurerm_virtual_machine.DatabaseServer.id
       sql_license_type                 = "PAYG"
       sql_connectivity_type            = "PUBLIC"
     }
    

Выполнение приведенного выше кода вызывает следующую ошибку:

    Error: retrieving Sql Virtual Machine (Sql Virtual Machine Name "vm_m2m80" / Resource Group "resource_m2m80"): sqlvirtualmachine.SQLVirtualMachinesClient#Get: Failure responding to request: StatusCode=500 -- Original Error: autorest/azure: Service returned an error. Status=500 Code="InternalServerError" Message="An unexpected error occured while processing the request. Tracking ID: '9a1622b0-f7d1-4070-96c0-ca67d66a3522'"
    
      on main.tf line 117, in resource "azurerm_mssql_virtual_machine" "example":
     117: resource "azurerm_mssql_virtual_machine" "example" {

1 Ответ

1 голос
/ 15 июля 2020

TL; DR: исправлено !!

Обновление от Microsoft:

Исправление выпущено

«Надеюсь, это вас хорошо . Мы внутренне подтвердили, что скоро будет исправление для этой проблемы. Я сообщу вам, как только она будет развернута. "

У нас то же самое, но не в каждой сборке, с использованием различных Terraform и Azure Версии API, это начало происходить через два дня go для нас. При попытке импорта указать время ожидания истекло.

Ошибка: чтение Sql Виртуальная машина (Sql Имя виртуальной машины «sqlvmname» / Группа ресурсов «Группа ресурсов»): sqlvirtualmachine .SQLVirtualMachinesClient # Get: Ошибка отправки запроса: StatusCode = 500 - Исходная ошибка: превышен крайний срок контекста

Я считаю, что это проблема API. Мы обратились в службу поддержки Microsoft, и они смогли воспроизвести проблему на этой странице (спасибо :)). Они проводят внутреннюю проверку и привлекают больше ресурсов в Microsoft для проверки. В то же время я не думаю, что что-то можно сделать.

Возможный обходной путь - поскольку это действительно создает ресурс в Azure, может быть, создать его с помощью Terraform, а затем закомментировать ваш код - и поскольку он не в состоянии, он не удалит его. Не очень ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...