Criando uma imagem gerenciada (Manage image) de uma VM generalizada no Azure, via PowerShell.

Quando nos deparamos com a necessidade de criar um modelo de máquina virtual em massa, ou até mesmo replicar nosso ambiente ou para gerar um modelo padrão de vm, seja com seus aplicativos já instalados ou requisitos para implementar no IaaS sua aplicação, nos deparamos com a necessidade como tinhamos no vmware de template ou hyper-v, com isso a necessidade de ter uma imagem e gerar suas vms, já com sistema operacional e tudo o que necessita já na sua imagem.

No Azure temos como criar estes modelos, estas imagens e usá-las para criar posteriormente suas vms já com o que definiu como modelo.

Temos opções como salvar esta imagem num blob, numa storage (http:\\path\imagem.vhd) e usar para criar sua VM em modo ARM a partir desta imagem, neste caso estamos falando de VM unmanaged, sem disco gerenciado ou podemos ter um script para criar em modo ARM, já para discos gerenciáveis, replicar estas vms já criadas em modo Manage Disk para um modelo de imagem compátivel.

Abaixo temos um procedimento para executar e criar seu modelo de imagem:

Passo 1 – Utilizar o sysprep (% windir% \ system32 \ sysprep) na VM que deseja criar como imagem, com os seguintes requisitos:

sysprep

Ao término temos o processo via portal e powershell se assim escolher.

Ou executar %windir%\system32\sysprep with /generalize , shutdown option na VM.

Com PowerShell, para gerar uma imagem com todos os discos, podemos seguir da seguinte forma:

Login-AzureRmAccount
# Select an Azure subscription
$subscriptionId =
(Get-AzureRmSubscription |
Out-GridView `
-Title “Selecionar sua Assinatura do Azure …” `
-PassThru).SubscriptionId
Select-AzureRmSubscription `
-SubscriptionId $subscriptionId
$vmName = “Nome da VM”
$rgName = “Nome do Resource Group”
$location = “EastUS” # Região
$imageName = “VMImageNome” # Nome da imagem que deseja criar
Stop-AzureRmVM -ResourceGroupName $rgName -Name $vmName -Force
Set-AzureRmVm -ResourceGroupName $rgName -Name $vmName -Generalized
$vm = Get-AzureRmVM -Name $vmName -ResourceGroupName $rgName
$image = New-AzureRmImageConfig -Location $location -SourceVirtualMachineId $vm.ID
New-AzureRmImage -Image $image -ImageName $imageName -ResourceGroupName $rgName

Com PowerShell, podemos seguir para somente o disco operacional da seguinte forma:

Login-AzureRmAccount
# Select an Azure subscription
$subscriptionId =
(Get-AzureRmSubscription |
Out-GridView `
-Title “Select an Azure Subscription …” `
-PassThru).SubscriptionId
Select-AzureRmSubscription `
-SubscriptionId $subscriptionId
$vmName = “Nome da VM”
$rgName = “Nome do Resource Group”
$location = “EastUS” # Região
$imageName = “VMImageNome” # Nome da imagem que deseja criar
$vm = Get-AzureRmVm -Name $vmName -ResourceGroupName $rgName
$diskID = $vm.StorageProfile.OsDisk.ManagedDisk.Id
$imageConfig = New-AzureRmImageConfig -Location $location
$imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsState Generalized -OsType Windows -ManagedDiskId $diskID
New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig

Podemos criar imagem também a partir de um snapshoot mais isso será tema de um próximo post.

Próximo post é como criar sua vm a partir da imagem criada neste post.

Obrigado !

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s