SEブログ

【Azure】Azure PowerShellでAzureVMをデプロイする

こんにちは!

 

Azure PowerShell から AzureVM (仮想マシン)をデプロイしてみました。

Azure ポータルの Web サイトに接続して、仮想マシンデプロイしなくても、管理端末から直接デプロイできるので便利かと思います。

 

参考にしたサイト

 

New-AzureRmVM(リンクをクリックすると別タブで開きます。)

https://docs.microsoft.com/en-us/powershell/module/azurerm.compute/new-azurermvm?view=azurermps-6.1.0 | Microsoft Azure

 

 

スポンサーリンク

概要

 

 

通常、Azure ポータルから 1 から手動で仮想マシンをデプロイする場合は、一般的には以下の手順になるかと思います。

 

 

  1. Azure ポータルの Web サイトに接続
  2. Azure Market Place から デプロイする仮想マシンを選択
  3. GUI でウィザードに沿って、項目に入力したり選択
  4. 仮想マシンをデプロイ

 

 

以下、実際にデプロイしてみた記事がありますので参考までにリンクを貼りました。

 

 

【Azure】Windows10をデプロイする

【Azure】仮想マシンを作成する ← Windows Server 2016 です。

 

 

上記のように Azure ポータルに接続して仮想マシンをデプロイするのではなく、管理端末からデプロイしたい場合があるかと思います。

 

ここでは、Windows Server 2016 DataCentre の仮想マシンを、Azure PowerShell でデプロイしてみます。

 

 

スポンサーリンク

この記事の主な内容

 

 

こんな事が覚えられるかと思います。

 

  • Azure PowerShell から仮想マシンをデプロイする流れ
  • Azure PowerShell のコマンドレット(デプロイ向け)

 

 

Azure PowerShell のコマンドレット

 

 

Get-Credential コマンドレット

 

仮想マシンで使うローカル管理者のクレデンシャルを設定します。

仮想マシンがデプロイされた後に設定したクレデンシャルでサインインします。

 

 

New-AzureRmVm コマンドレット

 

PowerShell で Azure に 仮想マシンを構成 → デプロイする為に使われます。

 

 

スポンサーリンク

Azure PowerShell で仮想マシンをデプロイする

 

 

下準備

 

1. Azure ポータルに接続します。

 

Connect-AzureRmAccount


# 実行結果、以下の認証ウィンドウが表示されます。

 

 

 

Connect-AzureRmAccount

# 認証結果
Account : masashi.soma@soma-engineering.com
SubscriptionName : 従量課金
SubscriptionId : 消してます
TenantId : 消してます
Environment : AzureCloud

 

 

2. サブスクリプション確認します。サブスクリプションが複数ある場合は複数表示されます。

 

Get-AzureRmSubscription


# 実行結果
Name : Azure Pass
Id : 消してます
TenantId : 消してます
State : Enabled

 

 

3. サブスクリプションを変数 $subscr に代入します。

 

$subscr = Get-AzureRmSubscription

# 実行結果

特に画面には表示されないのでエラーが表示されなければ良しとします。

 

 

4. Get-Credential コマンドレットで取得したクレデンシャルの値を $cred 変数に代入します。

 

$cred = Get-Credenatial

# 実行結果
コマンド パイプライン位置 1 のコマンドレット Get-Credential
次のパラメーターに値を指定してください:

実行すると、クレデンシャルの入力画面が表示されます。
ローカル管理者のユーザー名とパスワードを入力します。

 

 

下準備はここまでとします。

 

 

簡易的な方法

 

 

1. New-AzureRmVM コマンドレットを使い、以下のように書いて実行します。これだけです。

 

New-AzureRmVM -Name TestLab -Credential $cred


# 実行結果

警告: New-AzureRmVM: A property of the output of this cmdlet will change in an upcoming breaking change release. The StorageAccoun
tType property for a DataDisk will return Standard_LRS and Premium_LRS

# デプロイが完了しますと、以下が表示されます。
ResourceGroupName : TestLab
Id : /subscriptions/.../resourceGroups/TestLab/providers/Microsoft.Compute/virtualMachines/TestLab
VmId : 0101bd32-0c5b-4883-a315-922b6d24e8ee
Name : TestLab
Type : Microsoft.Compute/virtualMachines
Location : japanwest
Tags : {}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, Secrets}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
FullyQualifiedDomainName : testlab-093bee.japanwest.cloudapp.azure.com

 

 

2. 仮想マシンがデプロイされているか、Azure ポータルで確認できました。

 

 

 

3. ちなみに仮想マシンのサイズは Standard DS1 v2 が自動で選択されるようです。最小構成ですかね。

 

 

 

 

4. RDP でサーバーに接続してみました。

 

 

 

パラメーターを指定して実行する方法

 

 

コマンドレットで個々のパラメーターを設定してデプロイする方法になります。

 

以下、あくまでもサンプルですが書いてみました。流れとしては多分、こんなイメージだと思っていただければと思います。

言い訳かもしれませんが、未だ学習中という事もあり、かなり粗があると思います。

 

コマンドレットについては、以下の Microsoft のサイトで参考にしながら書けるかと思います。

コマンドレットによって設定するパラメーターが異なるかと思います。その辺を見ながら書く感じですかね。

 

コマンドレットの詳細は以下になります。(コマンドレットを Microsoft へのリンクにしてます。)

 

コマンドレット 説明
New-AzureRmVMConfig 仮想マシンの構成の作成します。
Get-AzureRmResourceGroup 使用中のサブスクリプションから Azure リソースグループを取得します。
New-AzureRmVm 指定したパラメーターを使い、仮想マシンを作成します。
Set-AzureRmVMSourceImage 仮想マシンのイメージを特定します。

 

 

VM Images(リンクをクリックすると別タブで開きます。)

https://docs.microsoft.com/en-us/powershell/module/azurerm.compute/?view=azurermps-6.1.0#vm_images | Microsoft Azure

 

 

$cred     = Get-Credential
$rgName   = "TestLab"
$location = "Japan East"
$vmName   = "labvm001"
$vmSize   = "Standard_DS2_v2"
$pubName  = "MicrosoftWindowsServer"
$offer    = "windowsserver"
$skus     = "2016-Datacenter"
$ver      = "latest"

$VirtualMachine = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize

try {

    Get-AzureRmResourceGroup -Name $rgName -Location $location -ErrorAction Stop 
    Write-Host 'リソースグループは存在しています。デプロイは中断します。' -foregroundcolor red

} catch {

    New-AzureRmVm -Name $rgName -Credential $cred -Location $location
    Set-AzureRmVMSourceImage -VM $VirtualMachine -PublisherName $pubName -Offer $offer -Skus $skus -Version $ver

}


# 実行結果

コマンド パイプライン位置 1 のコマンドレット Get-Credential
次のパラメーターに値を指定してください:
警告: New-AzureRmVMConfig: A property of the output of this cmdlet will change in an upcoming breaking change release. The StorageAccountType property for a DataDisk will return Standard_LRS and Premium_LRS
警告: New-AzureRmVM: A property of the output of this cmdlet will change in an upcoming breaking change release. The StorageAccountType property for a DataDisk will return Standard_LRS and Premium_LRS


# デプロイ完了

ResourceGroupName : TestLab
Id : /subscriptions/.../resourceGroups/TestLab/providers/Microsoft.Compute/virtualMachines/TestLab
VmId : 719585c1-51bf-4812-bf01-48e0783cdaea
Name : TestLab
Type : Microsoft.Compute/virtualMachines
Location : japaneast
Tags : {}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, Secrets}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
FullyQualifiedDomainName : testlab-828088.Japan East.cloudapp.azure.com

警告: Set-AzureRmVMSourceImage: A property of the output of this cmdlet will change in an upcoming breaking change release. The StorageAccountType property for a DataDisk will return Standard_LRS and Premium_LRS

Name : labvm001
HardwareProfile : {VmSize}
StorageProfile : {ImageReference}

 

 

 

 

以上になります。

 

いかがでしょうか。このような形で仮想マシンを Azure PowerShell から展開する事に慣れると便利ですね。

どの構成にするかによって使うコマンドレットが異なるように見えるので、その編は使いながら覚えていくようにしたいと思います。

(仕事で使った事がないので、完全に遊びになってます。デプロイしたままにしておくと料金が加算されるので作ったら消すの繰り返しです。汗; )

 

 

では最後までお読みいただきありがとうございました!

 

 

おすすめの本はこちら ↓↓↓