E’ un tema un po’ spinoso, e fino a poco tempo fa non completamente automatizzabile. Me lo segno che a oggi si fa ancora fatica a trovare questi link.
Per poter creare una VM di terze parti dal Marketplace di Azure da Powershell, CLI o SDK (REST o nativi, .NET, Java, etc…) bisogna aver precedentemente accettato la licenza. Fino a poco tempo fa questo era fattibile solo dal portale, creando a mano la prima VM o accettando esplicitamente la licenza: https://azure.microsoft.com/en-us/blog/working-with-marketplace-images-on-azure-resource-manager/.
Ora invece possiamo farlo anche tramite API REST (https://blogs.msdn.microsoft.com/arsen/2017/10/02/azure-marketplace-api-to-programmatically-review-and-accept-publisher-agreementeula/), PowerShell (https://docs.microsoft.com/en-us/powershell/module/azurerm.marketplaceordering/set-azurermmarketplaceterms?view=azurermps-5.1.1) o anche tramite SDK nativo per .NET (https://www.nuget.org/packages/Microsoft.Azure.Management.MarketplaceOrdering).
A questo punto possiamo elencare le VM disponibili, creare le risorse necessarie, accettare la licenza e creare la VM, il tutto completamente da codice. Il tutto anche da PowerShell e da Azure CLI.
Ricordatevi che il PurchasePlan è obbligatorio in caso di macchine terze, e che tutte le informazioni sono case sensitive e devono corrispondere a quelle dell'accettazione della licenza.
p.s. il tutto funziona anche da ARM template, basta accettare la licenza da PowerShell e indicare il Purchase Plan nel template ARM.