Azure Quickstart Templates offer a convenient way of provisioning resources on Azure using community maintained templates. Today I played with the Simple Ubuntu Linux VM template and deployed it by using both, the Azure Portal and the CLI.
The simplest way to deploy a template is by hitting the “Deploy on Azure” button.
This will pop up the Azure Portal and ask you to put in all required values, like Admin Username
in this case. It also shows you predefined default values and expressions that are evaluated when the
template is deployed (see Location
here).
If you deploy using the command-line, you won’t see the default values. And this tripped me:
$ az group deployment create --resource-group myrg --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-vm-simple-linux/azuredeploy.json
Please provide string value for 'adminUsername' (? for help): jackson
Please provide securestring value for 'adminPasswordOrKey' (? for help):
Please provide string value for 'dnsLabelPrefix' (? for help): jackson
Deployment failed. Correlation ID: XXXXXX. {
"error": {
"code": "InvalidParameter",
"message": "The value of parameter linuxConfiguration.ssh.publicKeys.keyData is invalid.",
"target": "linuxConfiguration.ssh.publicKeys.keyData"
}
}
For adminPasswordOrKey
I had typed in a password. Note that it complains about an invalid key
though. Turns out the (sensible) default is using an SSH key. You can see this from
the Portal screenshot above.
So the trick in this case is to override the default value for adminPasswordOrKey
and set it to
password
(or simply use an SSH key). This is achieved by using --parameters
with
KEY=VALUE
pairs:
--parameters authenticationType=password
or using JSON
--parameters'{"authenticationType": {"value":"password"}}'
Lesson learned.