Esse artigo foi originalmente escrito em: http://social.technet.microsoft.com/wiki/contents/articles/how-to-improve-the-virtual-machine-creation-using-a-vm-template.aspx 

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 emNext.

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

Este artigo também está disponível nos seguintes idiomas:

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