webcamp 2016: devops_Бойко Антон_azure resource manager

23

Upload: webcamp

Post on 13-Apr-2017

75 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager
Page 2: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Azure deployment models

Page 3: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Service model (aka classic)

ApplicationInsight

Sql Database

Mobile App

Storage Web App

Page 4: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Resource model

ResourceGroup

ApplicationInsight

Sql Database

Mobile App

Storage Web App

Page 5: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Resource group

• Group of tightly coupled resources that share a life cycle

• Container for multiple resources

• Resources exist in one resource group

• Resource groups can span regions

• Resource groups can span services

Page 6: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Power of repeatability

ARM templates can

• Ensure idempotency

• Simplify orchestration

• Provide cross-resource configuration and update support

• Integrate in CI/CD pipeline

ARM templates are

• Source file, checked-in

• Specifies resources and dependencies (VMs, Web Apps, DBs) and connections (config, LB sets)

• Input/output with parameters

Page 7: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

ARM templates

• Parameters• user input for the template

• Variables• Data to be reused in the template• No user input• Ex: subnet IP range, resources names with prefixes

• Resources• Models all the resources in the resource group

• Outputs• information to be send from the execution• Ex: DNS name for the created blog

Page 8: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

ARM template parameters

"parameters": {

"EnvironmentName": {

"type": "string",

"minLength": 1,

"maxLength": 10

},

"WebFarmSKU": {

"type": "string",

"allowedValues": [ "Standard", "Premium" ],

"defaultValue": "Standard"

},

"WebFarmWorkersCount": {

"type": "int",

"allowedValues": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ],

"defaultValue": 1

}

}

Page 9: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

ARM template variables

"variables": {

"WebFarmName": "[concat('WebFarm-‘,

parameters('EnvironmentName'),

'-',

uniqueString(resourceGroup().id))]",

"SqlServerName": "[toLower(concat('SqlServer-',

parameters('EnvironmentName'),

'-',

uniqueString(resourceGroup().id)))]",

"CdnProfileName": "[concat('Cdn-',

parameters('EnvironmentName'),

'-',

uniqueString(resourceGroup().id))]",

"StorageName": "[toLower(concat(parameters('EnvironmentName'),

uniqueString(resourceGroup().id)))]"

}

Page 10: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

ARM template resources

"resources": [{

"name": "[variables('WebFarmName')]",

"type": "Microsoft.Web/serverfarms",

"location": "[resourceGroup().location]",

"apiVersion": "2014-06-01",

"dependsOn": [],

"tags": {},

"properties": {

"name": "[variables('WebFarmName')]",

"sku": "[parameters('WebFarmSKU')]",

"workerSize": "[parameters('WebFarmWorkersSize')]",

"numberOfWorkers": "[parameters('WebFarmWorkersCount')]"

}

}]

Page 11: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

ARM template and parameters

Template"parameters": {

},

"variables": {

},

"resources": [

],

"outputs": {

}

Parameters"parameters": {

"EnvironmentName": {

"value": "demo"

},

"SqlServerAdminLogin": {

"value": "master"

},

"SqlServerAdminPassword": {

"value": "Qwerty12!"

}

}

Page 12: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

ARM template execution

Start

App Plan

SqlServer

Web App

Sql DB

Conn. String

Alert Rule

Storage Acc.

Backup policy

End

Page 13: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Moving to ARM

• ARM template can be extracted from any existing resource group via export deployment functionality (currently in preview)

• Resource explorer can be used to find out current resource configuration https://resources.azure.com/

• Quick start templates on GitHub https://github.com/Azure/azure-quickstart-templates

• Ukrainian Azure Community templates on GitHub https://github.com/AzureUA/ARM-Templates

Page 14: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Role based access control

Page 15: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Writing ARMtemplates

Page 16: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Any JSON editor

Page 17: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Visual Studio

Page 18: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Deploying ARM templates

Page 19: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Visual Studio

Page 20: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Azure PowerShell

PS C:\Users\v-anboyk>

New-AzureRmResourceGroupDeployment

-TemplateFile <path-to-template>

-TemplateParameterFile <path-to-params>

-ResourceGroupName <group-name>

-Name <deployment-name>

Page 21: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Azure xPlat CLI

C:\Users\v-anboyk>

azure group deployment create

--template-file <path-to-template>

--parameters-file <path-to-params>

--resource-group <group-name>

--name <deployment-name>

Page 22: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Azure portal

Page 23: WebCamp 2016: DevOps_Бойко Антон_Azure Resource Manager

Demo