Search code examples
azureneo4jterraformterraform-provider-azureazure-marketplace

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


Script i am using to create Vm from marketplace giving error Error: Code="VMMarketplaceInvalidInput" Message="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"
    }
}

Solution

  • I tried your configuration file in the Azure cloud shell. It did work except I need to run these Powershell commands to accept legal terms before run terraform apply again.

    Get-AzMarketplaceTerms -Publisher neo4j -Product neo4j-enterprise-3_5 -Name neo4j_3_5_13_apoc | Set-AzMarketplaceTerms -Accept -SubscriptionId <subscription-id>
    

    I suggest removing terraform.tfstate terraform.tfstate.backup files and run terraform init, plan, apply again.