A few weeks ago I saw a presentation from Trevor Davis about a Power App to generate an ARM template to help with quickly getting a customer started with deploying an AVS Private Cloud. Trevor did a great job making it easy for customers to deploy. Unfortunately the Power App was internal only and could not be accessed by anyone but Microsoft employees. This of course was a blocker for people using it as they would have to work with their Microsoft team to generate the template.
So what else would I do but make a public web interface to do it instead. For the impatient here is the link: https://avs-arm-generator.azurewebsites.net/. I worked with Trevor to identify the process he was using to do the template generation. Turns out the template is just a json file that modified with the inputs from the customer and then hosted.
The repo is located at https://github.com/khensler/AVS-ARM-GENERATOR. It’s a very simple app. The only interesting parts are the azure blob client and URL encoding requirements for the azure portal template. The entire url for the blob must be url encoded including forward slashes.
link = urllib.parse.quote("https://{blobstorename}.blob.core.windows.net/templates/{fname}.json".format(blobstorename=blobstorename, fname=fname), safe='')
safe=''
tells urllib to encode all characters. By default /
is not encoded.