Vytvorenie Azure Windows Virtual Machine z existujúceho obrazu (Azure Resource Manger)


Potreba vytvorenia virtuálneho servera v Azure z existujúceho obrazu môže vzniknúť pri rôznych scenároch, ako napríklad nasadzovanie špecificky nakonfigurovaného VM pre nového zákazníka, obnova servera po výpadku, vytváranie testovacieho/vývojového prostredia, migrácia existujúcej infraštruktúry atď. V rámci tohto článku si ukážeme, ako je možné zachytiť obraz virtuálneho servera spusteného v Microsoft Azure a ako z takéhoto obrazu vytvoriť virtuálny server a to všetko pre VM verzie 2 a teda virtuálne servery vytvorené prostredníctvom Azure Resource Managera (ARM).

Azure Resource Manager

Pred tým, ako popíšem tento postup, by som rád venoval niekoľko slov benefitom, ktoré ARM prináša. Zjednodušene povedané, ARM je model nasadenia Azure služieb, resp. zdrojov (resources), ktorý poskytuje kontajner pre životný cyklus aplikácií a riešení postavených na platforme Azure. Tento kontajner nazývame Resource Group (skupina zdrojov). Jednou z výhod takéhoto zoskupovania zdrojov je zjednodušenie ich správy. Odporúčaním je vytvárať jednu resource group pre všetky zdroje, ktoré tvoria riešenie alebo jeho logickú časť. Príkladom môže byť nasadenie webovej aplikácie, ktorá sa skladá z aplikačného servera, databázového servera a cache databázy, kedy všetky tieto zdroje nasadíme do jednej skupiny zdrojov. Vďaka vytvoreniu takýchto skupín je možné jednoducho sledovať finančné náklady na beh riešení ako celkov a nie len jednotlivých služieb. Na obrázku nižšie je zobrazená resource groupa so zdrojmi vytvorenými pri vytváraní virtuálneho servera.

1

 

Okrem možnosti zoskupovať zdroje, ARM prináša možnosť využívať šablóny (templates) deklarujúce stavbu jednotlivých resource group alebo zdrojov, čo je zrejme jeho najväčšou pridanou hodnotou. Tieto šablóny zjednodušujú znovu nasadenie, ktoré môže byť potrebné napríklad pri vytváraní viacerých vývojových prostredí (testing, staging, sandbox, production …) alebo nasadzovaní single tenant riešenia pre viacerých zákazníkov. Každá šablóna obsahuje:

· Parametre, s ktorými vieme meniť vlastnosti jednotlivých zdrojov, a ktorých hodnoty môžeme meniť dynamicky pred samotným nasadením. Parametre je možné definovať aj v externom súbore parameters.json (v prípade VM, parametrom môže byť napríklad názov, množstvo jadier, veľkosť pamäte atď.)

· Variables, ktoré umožňujú dinamicky zostaviť hodnoty, ktoré sa používajú v rámci šablóny. Premenné sa môžu skladať z funkcií, parametrov a konštánt.

· Definícia zdrojov (služieb) nachádzajúcich sa v Resource group (VM, Storage, Web App, databáza atď…)

· Outputs definujú hodnoty, ktoré budú vrátene po vykonaní nasadenia s využitím šablóny

Medzi zdrojmi môžeme definovať taktiež závislosti, ktoré určujú postupnosť nasadenia (napr. pri VM sa ako prvý musí vytvoriť storage účet, v rámci ktorého bude umiestnený disk s operačným systémom, až potom sa vytvorí samotný server). V prípade, že medzi zdrojmi nie sú definované závislosti, jednotlivé zdroje sa nasadzujú simultánne. Pristúpiť k json šablónam zdrojov vytvorených v modely ARM môžete cez odkaz Automation Script po otvorení Resource group alebo s využitím aplikácie Azure Resource explorer. Viac informácií k ARM a šablónam môžete nájsť v tomto blogu.

Vytvorenie Azure Windows VM z existujúceho obrazu

A teraz sa už presunieme k hlavnej téme tohto článku a síce k téme ako vytvoriť Azure Windows Virtual Machine (VM - virtuálny server) z existujúceho obrazu s využitím Azure Resource Managera (ARM). Scenárov, kedy je vhodné tento proces aplikovať, je mnoho, ale pre väčšinu z nich je hlavným menovateľom znovu použiteľnosť. Konkrétnejšie znovu použiteľnosť toho, čo sme pracne v rámci servera konfigurovali a inštalovali. Typickým príkladom môže byť prostredie pre beh našej aplikácie, ktoré chceme mať k dispozícií vo viacerých replikách. Takéto prostredie môže obsahovať napr. nainštalovaný databázový server, web sever, runtime framework, špeciálne knižnice a utility, ktoré z našej aplikácie voláme. V takomto prípade je výhodné vytvoriť si základný obraz disku, ktorý bude mať všetky tieto prerekvizity pre beh našej aplikácie nakonfigurované. ARM nám následne ponúka možnosť takýto obraz využiť a do veľkej miery automatizovať nasadenie virtuálneho servera. Okrem využitia obrazu disku pri vytváraní VM, nám ARM prostredníctvom parametrov umožňuje jednoducho meniť vlastnosti virtuálneho servera, ktorý bude vytvorený a týmto spôsobom prispôsobiť VM potrebám prostredia (pre neprodukčné prostredie zväčša potrebujeme menej výpočtových zdrojov, ako pre produkciu a pod.). Pod týmito vlastnosťami sú myslené napr. počet jadier, množstvo operačnej pamäte, verejná IP adresa, typ úložiska (štandardné alebo SSD) atď.

Pozn.: Proces zachytenia obrazu disku a následné nasadenie VM s využitím tohto obrazu bude popísané pre virtuálne servery vytvorené prostredníctvom ARM, resp. cez model nasadenia verzie 2. Avšak v prípade, že ste si vytvorili obraz disku virtuálneho servera nasadeného cez Azure Service Management (ASM, model nasadenia verzie 1/classic), na ktorom fungoval pôvodný Azure portál, môžete tento obraz využiť a preskočiť priamo k bodu č. 2 postupu uvedeného nižšie.

Pre replikáciu alebo znovu nasadenie existujúceho virtuálneho servera potrebujeme vykonať nasledujúcu postupnosť krokov:

1. Príprava VM a zachytenie obrazu

2. Prekopírovanie obrazu do storage účtu, v rámci ktorého bude hostovaný disk s operačným systémom pre VM (tento krok je potrebný iba v prípade, že pôvodný a nový virtuálny server nebudú zdieľať storage účet pre OS disky)

3. Vytvorenie ARM json šablóny a úprava parametrov pre nasadenie

4. Nasadenie VM s využitím upravenej šablóny

1. Príprava VM a zachytenie obrazu

Pred vytvorením obrazu disku s OS je potrebné tento disk pripraviť a zgeneralizovať niektoré vlastnosti, ako napríklad názov servera, bezpečnostný identifikátor (SID), vyrovnávaciu pamäť driverov atď. Na túto prípravu je potrebné pripojiť sa na virtuálny server a spustiť nástroj Sysprep.

Upozornenie: Po vykonaní Sysprepu nebude možné ďalej virtuálny server využívať. Ak potrebujete tento virtuálny server používať aj naďalej, odporúčame využiť službu Azure Backup, ktorá vám umožní server odzálohovať pred vykonaním Sysprepu a následne ho obnoviť do pôvodného stavu.

Vykonať Sysprep je možné dvoma spôsobmi a síce spustiť Sysprep utilitu s využitím PowerShell-u alebo otvorením grafického rozhrania. Obe možnosti sú priblížené na obrázkoch nižšie. Ako System Cleanup akciu je potrebné zvoliť Enter System Out-of-Box Experience (OOBE). Zároveň je potrebné zašktrnúť pole Generalize a ako Shutdown Option zvoliť Shutdown. Utilita je umiestnená v systémovom priečinku presnejšie system32/sysprep.

2

Powershell:

& "$Env:SystemRoot\system32\sysprep\sysprep.exe" /generalize /oobe /shutdown

3

 

Po spustení utility sa zobrazí dialóg informujúci o behu SysPrep-u. Po chvíli bude vaša remote session prerušená a virtuálny server sa začne vypínať. Keď sa na virtuálny server pozrieme cez prostredie Azure Portálu, uvidíme pri našom servery oznámenie, že Server je v neznámom stave (Uknown), pričom po chvíli sa toto hlásenie zmení na hlásenie, že server bol zastavený (Stopped), avšak nie dealokovaný. To znamená, že vypnutie bolo vykonané iba softvérovo na strane servera a nie na strane Azure kontroléra. Okrem toho, že sú nám stále účtované poplatky za server, to znamená, že Azure stále udržiava alokáciu disku pre daný virtuálny server. Tým pádom je disk stále "zablokovaný" a nie je k nemu možné pristúpiť. V ďalšom kroku preto potrebujeme tento disk dealokovať, aby  bolo možné zachytiť jeho obraz.

4

 

Dealokácia a zachytenie obrazu

Dealokáciu a zachytenie obrazu môžeme opäť vykonať dvoma spôsobmi a síce s využitím nástroja Azure Resource Explorer, ku ktorému môžete pristúpiť prostredníctvom tejto stránky: https://resources.azure.com/ alebo s využitím PowerShell-u.

Dealokácia a zachytenie obrazu s využitím Azure Resource Explorera:

V prvom kroku je potrebné prihlásiť sa s využitím prihlasovacích údajov, ktoré využívate pre prihlásenie sa do Azure portálu a následne je potrebné vykonať nasledovné kroky:

resource-explorer

1. V rozbaľovacom zozname v ľavej časti obrazovky najskôr vyberte subskripciu a resource group, v ktorej sa nachádza virtuálny server, ktorého obraz chcete zachytiť. Následne rozbaľte sekciu Microsoft.Compute, potom Virtual Machines a kliknite na riadok s názvom vášho servera. (Toto vyhľadanie môžete urýchliť cez vyhľadávacie okno v hornej časti, kde postačí napísať názov vášho virtuálneho servera.)

2. V hornej časti stránky zvoľte možnosť Read/Write, aby bolo možné vykonávať aj zapisovacie operácie

3. Následne kliknite na voľbu Actions (POST, DELETE).

4. Zo zoznamu akcii najskôr kliknite na tlačidlo deallocate a presuňte sa naspäť do Azure portálu k vášmu virtuálnemu serveru. Jeho stav by sa mal zmeniť najskôr na deallocating a následne na Stopped (Deallocated).

5

 

5. Akonáhle sa stav zmení na Stopped (Deallocated), môžeme sa vrátiť do Resource Explorera a pokračovať stlačením tlačidla generalize. Týmto krokom povieme Azure kontroléru, že daný server bol generalizovaný, t.z. bol nad ním spustený Sysprep.

6. Posledným krokom je zachytenie obrazu OS disku. To vykonáme stlačením tlačidla capture. Pred samotným vykonaním zachytenia je nutné nastaviť parametre v textovom poli pod tlačidlom capture a síce prefix pre názov obrazu, resp. Vhd, ktorý sa vytvorí, názov cieľového kontajneru, ktorý sa vytvorí v storage účte, v ktorom sa disk nachádza a true alebo false hodnotu pre parameter overwriteVhds, ktorým určíte, či si želáte prepísať vhd v prípade, že ste zachytenie daného disku už vykonávali. Názov kontajnera a prefix je potrebné uviesť malými písmenami.

Upozornenie: Aktuálne sa kvôli chybe vhd vždy vytvorí v rámci kontajneru System pod adresárovou cestou Microsoft.Compute-Images/nazov kontajnera .

6

 

Dealokácia a zachytenie obrazu s využitím PowerShell-u (verzie 1.0.x):

Pri využití PowerShell skriptu vykonáte totožné akcie, ako pri využití Azure Resource Explorera. Postupnosť príkazov, ktoré je potrebné vykonať je nasledovná:

#Prihlásenie do Azure a výber subskripcie
Login-AzureRmAccount
Select-AzureRmSubscription -SubscriptionId {SubscriptionId}

#Dealokácia virtuálneho servera
Stop-AzureRmVM -ResourceGroupName 'VMResourceGroupName' -Name 'VMName'

#Nastavenie generalizovaného stavu pre virtuálny server
Set-AzureRmVM -ResourceGroupName 'VMResourceGroupName' -Name 'VMName' -Generalized

#Zachytenie obrazu disku do storage účtu
Save-AzureRmVMImage -ResourceGroupName 'VMResourceGroupName' -VMName 'VMName' -DestinationContainerName 'mytemplates' -VHDNamePrefix 'templateprefix'

2. Prekopírovanie obrazu disku medzi storage účtami

Prekopírovanie je nutné spraviť v prípade, že potrebujete vytvoriť nový virtuálny server zo zachyteného obrazu, ktorého OS disk bude vytvorený v rámci iného storage účtu. Azure totiž nepodporuje scenár, pri ktorom by bol obraz disku, z ktorého sa server vytvára a samotný disk nového virtuálneho servera umiestnený v rozdielnom storage účte. Pre toto prekopírovanie sa využije utilita AZ Copy, ktorú si môžete stiahnuť z tejto stránky: https://azure.microsoft.com/en-us/documentation/articles/storage-use-azcopy/. V rámci príkazového riadku je potrebné nastaviť sa do adresára, do ktorého ste si nainštalovali utilitu AZ Copy (typicky sa utilita nainštaluje do adresára C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy) a spustite nasledovný príkaz:

AzCopy /SourceType:blob /Source:https:///{nazov zdrojoveho storage uctu}.blob.core.windows.net/system/Microsoft.Compute/Images/{moj nazov kontajnera} /Dest:https://{nazov cieloveho storage uctu}.blob.core.windows.net/{nazov cieloveho kontajnera} /SourceKey:{Pristupovy kluc k zdrojovemu storage uctu} /DestKey:{pristupovy kluc k cielovemu storage uctu} /Pattern:{nazov zachyteneho vhd suboru}.vhd

Uložte si adresu cieľového umiestnenia vhd súboru. Budete ju potrebovať pri vytváraní nového VM. Prerekvizitou pre prekopírovanie je existencia cieľového storage účtu.

Prístupové kľúče pre storage účet nájdete cez Azure portál, v rámci storage účtu, v sekcii Settings -> Access keys.

3. Vytvorenie ARM json šablóny

Po príprave obrazu disku, ktorý využijeme pri vytvorení nového virtuálneho servera, potrebujeme získať, resp. vytvoriť ARM šablónu, pomocou ktorej budeme nasadzovať nové repliky pôvodného servera. Možnosti máme dve. Prvá možnosť je, že náš nový server postavíme na šablóne získanej z existujúceho servera alebo si postavíme vlastnú ARM šablónu, ktorej základom môže a nemusí byť niektorá zo šablón dostupných v zozname Azure QuickStart Templates. V tomto texte sa zameriame na využitie a upravenie šablóny existujúceho virtuálneho servera. Túto šablónu môžeme najjednoduchšie získať cez Azure portál. Na Azure portály klikneme v ľavom menu na Resource Groups, následne zo zoznamu vyberieme našu resource groupu, v ktorej sa nachádza virtuálny server, ktorý sa chystáme znovu nasadiť. Klikneme na odkaz Automation script a následne Download.

Pozn.: šablónu je možné stiahnuť aj využitím PowerShell, Azure CLI alebo Azure Resource Explorera.

7

 

Pred tým, ako sa do tohto procesu pustíme, ešte jedno malé upozornenie. Šablóna, ktorú sme stiahli obsahuje definíciu všetkých zdrojov, ktoré sa v resource groupe nachádzajú. To znamená, že ak ste v resource groupe vytvorili aj iné služby, je potrebné tieto zo šablóny odstrániť.

V prípade, že pôvodný server bol vytvorený ešte klasickým spôsobom nasadenia, jeho ARM šablóna neexistuje a teda nie je možné využiť ju. V tomto prípade môžete šablónu vytvoriť editovaním Quick Start šablóny, ktorú si môžete stiahnuť z vyššie uvedenej stránky, alebo si môžete vytvoriť nový virtuálny server cez ARM model a následne pristúpiť k jeho šablóne a pokračovať ďalej uvedeným postupom.

Nakoľko šablónu máme v pláne využiť pre nasadenie nových serverov, potrebujeme ju vhodne poupraviť a zgeneralizovať tak, aby bola znovu použiteľná.

Azure spravil základnú parametrizáciu za nás a json súbor, ktorý sme si stiahli, by mal obsahovať zoznam základných parametrov s predvolenými hodnotami (default, okrem admin hesla). Súbor neobsahuje žiadne premenné (variables) a obsahuje definíciu 6 zdrojov nasledovných typov: Microsoft.Compute/virtualMachines, Microsoft.Network/networkInterfaces, Microsoft.Network/networkSecurityGroups, Microsoft.Network/publicIPAddresses, Microsoft.Network/virtualNetworks a Microsoft.Storage/storageAccounts (2x v prípade, že ste pre váš VM aktivovali diagnostiku). Pre každý z týchto resourcov sú definované ich vlastnosti (properties) a nastavenia. Aby sme mohli šablónu využiť pre nasadenie nového VM, potrebujeme zmeniť všetky dosadené hodnoty parametrov tak, aby vyhovovali nášmu nasadeniu. Je vhodné taktiež premenovať názvy parametrov, aby niesli všeobecné meno a nie meno viazané na server, resp. resurce group, z ktorej vznikli. Voliteľne môžete vytvoriť nové parametre, ktorými budete špecifikovať napr. veľkosť nového VM, jeho geografické umiestnenie a pod. Bližšie detaily nájdete už v uvádzanom článku. Zároveň v prípade, že pre niektoré z parametrov nezvolíte predvolenú hodnotu, bude táto hodnota od vás požadovaná počas procesu vytvárania VM. Takýmto spôsobom je možné výsledok nasadenie ovplyvniť aj mimo šablónu, až pri samotnom nasadzovaní. Hodnoty parametrov môžete zmeniť alebo doplniť aj prostredníctvom parameters.json súboru.

Aby sa náš nový virtuálny server vytvoril z pripraveného VHD súboru, je potrebné pozmeniť Storage profile v zdroji typu Microsoft.Compute/virtualMachines. Z poľa storageProfile odstránime pole imageReference a do poľa osDisk pridáme nové pole image, ktoré bude odkazovať na vhd súbor obsahujúci obraz disku, ktorý chceme využiť pri vytváraní nového virtuálneho servera. Výsledok by mal byť nasledovný:

"storageProfile": {
  "osDisk": {
    "name": "[parameters('virtualMachine_name')]",
    "createOption": "FromImage",
    "image": {
      "uri": "[concat('https', '://', parameters('storageAccount_name'), '.blob.core.windows.net', concat('/{nazov kontajnera, do ktoreho ste skopirovali image OS disku}/',parameters('virtualMachine_image_path') ))]"
     },
    "vhd": {
    "uri": "[concat('https', '://', parameters('storageAccount_name'), '.blob.core.windows.net', concat('/{nazov kontajnera kde bude vytvoreny disk pre novy virtualny server}/',parameters('virtualMachine_name'), ".vhd"))]"
    },
    "caching": "ReadWrite",
    "osType": "Windows"
  },
  "dataDisks": []
}

Všimnite si hodnotu kľúča createOption, kde sme hodnotou "FromImage" nastavili, že nový VM bude vytváraný z existujúceho obrazu. Hodnota kľúča Uri v rámci poľa vhd určuje, kde bude vytvorený disk nového VM a hodnota kľúča Uri v rámci poľa image zase určuje adresu, resp. umiestnenie vhd súboru, z ktorého sa VM bude vytvárať. Táto hodnota musí byť totožná s umiestnením, do ktorého ste skopírovali obraz disku pôvodného virtuálneho servera. V našom prípade sme si zadefinovali parameter virtualMachine_image_path.

Celá zovšeobecnená šablóna by mohla vyzerať napríklad takto:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "virtualMachine_adminPassword": {
      "defaultValue": null,
      "type": "SecureString"
    },

    "virtualMachine_name": {
      "defaultValue": null,
      "type": "String"
    },

    "virtualMachine_image_path": {
      "defaultValue": "prefix-imagename.vhd",
      "type": "String"
    },

    "networkInterfaces_name": {
      "defaultValue": "network interface name",
      "type": "String"
    },

    "networkSecurityGroups_nsg_name": {
      "defaultValue": "network security group name",
      "type": "String"
    },

    "publicIPAddresses_ip_name": {
      "defaultValue": "public IP name",
      "type": "String"
     },

    "virtualNetworks_vnet_name": {
      "defaultValue": "virtual network name",
      "type": "String"
    },

    "storageAccount_name": {
      "defaultValue": "new storage account name",
      "type": "String"
    }
  },

  "variables": {},

  "resources": [
  {
    "type": "Microsoft.Compute/virtualMachines",
    "name": "[parameters('virtualMachine_name')]",
    "apiVersion": "2015-06-15",
    "location": "westeurope",

    "properties": {
      "hardwareProfile": {
        "vmSize": "Standard_DS3"
      },

      "storageProfile": {

        "osDisk": {
          "name": "[parameters('virtualMachine_name')]",
          "createOption": "FromImage",

          "image": {
            "uri": "[concat('https', '://', parameters('storageAccount_name'), '.blob.core.windows.net', concat('/{nazov kontajnera do ktoreho ste skopirovali image OS disku}/',parameters('virtualMachine_image_path') ))]"
           },

          "vhd": {
            "uri": "[concat('https', '://', parameters('storageAccount_name'), '.blob.core.windows.net', concat('/{nazov kontajnera kde bude vytvoreny disk pre novy virtualny server}/',parameters('virtualMachine_name'), '.vhd'))]"
          },

          "caching": "ReadWrite",
          "osType": "Windows"
        },

        "dataDisks": []
      },

      "osProfile": {
        "computerName": "[parameters('virtualMachine_name')]",
        "adminUsername": "adminUsername",
    
        "windowsConfiguration": {
          "provisionVMAgent": true,
          "enableAutomaticUpdates": true
         },

        "secrets": [],
        "adminPassword": "[parameters('virtualMachine_adminPassword')]"
      },

      "networkProfile": {
        "networkInterfaces": [
        {
            "id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaces_name'))]"
        }
        ]
      } 
    },

    "resources": [],

    "dependsOn": [
      "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccount_name'))]",
      "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaces_name'))]"
    ]
  },
  {

    "type": "Microsoft.Network/networkInterfaces",
    "name": "[parameters('networkInterfaces_name')]",
    "apiVersion": "2016-03-30",
    "location": "westeurope",

    "properties": {
      "ipConfigurations": [
      {
        "name": "ipconfig1",
        "properties": {
          "privateIPAddress": "10.0.0.6",
          "privateIPAllocationMethod": "Dynamic",
            "publicIPAddress": {
              "id": "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_ip_name'))]"
             },

            "subnet": {
              "id": "[concat(resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_vnet_name')), '/subnets/default')]"
            }
          }
        }
        ],
        "dnsSettings": {
          "dnsServers": []
        },
       "enableIPForwarding": false,
       "networkSecurityGroup": {
         "id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroups_nsg_name'))]"
       }
     },
   
     "resources": [],
     "dependsOn": [
       "[resourceId('Microsoft.Network/publicIPAddresses', parameters('publicIPAddresses_ip_name'))]",
       "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_vnet_name'))]",
       "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroups_nsg_name'))]"
      ]
    },
    {
      "type": "Microsoft.Network/networkSecurityGroups",
      "name": "[parameters('networkSecurityGroups_nsg_name')]",
      "apiVersion": "2016-03-30",
      "location": "westeurope",
    "properties": {
      "securityRules": [
      {
        "name": "default-allow-rdp",
        "properties": {
          "protocol": "TCP",
          "sourcePortRange": "*",
          "destinationPortRange": "3389",
          "sourceAddressPrefix": "*",
          "destinationAddressPrefix": "*",
          "access": "Allow",
          "priority": 1000,
          "direction": "Inbound"
        }
      }
      ]
    },

    "resources": [],
    "dependsOn": []
  },
  {
    "type": "Microsoft.Network/publicIPAddresses",
    "name": "[parameters('publicIPAddresses_ip_name')]",
    "apiVersion": "2016-03-30",
    "location": "westeurope",
    "properties": {
      "publicIPAllocationMethod": "Dynamic",
      "idleTimeoutInMinutes": 4
    },
    "resources": [],
    "dependsOn": []
  },
  {
    "type": "Microsoft.Network/virtualNetworks",
    "name": "[parameters('virtualNetworks_vnet_name')]",
    "apiVersion": "2016-03-30",
    "location": "westeurope",
    "properties": {
      "addressSpace": {
        "addressPrefixes": [
          "10.0.0.0/16"
         ]
      },
      "subnets": [
      {
        "name": "default",
        "properties": {
          "addressPrefix": "10.0.0.0/24"
         }
       }
       ]
    },
    "resources": [],
    "dependsOn": []
  },
  {
    "type": "Microsoft.Storage/storageAccounts",
    "sku": {
      "name": "Premium_LRS",
      "tier": "Premium"
    },
    "kind": "Storage",
    "name": "[parameters('storageAccount_name')]",
    "apiVersion": "2016-01-01",
    "location": "westeurope",
    "tags": {},
    "properties": {},
    "resources": [],
    "dependsOn": []
  }
  ]
}

4. Nasadenie VM s využitím upravenej šablóny

Keď máme pripravenú šablónu, môžeme pristúpiť k nasadeniu VM s jej využitím. V rámci tejto sekcie si ukážeme, ako je možné vykonať toto nasadenie prostredníctvom PowerShell-u.

Nasadenie prostredníctvom PowerShell-u je možné vykonať 4 príkazmi a síce:

#Prihlasenie sa do Azure resource manager prostredia
Add-AzureRmAccount

#Vyber subskripcie
Set-AzureRmContext -SubscriptionID <YourSubscriptionId>

#volitelny krok - tymto prikazom je mozne zvalidovat spravnost sablony, cim mozte predist pripadnemu zlyhaniu pocas nasadenia
Test-AzureRmResourceGroupDeployment -ResourceGroupName <Nazov cielovej resource groupy>-TemplateFile <Cesta k ARM sablone>

#Nasadenie s vyuzitim sablony
New-AzureRmResourceGroupDeployment -Name <Nazov nasadenie> -ResourceGroupName <Nazov cielovej resource groupy> -TemplateFile <Cesta k ARM sablone>

Zvolená resource group by mala byť totožná s resource group, v ktorej ste si vytvorili storage účet, do ktorého ste prekopírovali obraz OS disku. Po spustení posledného príkazu vás PowerShell vyzve na zadanie hodnôt parametrov, ktoré v súbore nemajú uvedenú predvolenú hodnotu. Po uvedení týchto hodnôt sa začne proces nasadzovania, ktorý môže trvať niekoľko minút, pričom výsledok by mal vyzerať nasledovne:

8

 

V tomto článku sme detailne ukázali, ako je možné s využitím Azure Resource Managera vytvoriť repliku servera. Prešli sme procesom vytvorenia obrazu disku, jeho prekopírovaním do storage účtu, v rámci ktorého sa vytvorí aj OS disk novo nasadeného servera, ďalej vytvorením ARM šablóny a nasadením VM s využitím tejto šablóny. Takýto spôsob nám dokáže výrazne uľahčiť vytvorenie VM s predkonfigurovaným prostredím na základe existujúceho obrazu. V rámci tohto postupu však zostal priestor na zvýšenie miery automatizácie a síce na automatické spúšťanie procesu nasadenia VM v Azure. V ďalšom článku si ukážeme, ako toto spustenie automatizovať s využitím služby Visual Studio Team Services.


Comments (0)

Skip to main content