Il seguente sript crea una Vitual Machine in Azure tramite Powershell e Azure Resource Manager (ARM).
Elementi creati dallo script
- Resource Group
- Availability Set
- Virtual Network e subnet
- Network interface e Public IP
Caratteristiche VM
Sistema Operativo: Windows Server 2012 R2 DataCenter
Size: Standard A1
Prerequisiti
Powershell v. 5
Modulo Azure 3.0.0 (Installazione e configurazione di Azure Powershell)
#Variable $rgName = Read-Host -Prompt 'Resource Group name'; $locName = 'West Europe'; #Create Resource Group New-AzureRmResourceGroup -Name $rgName -Location $locName ; #Create Availability Set $asName = Read-Host -Prompt 'Availability Set name' New-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $asName -Location $locName -PlatformUpdateDomainCount 2 -PlatformFaultDomainCount 2 $AvID = (Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $AsName).id #Create subnet $newSubnetParams = @{ 'Name' = Read-Host -Prompt 'Subnet name' 'AddressPrefix' = '10.0.0.0/24' } $subnet = New-AzureRmVirtualNetworkSubnetConfig @newSubnetParams #Create VirtualNet $newVNetParams = @{ 'Name' = Read-Host -Prompt 'Network Name' 'ResourceGroupName' = $rgName 'Location' = $locName 'AddressPrefix' = '10.0.0.0/16' } $vNet = New-AzureRmVirtualNetwork @newVNetParams -Subnet $subnet #Create Storage Account $newStorageAcctParams = @{ 'Name' = Read-Host -Prompt 'Storage Account name (lowercase)' 'ResourceGroupName' = $rgName 'Type' = 'Standard_LRS' 'Location' = $locName } $storageAccount = New-AzureRmStorageAccount @newStorageAcctParams #Create Public IP $newPublicIpParams = @{ 'Name' = Read-Host -Prompt 'Label Public IP' 'ResourceGroupName' = $rgName 'AllocationMethod' = 'Dynamic' ## Dynamic or Static 'DomainNameLabel' = Read-Host -Prompt 'DNS name' 'Location' = $locName } $publicIp = New-AzureRmPublicIpAddress @newPublicIpParams #Create NIC $newVNicParams = @{ 'Name' = Read-Host -Prompt 'NIC Name' 'ResourceGroupName' = $rgName 'Location' = $locName } $vNic = New-AzureRmNetworkInterface @newVNicParams -SubnetId $vNet.Subnets[0].Id -PublicIpAddressId $publicIp.Id #Config VM - General $newConfigParams = @{ 'VMName' = Read-Host -Prompt 'VM name' 'VMSize' = 'Standard_A1' 'AvailabilitySetId' = $AvID } $vmConfig = New-AzureRmVMConfig @newConfigParams #Config VM - Operating System $newVmOsParams = @{ 'Windows' = $true 'ComputerName' = $newConfigParams.VmName 'Credential' = (Get-Credential -Message 'Type the name and password of the local administrator account.') 'ProvisionVMAgent' = $true 'EnableAutoUpdate' = $true } $vm = Set-AzureRmVMOperatingSystem @newVmOsParams -VM $vmConfig #Config VM - Image $newSourceImageParams = @{ 'PublisherName' = 'MicrosoftWindowsServer' 'Version' = 'latest' 'Skus' = '2012-R2-Datacenter' } $offer = Get-AzureRmVMImageOffer -Location $locName -PublisherName MicrosoftWindowsServer $vm = Set-AzureRmVMSourceImage @newSourceImageParams -VM $vm -Offer $offer.Offer #Attach NIC to VM $vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $vNic.Id #Config VM - Disk $Saname = $newStorageAcctParams.name $VmName = $newConfigParams.VmName $osDiskName = $vmName+'_os' $osDiskUri = 'https://'+$saname+'.blob.core.windows.net/vhds/'+$osDiskName+'.vhd' $newOsDiskParams = @{ 'Name' = $osDiskName 'CreateOption' = 'fromImage' } $vm = Set-AzureRmVMOSDisk @newOsDiskParams -VM $vm -VhdUri $osDiskUri #Create Vm New-AzureRmVM -VM $vm -ResourceGroupName $rgName -Location $locName
Disclaimer: Nessuna garanzia è fornita con questo script. Lo scrivente non è responsabile di qualunque danno possa eventualmente derivarne – lo utilizzate a vostro rischio.
Liked this post? Follow this blog to get more.