Skip to content

Instantly share code, notes, and snippets.

@MasayukiOzawa
Last active November 20, 2015 15:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MasayukiOzawa/7166368a40082f1e43a0 to your computer and use it in GitHub Desktop.
Save MasayukiOzawa/7166368a40082f1e43a0 to your computer and use it in GitHub Desktop.
ARM の VM 作成
# 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