From an admin powershell prompt:
Convert-VHD .\Windows_InsiderPreview_Server_VHDX_17079.vhdx .\Windows_InsiderPreview_Server_VHDX_17079.vhd
Remaining steps are done with Windows Subsystem for Linux
az login
az account set --subscription <redacted>
export rg=plang-insider
export storageacct=planginsider17079
export vhdfilename=Windows_InsiderPreview_Server_VHDX_17079.vhd
az group create --name $rg --location westus2
az storage account create --resource-group $rg --location westus2 --name $storageacct --kind Storage --sku Standard_LRS
az storage container create --account-name $storageacct --name vhds
az storage account keys list --resource-group $rg --account-name $storageacct
export ak="<redacted>"
az storage blob upload --account-name=$storageacct --account-key=$ak --container-name vhds --type page --file /mnt/c/Users/patrick/Downloads/Windows_InsiderPreview_Server_VHDX_17079.vhd --name $vhdfilename
# get URL from this
az storage blob url --account-name $storageacct --account-key $ak --container-name vhds --name $vhdfilename
curl https://releases.hashicorp.com/terraform/0.11.3/terraform_0.11.3_linux_amd64.zip -o terraform_0.11.3_linux_amd64.zip
unzip terraform_0.11.3_linux_amd64.zip
chmod 755 /usr/local/bin/terraform
sudo mv terraform /usr/local/bin
echo image_uri=`az storage blob url --account-name $storageacct --account-key $ak --container-name vhds --name $vhdfilename` >> terraform.tfvars
echo storage_account_name="\"$storageacct\"" >> terraform.tfvars
echo resource_group="\"$rg\"" >> terraform.tfvars
based off this sample https://github.com/terraform-providers/terraform-provider-azurerm/tree/master/examples/vm-from-user-image
terraform init
terraform apply
# this will ask for some data that's missing from variables.tf
I couldn't find a blog that did exactly what I wanted, but these were close: