Presentation is loading. Please wait.

Presentation is loading. Please wait.

Advanced Azure Template Functions

Similar presentations


Presentation on theme: "Advanced Azure Template Functions"— Presentation transcript:

1 Advanced Azure Template Functions
Awesome Deployment Advanced Azure Template Functions James Bannan Principal Consultant Vibrato

2 Principal Consultant Vibrato ( From Melbourne / Australia Microsoft Azure MVP Pluralsight Author Author: Learn System Center Configuration Manager in a Month of Lunches

3 ARM template function docs
resource-manager/resource-group-template- functions

4 Function types Numeric functions (e.g. addition, subtraction)
String functions (e.g. concat, substring, toLower) Array functions (e.g. concat, length) Deployment functions (e.g. parameters, variables) Resource functions: (e.g. resourceGroup, resourceId)

5 Demo Scenario Subnets Network Security Groups User Defined Routes
Storage account Virtual network Subnets Network Security Groups User Defined Routes Linux VMs

6 Environment Requirements
Fully templated Automated build Resource isolation Utilise deployment state Minimise template size

7 Demo: Storage Deployment

8 resourceGroup() { "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}", "name": "{resourceGroupName}", "location": "{resourceGroupLocation}", "tags": { }, "properties": { "provisioningState": "{status}" } "resources": [ { "name": "[variables('storageAccountName')]", "type": "Microsoft.Storage/storageAccounts", "location": "[resourceGroup().location]", ... } ]

9 uniqueString "storageAccountName": "[concat(demo', uniqueString(resourceGroup().id))]" "storageAccountName": "[concat(demo', abcdefghijklm)]" "storageAccountName": “demoabcdefghijklm"

10 Demo: Network Deployment

11 Arrays as parameters "parameters": { "subnetProperties": {
"value": [ { "name": "subnet-dmz-a", "ipRange": " /24" }, "name": "subnet-dmz-b", "ipRange": " /24" ... ] } "parameters": { "subnetProperties": { "type": "array", }, ... } "subnets": [ { "name": "[parameters('subnetProperties')[0].Name]", "properties": { "addressPrefix": "[parameters('subnetProperties')[0].ipRange]", "networkSecurityGroup": { "id": "[reference('nsgMaster').outputs.nsgIds.value[0]]" }, "routeTable": { "id": "[reference('udrMaster').outputs.udrIds.value[0]]" } ... ]

12 reference "outputs": { "nsgID": { "type": "string",
"nsgIDs": { "type": "array", "value": [ "[reference(concat(parameters('subnetProperties')[0].Name,'-nsg')).outputs.nsgID.value]", "[reference(concat(parameters('subnetProperties')[1].Name,'-nsg')).outputs.nsgID.value]", ... ] } "outputs": { "nsgID": { "type": "string", "value": "[resourceId('Microsoft.Network/networkSecurityGroups',parameters('nsgNa me'))]" } "subnets": [ { "name": "[parameters('subnetProperties')[0].Name]", "properties": { "addressPrefix": "[parameters('subnetProperties')[0].ipRange]", "networkSecurityGroup": { "id": "[reference('nsgMaster').outputs.nsgIds.value[0]]" },

13 Demo: VM Deployment

14 Use array length to determine copy count
copyIndex “count” = 4 "resources": [ { "name": "[concat(‘website-', copyIndex())]", "type": "Microsoft.Web/sites", "copy": { "name": "websitecopy", "count": "[parameters('count')]" }, ... } ] copyIndex() 1 2 3 copyIndex(1) 1 2 3 4 Use array length to determine copy count

15 length { "name": "[parameters('vmProperties')[copyIndex()].vmName]",
"type": "Microsoft.Compute/virtualMachines", "location": “westus2", "apiVersion": " ", "copy": { "name": "vmCopy", "count": "[length(parameters('vmProperties'))]" }, "dependsOn": [ "vmNicCopy" ], ... } "parameters": { "vmProperties": { "value": [ { "vmName": “vm1", "vmSize": "Standard_F1", "vmAdminUsername": "vmAdmin", "subnetName": "subnet-app-a", "ipAddress": " ", "vmImagePublisher": "OpenLogic", "vmImageOffer": "CentOS", "vmOSVersion": "7.3" }, ... ] }

16 Mastering Microsoft Azure Resource Manager
microsoft-azure-resource-manager- mastering

17 Advanced Azure Template Functions
Awesome Deployment Advanced Azure Template Functions James Bannan Principal Consultant Vibrato


Download ppt "Advanced Azure Template Functions"

Similar presentations


Ads by Google