Automatizando a Criação de uma Máquina Virtual Usando Modelos do VMM2012

Introdução


Automatização! Esta é uma palavra que define uma das melhores qualidades do System Center Virtual Machine Manager 2012 (VMM Server).

Em alguns ambientes é normal o uso de políticas para disponibilizar um servidor como pré-requisitos, instalação e configuração e outras que são necessárias, mas que toma muito tempo para serem cumpridas. Para uma instalação básica do Windows, incluindo atualização geralmente precisamos de 4 horas, mas com essas políticas as vezes demoram dias. Compatibilidade e requisitos de hardware, aplicações, configurações e atualizações são alguns exemplos da burocracia que pode existir durante a instalação de um servidor. Uma das funcionalidades do VMM Server para resolver este dilema é a criação de templates (modelos) de máquinas virtuais, possibilitando a instalação e a configuração automatizada de servidores.

Com isso podemos reduzir drasticamente o tempo para liberar um servidor e automatizar todos esses processos de uma forma simples e sem complicação.

No exemplo abaixo você verá como instalar e configurar um servidor de SQL Server usando um desses modelos, possibilitando sua instalação com alguns cliques, além de instalar e configurar aplicações e bancos de dados automaticamente.

Configuração

Para criar um template de máquina virtual (VM), abra o console de administração do VMM Server, clique em Library e depois em Create VM Template. A figura 1 mostra com detalhe esta opção, além de alguns Templates que foram previamente criados.

VMTemplate1

Figura 1 – Create VM Template

Na tela inicial para criação deve-se escolher a origem pela qual o template será criado. É possível usar um template existente, um disco virtual (VHD) com o sistema pré-instalado ou até mesmo uma máquina virtual que está sendo usada em algum host. Na demostração da figura 2 foi selecionado um VHD com a instalação padrão do Windows 2008 R2 e os arquivos de instalação do SQL. Selecione a base que for melhor para seu ambiente e clique em Next.

VMTemplate2

Figura 2 – Template Source

Na tela de identificação escolha um nome e a descrição do template e clique em Next.

VMTemplate3

Figura 3 – Identificação do Template

Na tela Configure Hardware é preciso especificar o hardware, como por exemplo o disco, a rede, memória, processador, etc. Esta configuração será usada cada vez que a VM for criada com base no template. Com a opção de criação e gerenciamento de Private Clouds (nuvem privada) no VMM2012, é preciso escolher em Cloud Compatibility o perfil que o template poderá ser usado. Caso ele não for especificado será impossível usar o modelo para instalação de um servidor que será hospedado na nuvem privada.

VMTemplate4

Figura 4 – Configuração de Hardware

Para ajudar na automatização durante a criação de um template ou até mesmo uma máquina virtual, use a opção de salvar a configuração de Hardware como um Hardware Profile (Perfil de Hardware). A figura 4 mostra alguns perfis que foram criados anteriormente.

VMTemplate4_1

Figura 5 – Perfil de Hardware

Em Configure Operating System poderemos oferecer algumas informações para a instalação automatizada do Windows, como nome do computador, chave de produto, senha de administrador local, sistema operacional, dentre outras. Perceba na figura 6 que o nome do computador acaba com os símbolos “##”. Com isso a nomenclatura será baseada com uma sequência numérica sempre que o template for utilizado. Para criar um nome aleatoriamente use o símbolo “*”.

Nesta tela também existe a opção de salvar essas configurações como Guest Operating System Profile (Perfil de sistema operacional convidado). Esses perfis ajudarão muito na administração diária do VMM. A lista abaixo mostra os perfis que podem ser criados no VMM 2012:

· Application Profiles

· Capability Profiles

· Guest OS Profiles

· Hardware Profiles

· Host Profiles

· SQL Profiles

Escolha as opções de acordo com seu modelo e clique em Next.

VMTemplate5

Figura 6 – Configurações do sistema operacional

No VMM2012 existe uma novidade quando o sistema operacional usado no template é Windows 2008 ou Windows 2008 R2. Durante a instalação do Sistema Operacional (SO) o template automaticamente instalará as Roles (papéis) e/ou Features (funcionalidades) do servidor. Na figura 7 foram selecionados alguns pré-requisitos do SQL Server como exemplo.

VMTemplate5_1

Figura 7 – Roles e Features

Depois da instalação do SO é possível instalar e configurar algumas aplicações através da tela Configure Applications. Ao clicar em Add são exibidas 5 opções:

· SQL data tier Application

· Virtual Application

· Web Application

· Application Script

· Script

Com este novo recurso, após a instalação do DNS por exemplo, é possível especificar um script usando o comando dnscmd para criar e configurar uma zona no servidor; criar e configurar uma aplicação web usando a opção Web Application; etc. Para instalar aplicações virtuais do Server App-V, selecione Virtual Application.

Para o uso de Scripts existem 4 opções, oferecendo a possibilidade de executá-los antes ou após a instalação ou remoção de algo:

· Pre-Install

· Post-Install

· Pre-Uninstall

· Post-Uninstall

Como o template criado neste exemplo será usado para um SQL Server, foram adicionados 4 SQL data tier application, oferecendo assim várias pré-configurações do serviço.

VMTemplate6_1

Figura 8 – Adicionando uma nova aplicação

Na última tela, em Configure SQL Server também poderemos especificar as informações da instalação, configuração e contas de serviços, caso o SQL seja usado como base do template ou for um pré-requisito para outra aplicação. Observe na figura 9 que as opções de instalação como nome, nome e ID da instância e outros detalhes foram previamente configuradas.

VMTemplate7

Figura 9 – Instalação do SQL Server

Na figura 10 são exibidas outras configurações do SQL Server como caminho de instalação, conta de administrador, modo de segurança, etc. Escolha as opções desejadas e clique em Next.

VMTemplate7_1

Figura 10– Configuração do SQL Server

Confira as informações em Summary e clique em Create para finalizar o processo.

VMTemplate8

Figura 11– Summário

Para usar as mesmas opções fornecidas para automatização de criação de templates através do PowerShell, clique em View Script.

Veja abaixo o exemplo de script para criar o mesmo template:

# ——————————————————————————

# New VM Template Wizard Script

# ——————————————————————————

# For additional help on cmdlet usage, type get-help <cmdlet name>

# ——————————————————————————

New-VirtualDVDDrive -VMMServer HVServer.Contoso.msft -JobGroup 284f7982-b2f1-4514-9cfb-72afeb032315 -Bus 1 -LUN 0

New-SCVirtualNetworkAdapter -VMMServer HVServer.Contoso.msft -JobGroup 284f7982-b2f1-4514-9cfb-72afeb032315 -PhysicalAddressType Dynamic

Set-VirtualCOMPort -NoAttach -VMMServer HVServer.Contoso.msft -GuestPort 1 -JobGroup 284f7982-b2f1-4514-9cfb-72afeb032315

Set-VirtualCOMPort -NoAttach -VMMServer HVServer.Contoso.msft -GuestPort 2 -JobGroup 284f7982-b2f1-4514-9cfb-72afeb032315

Set-VirtualFloppyDrive -RunAsynchronously -VMMServer HVServer.Contoso.msft -NoMedia -JobGroup 284f7982-b2f1-4514-9cfb-72afeb032315

$CPUType = Get-CPUType -VMMServer HVServer.Contoso.msft | where {$_.Name -eq "3.60 GHz Xeon (2 MB L2 cache)"}

New-HardwareProfile -VMMServer HVServer.Contoso.msft -Owner "CONTOSO\Administrator" -CPUType $CPUType -Name "Profileb702d92a-9502-45c3-a1c3-a9b13719ed91" -Description "Profile used to create a VM/Template" -CPUCount 1 -MemoryMB 512 -DynamicMemoryEnabled $true -DynamicMemoryMaximumMB 4056 -DynamicMemoryBufferPercentage 20 -MemoryWeight 5000 -VirtualVideoAdapterEnabled $false -ExpectedCPUUtilization 20 -DiskIO 0 -NetworkUtilization 0 -RelativeWeight 100 -HighlyAvailable $false -NumLock $false -BootOrder "CD", "IdeHardDrive", "PxeBoot", "Floppy" -LimitCPUFunctionality $false -LimitCPUForMigration $false -JobGroup 284f7982-b2f1-4514-9cfb-72afeb032315

$profile = Get-SCApplicationProfile -ID "01097427-3f6e-4c6a-97ff-04df3069a6c5"

$sourceProfile = Get-SCApplicationProfile -ID "01097427-3f6e-4c6a-97ff-04df3069a6c5"

$profile = New-SCApplicationProfile -Name "Application Profile ac705e68-5dba-473d-8bc6-5e0b247eead5" -ApplicationProfile $sourceProfile

$profile

$sourceProfile = Get-SCSQLProfile -ID "ed53a278-8c23-4686-aa29-2a2533b32fa3"

$profile = New-SCSQLProfile -Name "SQL Profile b010c8ee-6beb-4d45-86d0-9c7b8ce25401" -SQLProfile $sourceProfile

$profile

$deployment = Get-SCSQLDeployment -SQLProfile $profile -Name "SQL Server"

$saRunAsProfile = Get-SCRunAsProfile -Name "SQLAdminRAP"

$reportingRunAsProfile = Get-SCRunAsProfile -Name "NTSystemRAP"

$agentRunAsProfile = Get-SCRunAsProfile -Name "NTSystemRAP"

$serviceRunAsProfile = Get-SCRunAsProfile -Name "NTSystemRAP"

Set-SCSQLDeployment -SQLDeployment $deployment -Name "SQL Server" -MediaSource "C:\SQLEVAL" -InstanceID "DEFAULTSQL" -InstanceName "MSSQLSERVER" -DeploymentTimeoutSeconds 3600 -SQLAuthenticationType "SQLServerAuthentication" -EnableNamedPipes $true -EnableTCP $true -SQLSysAdminMemberList @("CONTOSO\Administrator") -ProductKey $null

$VirtualHardDisk = Get-SCVirtualHardDisk -VMMServer HVServer.Contoso.msft | where {$_.Location -eq "\\HVServer.Contoso.msft\MSSCVMMLibrary\PetShop Sample Resources\VHD\Windows Server 2008 R2 Enterprise Evaluation.VHD"} | where {$_.HostName -eq "HVServer.Contoso.msft"}

New-VirtualDiskDrive -VMMServer HVServer.Contoso.msft -IDE -Bus 0 -LUN 0 -JobGroup 284f7982-b2f1-4514-9cfb-72afeb032315 -VirtualHardDisk $VirtualHardDisk -VolumeType BootAndSystem

$UserRole = Get-SCUserRole -VMMServer HVServer.Contoso.msft | where {$_.Name -eq "Administrator"}

$HardwareProfile = Get-SCHardwareProfile -VMMServer HVServer.Contoso.msft | where {$_.Name -eq "Profileb702d92a-9502-45c3-a1c3-a9b13719ed91"}

$OperatingSystem = Get-SCOperatingSystem -ID a4959488-a31c-461f-8e9a-5187ef2dfb6b | where {$_.Name -eq "64-bit edition of Windows Server 2008 R2 Enterprise"}

$ApplicationProfile = Get-SCApplicationProfile -VMMServer HVServer.Contoso.msft | where {$_.Name -eq "Application Profile ac705e68-5dba-473d-8bc6-5e0b247eead5"}

$SQLProfile = Get-SCSQLProfile -VMMServer HVServer.Contoso.msft | where {$_.Name -eq "Temporary SQL Profile b010c8ee-6beb-4d45-86d0-9c7b8ce25401"}

New-SCTemplate -Name "SQL Server VM Template" -RunAsynchronously -UserRole $UserRole -Description "SQL Server VM template with a basic SQL configuration with a default instance called MSSQLSERVER." -Owner "CONTOSO\Administrator" -HardwareProfile $HardwareProfile -JobGroup 284f7982-b2f1-4514-9cfb-72afeb032315 -ComputerName "SPSQLServer##" -TimeZone 4 -JoinWorkgroup "WORKGROUP" -AnswerFile $null -OperatingSystem $OperatingSystem -ApplicationProfile $ApplicationProfile -SQLProfile $SQLProfile

Pronto, agora já poderemos criar as máquinas virtuais com base no template. Para isso, clique em VMs and Services e depois em Create Virtual Machine, conforme figura 12.

VMTemplate9

Figura 12– Criando uma nova máquina virtual

Na primeira tela do Wizard, clique em Browse e uma lista com os templates será exibida (figura 13). Escolha o template que foi criado, confirme as opções e clique em Create.

A instalação do Windows, do SQL e das aplicações serão efetuadas sem nenhuma intervenção.

VMTemplate10

Figura 13– Opção para escolher o Template durante a criação da máquina virtual

Confira o resultado abaixo na máquina virtual em produção com o SQL instalado e configurado:

VMTemplate11

Figura 14– Máquina virtual criada com base no template

No próximo artigo você verá como criar um template de serviço.

Leandro Carvalho
MCSA+S+M | MCSE+S | MCTS | MCITP | MCBMSS | MCT | MVP Virtual Machine
MSVirtualization | WordPress | Winsec.org | LinhadeCodigo | MVP Profile
Twitter: LeandroEduardo | LinkedIn: Leandroesc

One thought on “Automatizando a Criação de uma Máquina Virtual Usando Modelos do VMM2012”

  1. Que maravilha Leandro. Isso vai facilitar muito nosso trabalho. Já estamos em fase de comprar com VMM. Estamos preparando um homologação. Não vejo a hora de começar a trabalhar com ele.

    Parabéns pelo post.

    Abraços,

    Alison

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>