Creating Neo4j vm Terraform Message="Creating a virtual machine from Marketplace image requires Plan 信息在请求中

Creating Neo4j vm Terraform Message="Creating a virtual machine from Marketplace image requires Plan information in the request

我用来从市场创建 Vm 的脚本出现错误 错误:代码="VMMarketplaceInvalidInput" 消息="Creating a virtual machine from Marketplace image requires Plan information in the request. VM: '/subscriptions/bc8afca8-32ba-48ac-b418-77de827c2bc1/resourceGroups/NexxeNeo4j-rg/providers/Microsoft.Compute/virtualMachines/NexxeNeo4j4'."

provider "azurerm" {
subscription_id = "**************************************"
   features {}
}
# Use existing resource group 
data "azurerm_resource_group" "gepgroup1" {
    name     = "NexxeNeo4j-rg"
}

# Use Existing virtual network
data "azurerm_virtual_network" "gepnetwork1" {
    name                = "DEVRnD"
    resource_group_name = "RnDdev"
}

# Use Existing subnet
data "azurerm_subnet" "gepsubnet" {
    name                 = "subnet"
    resource_group_name  = "RnDdev"
    virtual_network_name = data.azurerm_virtual_network.gepnetwork1.name
}


# Create public IPs NexxeNeo4j
resource "azurerm_public_ip" "geppublicip2" {
    name                         = "NexxeNeo4jPublicIP"
    location                     = "eastus"
    resource_group_name          = "NexxeNeo4j-rg"
    allocation_method            = "Dynamic"

    tags = {
        environment = "Dev-Direct"
    }
}

# Create network interface NexxeNeo4j2
resource "azurerm_network_interface" "gepnic3" {
    name                      = "NexxeNeo4jNIC"
    location                  = "eastus"
    resource_group_name       = "NexxeNeo4j-rg"


    ip_configuration {
        name                          = "NexxeNeo4jConfiguration"
        subnet_id                     = data.azurerm_subnet.gepsubnet.id
        private_ip_address_allocation = "Dynamic"
        public_ip_address_id          = azurerm_public_ip.geppublicip2.id
    }

    tags = {
        environment = "Dev-Direct"
    }
}

# Create virtual machine NexxeNeo4j
resource "azurerm_virtual_machine" "gepvm4" {
    name                  = "NexxeNeo4j"
    location              = "eastus"
    resource_group_name   = "NexxeNeo4j-rg"
    network_interface_ids = [azurerm_network_interface.gepnic3.id]
    vm_size               = "Standard_DS3_v2" 
        plan {
        name= "neo4j_3_5_13_apoc"
        publisher= "neo4j"
        product= "neo4j-enterprise-3_5"
    }
    storage_os_disk {
        name              = "NexxeNeo4j_OsDisk"
        caching           = "ReadWrite"
        create_option     = "FromImage"
        managed_disk_type = "Premium_LRS"
    }

  storage_image_reference {
        publisher = "neo4j"
        offer     = "neo4j-enterprise-3_5"
        sku       = "neo4j_3_5_13_apoc"
        version   = "3.5.13"
    }


    os_profile {
        computer_name  = "NexxeNeo4j"
        admin_username = "gep"
        admin_password = "Nexxegep#07066"
    }
    os_profile_linux_config {
    disable_password_authentication = false
  }

    tags = {
        environment = "Dev-Direct"
    }
}

我在 Azure 云中试过你的配置文件 shell。它确实有效,除了我需要 运行 这些 Powershell 命令再次接受 运行 terraform apply 之前的法律条款。

Get-AzMarketplaceTerms -Publisher neo4j -Product neo4j-enterprise-3_5 -Name neo4j_3_5_13_apoc | Set-AzMarketplaceTerms -Accept

我建议删除 terraform.tfstate terraform.tfstate.backup 文件和 运行 terraform init,计划,再次申请。

您需要在 Terraform HCL 脚本中添加 PLAN 块。

类似于

resource "azurerm_virtual_machine" "gepvm4" {
# ...
 plan {
    publisher = "neo4j"
    name      = "neo4j-enterprise-3_5"
    product   = "neo4j_3_5_13_apoc"
  }
# ...
}