Last active
November 20, 2015 15:39
-
-
Save MasayukiOzawa/7166368a40082f1e43a0 to your computer and use it in GitHub Desktop.
ARM の VM 作成
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# https://msdn.microsoft.com/en-us/library/azure/mt619274.aspx | |
# https://msdn.microsoft.com/en-us/library/azure/mt603754.aspx | |
# http://statemachine.hatenablog.com/entry/2015/07/06/183650 | |
# http://statemachine.hatenablog.com/entry/2015/07/22/183239 | |
# https://azure.microsoft.com/ja-jp/documentation/articles/resource-group-overview/ | |
# https://gist.github.com/nmackenzie/54e9fe4bb34f8d6bce2e | |
$azaccount = Login-AzureRmAccount | |
$subscription = Get-AzureRmSubscription | Out-GridView -OutputMode Single | |
Select-AzureRmSubscription -SubscriptionId $subscription.SubscriptionId | |
# Set-AzureRmContext -SubscriptionId $Subscription.SubscriptionId | |
$location = "japanwest" | |
# リソースグループの作成 | |
$rgroup = "ARMTestRG" | |
New-AzureRmResourceGroup -Location $location -Name $rgroup | |
# ストレージアカウントの作成 | |
$storagename = "armvmteststorage001" | |
New-AzureRmStorageAccount -Location $location -ResourceGroupName $rgroup -Name $storagename -type Standard_LRS | |
# 仮想ネットワークの作成 | |
$vnetname = "vmv2testnw" | |
$addressprefix = "10.0.0.0/16" | |
$subnetname = "vmv2testnw_subnet01" | |
$subnetprefix = "10.0.0.0/24" | |
$vnet = New-AzureRmVirtualNetwork -Location $location -ResourceGroupName $rgroup -Name $vnetname -AddressPrefix $addressprefix | |
Add-AzureRmVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name $subnetname -AddressPrefix $subnetprefix | Set-AzureRmVirtualNetwork | |
# NIC の設定 | |
$interfacename = "vmv2test_vnic01" | |
$subnet = (Get-AzureRmVirtualNetwork -ResourceGroupName $rgroup -Name $vnetname).Subnets[0] | |
New-AzureRmNetworkInterface -Location $location -ResourceGroupName $rgroup -Name $interfacename -Subnet $subnet | |
# VM サイズを設定 | |
$vmname = "v2VM" | |
$vm = New-AzureRmVMConfig -VMName $vmname -VMSize "Standard_A0" | |
# OS 用イメージの選択 | |
$vmimage = Get-AzureRmVMImagePublisher -Location $location | ? PublisherName -Like "*Microsoft*" | ` | |
Get-AzureRmVMImageOffer | ? Offer -eq "WindowsServer"| ` | |
Get-AzureRmVMImageSku | ? Skus -eq "2012-R2-Datacenter" | ` | |
Get-AzureRmVMImage | Sort-Object Version -Descending | select -First 1 | |
$vmimage | Set-AzureRmVMSourceImage -VM $vm | |
# 仮想マシンの設定 | |
$computername = "V2TEST" | |
$admincred = Get-Credential | |
Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $computername -ProvisionVMAgent -EnableAutoUpdate -Credential $admincred | |
# 仮想マシンに NIC を追加 | |
$interface = Get-AzureRmNetworkInterface -ResourceGroupName $rgroup -Name $interfacename | |
Add-AzureRmVMNetworkInterface -VM $vm -NetworkInterface $interface | |
# OS 用ディスクの保存場所の指定 | |
$osdisk = $vmname + "_OSDisk" | |
$storage = Get-AzureRmStorageAccount -ResourceGroupName $rgroup -Name $storagename | |
$osdiskuri = $storage.PrimaryEndpoints.Blob.ToString() + "vhds/" + $osdisk + ".vhd" | |
Set-AzureRmVMOSDisk -VM $vm -Name $osdisk -VhdUri $osdiskuri -CreateOption FromImage | |
# 仮想マシンの作成 | |
New-AzureRmVM -Location $location -ResourceGroupName $rgroup -VM $vm | |
# パブリック IP の設定 | |
$pipname = "vmv2test_pip" | |
New-AzureRmPublicIpAddress -Location $location -ResourceGroupName $rgroup -Name $pipname -AllocationMethod Dynamic #-DomainNameLabel $domainlabel | |
# NIC に PIP を設定 | |
$pip = Get-AzureRmPublicIpAddress -ResourceGroupName $rgroup -Name $pipname | |
$interface.IpConfigurations[0].PublicIpAddress = $pip | |
Set-AzureRmNetworkInterface -NetworkInterface $interface | |
# DNS 名ラベルを設定 | |
$domainlabel = "vmtestaccesspoint" | |
$dnssetting = New-object Microsoft.Azure.Commands.Network.Models.PSPublicIpAddressDnsSettings | |
$dnssetting.DomainNameLabel = $domainlabel | |
$pip = Get-AzureRmPublicIpAddress -ResourceGroupName $rgroup -Name $pipname | |
$pip.DnsSettings = $dnssetting | |
Set-AzureRmPublicIpAddress -PublicIpAddress $pip | |
# NIC から パブリック IP 削除 | |
$interface.IpConfigurations[0].PublicIpAddress = $null | |
Set-AzureRmNetworkInterface -NetworkInterface $interface | |
# ロードバランサーの作成 | |
$lbname = "v2VMLB" | |
New-AzureRmLoadBalancer -Location $location -ResourceGroupName $rgroup -Name $lbname | |
# フロントエンド IP の設定 | |
$lbfipname = "v2VMLB_FIP" | |
$pip = Get-AzureRmPublicIpAddress -ResourceGroupName $rgroup -Name $pipname | |
$fip = New-AzureRmLoadBalancerFrontendIpConfig -Name $lbfipname -PublicIpAddress $pip | |
$lb = Get-AzureRmLoadBalancer -ResourceGroupName $rgroup -Name $lbname | |
$lb.FrontendIpConfigurations = $fip | |
Set-AzureRmLoadBalancer -LoadBalancer $lb | |
# NAT ルールの設定 | |
$rdprule = "v2VMRDP" | |
$lb = Get-AzureRmLoadBalancer -ResourceGroupName $rgroup -Name $lbname | |
$fip = New-AzureRmLoadBalancerFrontendIpConfig -Name $lbfipname -PublicIpAddress $pip | |
$natrule = New-AzureRmLoadBalancerInboundNatRuleConfig -Name $rdprule -FrontendIpConfiguration $fip -Protocol TCP -FrontendPort 33389 -BackendPort 3389 | |
$lb.InboundNatRules = $natrule | |
Set-AzureRmLoadBalancer -LoadBalancer $lb | |
# バックエンドアドレスプールの設定 | |
$bapoolname = "v2VMBApool" | |
$bapool = New-AzureRmLoadBalancerBackendAddressPoolConfig -Name $bapoolname | |
$lb = Get-AzureRmLoadBalancer -ResourceGroupName $rgroup -Name $lbname | |
$lb.BackendAddressPools = $bapool | |
Set-AzureRmLoadBalancer -LoadBalancer $lb | |
# ロードバランサーと NAT ルールに関連づいた NIC に設定変更 | |
$interface = Get-AzureRmNetworkInterface -ResourceGroupName $rgroup -Name $interfacename | |
$lb = Get-AzureRmLoadBalancer -ResourceGroupName $rgroup -Name $lbname | |
$interface.IpConfigurations[0].LoadBalancerBackendAddressPools = $lb.BackendAddressPools | |
$interface.IpConfigurations[0].LoadBalancerInboundNatRules = $lb.InboundNatRules | |
Set-AzureRmNetworkInterface -NetworkInterface $interface | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment