Как обойти ошибки плагина при развертывании ресурсов Azure с использованием Terraform?

#azure #terraform-provider-azure

Вопрос:

Я получаю следующую ошибку

 │ Error: Plugin error
│
│   with provider["registry.terraform.io/hashicorp/azurerm"],
│   on nsg.tf line 13, in provider "azurerm":
│   13: provider "azurerm" {
│
│ The plugin returned an unexpected error from plugin.(*GRPCProvider).ConfigureProvider: rpc error: code = Internal desc = grpc: error while marshaling: string field
│ contains invalid UTF-8
 

когда я пытаюсь выполнить терраформирование, планируйте следующий код

 # Configure the Microsoft Azure Provider
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=2.74.0"
    }
  }
}

# Configure the Microsoft Azure Provider
provider "azurerm" {
  features {}
}
resource "azurerm_network_security_group" "nsg" {
    name                                = "TestNSG"
    location                            = "East US"
    resource_group_name                 = "TFResourcegroup"
}

resource "azurerm_network_security_rule" "example1" {
    name                                = "Web80"
    priority                            = 1001
    direction                           = "Inbound"
    access                              = "Allow"
    protocol                            = "Tcp"
    source_port_range                   = "*"
    destination_port_range              = "80"
    source_address_prefix               = "*"
    destination_address_prefix          = "*"
    resource_group_name                 = "TFResourcegroup"
    network_security_group_name         = azurerm_network_security_group.nsg.name          
}

resource "azurerm_network_security_rule" "example2" {
    name                                = "Web8080"
    priority                            = 1000
    direction                           = "Inbound"
    access                              = "Deny"
    protocol                            = "Tcp"
    source_port_range                   = "*"
    destination_port_range              = "8080"
    source_address_prefix               = "*"
    destination_address_prefix          = "*"
    resource_group_name                 = "TFResourcegroup"
    network_security_group_name         = azurerm_network_security_group.nsg.name 
}

resource "azurerm_network_security_rule" "example3" {
    name                                = "WebOUT"
    priority                            = 1000
    direction                           = "Outbound"
    access                              = "Deny"
    protocol                            = "Tcp"
    source_port_range                   = "*"
    destination_port_range              = "80"
    source_address_prefix               = "*"
    destination_address_prefix          = "*"
    resource_group_name                 = "TFResourcegroup"
    network_security_group_name         = azurerm_network_security_group.nsg.name 
}
 

это мои версии terraform, поставщика и Azure

 PS C:russnsg> terraform --version
Terraform v1.0.4
on windows_amd64
  provider registry.terraform.io/hashicorp/azurerm v2.74.0
PS C:russnsg> az --version
azure-cli                         2.27.2
 

то, что я пробовал…..

Исследуя в Интернете,.в нем говорится, что это происходит только в Azure CLI на портале Azure. Я пробовал это в коде Visual Studio и Powershell на своей собственной машине. но я получаю те же результаты..Я даже попытался положить https://registry.terraform.io/providers/hashicorp/azurerm/latest в качестве источника вместо обычного «hashicorp/azurerm», но это также приводило к ошибкам

Я действительно застрял…любые рекомендации будут с благодарностью приняты. Я с радостью развертывал ресурсы Azure весь день, используя один и тот же метод…но для некоторых reason..it просто ему это не нравится…

Комментарии:

1. Привет, я вроде как догадался об этом. . Я попытался запустить его в Bash, а не в Powershell, и он работал нормально… кто — нибудь знает, почему это может быть так?

2. Нашли ли вы какие-либо другие решения этой проблемы? У меня та же проблема.

Ответ №1:

Вероятно, это связано с проблемой с вашим сеансом командной строки Az, и вам, вероятно, потребуется снова войти в систему с помощью az login .

Вы можете подтвердить, что это проблема, выполнив команду Az CLI, которая должна взаимодействовать с ресурсами (не только az account show ). Вот как я определил проблему:

$ az список виртуальных машин-g моя группа ресурсов

AADSTS700082: Срок действия токена обновления истек из-за бездействия. Токен был выпущен 2021-06-27T00:13:23.1948087 Z и был неактивен в течение 90.00:00:00.