Skip to content

Instantly share code, notes, and snippets.

@bgelens
Last active March 27, 2018 11:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bgelens/a362abd4aa8397a1fed4dc6d612cae68 to your computer and use it in GitHub Desktop.
Save bgelens/a362abd4aa8397a1fed4dc6d612cae68 to your computer and use it in GitHub Desktop.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"osType": {
"type": "string",
"allowedValues": [
"linux",
"windows"
],
"defaultValue": "linux"
},
"vmName": {
"type": "string",
"minLength": 1
},
"scriptContent": {
"type": "securestring",
"defaultValue": ""
},
"scriptFileUri": {
"type": "string",
"defaultValue": ""
},
"storageAccountName": {
"type": "string",
"defaultValue": ""
},
"storageAccountKey": {
"type": "securestring",
"defaultValue": ""
}
},
"variables": {
"apiVersion": "[providers('Microsoft.Compute', 'virtualMachines/extensions').apiVersions[0]]",
"emptyCommand": {},
"nonEmptyCommand": {
"commandToExecute": "[parameters('scriptContent')]"
},
"nonEmptyCommandStorageAccount": {
"commandToExecute": "[parameters('scriptContent')]",
"storageAccountName": "[parameters('storageAccountName')]",
"storageAccountKey": "[parameters('storageAccountKey')]"
},
"emptyFileUri": {},
"nonEmptyFileUri": {
"fileUris": [
"[parameters('scriptFileUri')]"
]
},
"settings": "[if(greaterOrEquals(length(parameters('scriptFileUri')), 1), variables('nonEmptyFileUri'), variables('emptyFileUri'))]",
"command": "[if(greaterOrEquals(length(parameters('scriptContent')), 1), if(greaterOrEquals(length(parameters('storageAccountName')), 1), variables('nonEmptyCommandStorageAccount'), variables('nonEmptyCommand')), variables('emptyCommand'))]",
"windowsName": "WindowsScriptExtension",
"linuxName": "LinuxScriptExtension",
"extensionName": "[if(equals(parameters('osType'), 'linux'), variables('linuxName'), variables('windowsName'))]",
"windowsPublisher": "Microsoft.Compute",
"linuxPublisher": "Microsoft.Azure.Extensions",
"windowsType": "CustomScriptExtension",
"linuxType": "CustomScript",
"windowsTypeHandlerVersion": "1.9",
"linuxTypeHandlerVersion": "2.0"
},
"resources": [
{
"apiVersion": "[variables('apiVersion')]",
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(parameters('vmName'), '/', variables('extensionName'))]",
"location": "[resourceGroup().location]",
"properties": {
"publisher": "[if(equals(parameters('osType'), 'windows'), variables('windowsPublisher'), variables('linuxPublisher'))]",
"type": "[if(equals(parameters('osType'), 'windows'), variables('windowsType'), variables('linuxType'))]",
"typeHandlerVersion": "[if(equals(parameters('osType'), 'windows'), variables('windowsTypeHandlerVersion'), variables('linuxTypeHandlerVersion'))]",
"autoUpgradeMinorVersion": true,
"settings": "[variables('settings')]",
"protectedSettings": "[variables('command')]"
}
}
],
"outputs": {
"scriptResult": {
"type": "array",
"value": "[if(equals(parameters('osType'), 'windows'),reference(concat('Microsoft.Compute/virtualMachines/', parameters('vmName'), '/extensions/', variables('extensionName'))).instanceView.substatuses,reference(concat('Microsoft.Compute/virtualMachines/', parameters('vmName'), '/extensions/', variables('extensionName'))).instanceView.statuses)]"
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment