Azure PowerShell で仮想マシンを作成する
このチュートリアルでは、Azure PowerShell を使用した仮想マシンの設定に関連するすべての手順について学習します。 チュートリアルでは、出力クエリ、Azure リソースの再利用、およびリソースのクリーンアップについても説明します。
これは、Azure Cloud Shell によって提供される対話型チュートリアルです。また、ローカルに Azure PowerShell をインストールすることもできます。
チュートリアルのテキストを Azure Cloud Shell に貼り付けるには、Ctrl + Shift + V キー (macOS の場合は cmd-v shift) を使用します。
サインイン
Azure PowerShell のローカル インストールを使用している場合は、最初にサインインしてから、他の手順を実行します。
Connect-AzAccount
ご使用の端末に表示される手順に従って、サインイン プロセスを完了してください。
リソース グループを作成する
Azure では、すべてのリソースがリソース管理グループに割り当てられます。 リソース グループではリソースを論理グループに分類できるため、コレクションとして操作しやすくなります。
このチュートリアルでは、作成されたすべてのリソースが、TutorialResources
という名前の 1 つのグループに割り当てられます。
New-AzResourceGroup -Name TutorialResources -Location eastus
ResourceGroupName : TutorialResources
Location : eastus
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/TutorialResources
VM の管理者資格情報の作成
新しい仮想マシンを作成する前に、Windows VM の管理者アカウントのユーザー名とパスワードを含む資格情報オブジェクトを作成する必要があります。
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
メッセージが表示されたら、ユーザー名とパスワードを入力します。 結果として得られる資格情報オブジェクトは、次の手順でパラメーターとして渡されます。
Windows PowerShell credential request.
Enter a username and password for the virtual machine.
User: tutorAdmin
Password for user tutorAdmin: *********
仮想マシンの作成
Azure の仮想マシンには依存関係が多数含まれます。 Azure PowerShell では、指定したコマンドライン引数に基づいてこのようなリソースが自動的に作成されます。 読みやすくするために、PowerShell スプラッティングを使用して Azure PowerShell コマンドレットにパラメーターを渡します。
Windows を実行する新しい仮想マシンを作成します。
$vmParams = @{
ResourceGroupName = 'TutorialResources'
Name = 'TutorialVM1'
Location = 'eastus'
ImageName = 'Win2016Datacenter'
PublicIpAddressName = 'tutorialPublicIp'
Credential = $cred
OpenPorts = 3389
Size = 'Standard_D2s_v3'
}
$newVM1 = New-AzVM @vmParams
VM が作成されるとき、使用されているパラメーター値と、作成中の Azure リソースが表示されます。 PowerShell では、次のように進行状況バーが表示されます。
Creating Azure resources
39% \
[ooooooooooooooooooooooooooooooooooo ]
Creating TutorialVM1 virtual machine.
VM の準備ができたら、Azure Portal で、または $newVM1
変数を調べることによって、結果を表示できます。
$newVM1
ResourceGroupName : TutorialResources
Id : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/TutorialResources/providers/Microsoft.Compute/virtualMachines/TutorialVM1
VmId : 00000000-0000-0000-0000-000000000000
Name : TutorialVM1
Type : Microsoft.Compute/virtualMachines
Location : eastus
Tags : {}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, Secrets}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
中かっこ内に表示されているプロパティ値は、入れ子になったオブジェクトです。 次の手順で、これらの入れ子になったオブジェクトの特定の値を表示する方法を説明します。
クエリでの VM 情報の取得
先ほど作成した VM から、より詳細な情報をいくつか取得してみましょう。 この例では、VM の名前と、作成した管理者アカウントを確認します。
$newVM1.OSProfile | Select-Object -Property ComputerName, AdminUserName
ComputerName AdminUsername
------------ -------------
TutorialVM1 tutorialAdmin
他の Azure PowerShell コマンドを使用して、ネットワーク構成に関する個別の情報を取得することができます。
$newVM1 | Get-AzNetworkInterface |
Select-Object -ExpandProperty IpConfigurations |
Select-Object -Property Name, PrivateIpAddress
この例では、PowerShell のパイプラインを使用して、$newVM1 オブジェクトを Get-AzNetworkInterface
コマンドレットに送信しています。 結果として得られるネットワーク インターフェイス オブジェクトから、入れ子になった IpConfigurations オブジェクトを選択しています。 IpConfigurations オブジェクトから Name プロパティと PrivateIpAddress プロパティを選択しています。
Name PrivateIpAddress
---- ----------------
TutorialVM1 192.168.1.4
VM が実行されていることを確認するには、リモート デスクトップ経由で接続する必要があります。 そのために、パブリック IP アドレスを知っている必要があります。
$publicIp = Get-AzPublicIpAddress -Name tutorialPublicIp -ResourceGroupName TutorialResources
$publicIp |
Select-Object -Property Name, IpAddress, @{label='FQDN';expression={$_.DnsSettings.Fqdn}}
この例では、Get-AzPublicIpAddress
を使用して、$publicIp
変数に結果を格納しています。 この変数からプロパティを選択し、式を使用して、入れ子になった Fqdn プロパティを取得しています。
Name IpAddress FQDN
---- --------- ----
tutorialPublicIp <PUBLIC_IP_ADDRESS> tutorialvm1-8a0999.eastus.cloudapp.azure.com
ローカル コンピューターからリモート デスクトップ経由で次のコマンドを実行して、VM に接続できます。
mstsc.exe /v $publicIp.IpAddress
オブジェクトのプロパティに対するクエリ実行の詳細については、「Azure リソースに対するクエリ」を参照してください。
既存のサブネットでの新しい VM の作成
2 番目の VM では既存のサブネットを使用します。
$vm2Params = @{
ResourceGroupName = 'TutorialResources'
Name = 'TutorialVM2'
ImageName = 'Win2016Datacenter'
VirtualNetworkName = 'TutorialVM1'
SubnetName = 'TutorialVM1'
PublicIpAddressName = 'tutorialPublicIp2'
Credential = $cred
OpenPorts = 3389
}
$newVM2 = New-AzVM @vm2Params
$newVM2
ResourceGroupName : TutorialResources
Id : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/TutorialResources/providers/Microsoft.Compute/virtualMachines/TutorialVM2
VmId : 00000000-0000-0000-0000-000000000000
Name : TutorialVM2
Type : Microsoft.Compute/virtualMachines
Location : eastus
Tags : {}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, Secrets}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
FullyQualifiedDomainName : tutorialvm2-dfa5af.eastus.cloudapp.azure.com
新しい VM のパブリック IP アドレスは、$newVM2
オブジェクトの FullyQualifiedDomainName プロパティで返されるので、取得するいくつかの手順をスキップできます。 リモート デスクトップで次のコマンドを使用して接続します。
mstsc.exe /v $newVM2.FullyQualifiedDomainName
クリーンアップ
これでチュートリアルは終了です。次は、作成したリソースをクリーンアップします。 Remove-AzResource
コマンドを使用すると個別のリソースを削除できますが、リソース グループ内のすべてのリソースを削除する最も安全な方法は、Remove-AzResourceGroup
コマンドを使用してグループを削除することです。
$job = Remove-AzResourceGroup -Name TutorialResources -Force -AsJob
$job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Long Running... AzureLongRun... Running True localhost Remove-AzResource...
このコマンドは、チュートリアルで作成したリソースを削除し、必ず正しい順序でその割り当てを解除します。 AsJob
パラメーターは、削除の実行中に PowerShell がブロックされないようにします。 削除が完了するまで待機するには、次のコマンドを使用します。
Wait-Job -Id $job.Id
クリーンアップが完了したら、チュートリアルは終了です。 引き続き、ここで学習した内容を簡単に確認し、次のステップで役立つリソースへのリンクを紹介します。
まとめ
お疲れさまでした。 ここでは、新規または既存のリソースを使用して VM を作成する方法を学習し、式とその他の Azure PowerShell コマンドを使用してデータを取得してシェル変数に格納しました。また、Azure VM 用に作成されたリソースをいくつか確認しました。
次の作業は、Azure PowerShell の使用方法によって異なります。 このチュートリアルで説明した機能の詳細を説明した資料には、さまざまなものがあります。
詳細な Azure PowerShell のドキュメント
時間をとって、一連の完全な Azure PowerShell のドキュメントを確認できます。
このチュートリアルで使用されているコマンドの詳細については、次の記事をご覧ください。
- New-AzResourceGroup
- Get-Credential
- New-AzVM
- Select-Object
- Get-AzPublicIpAddress
- Remove-AzResourceGroup
- Wait-Job
次の記事では、このチュートリアルで示した機能について詳しく説明します。
サンプルのスクリプト
特定のタスクをすぐに開始する必要がある場合は、サンプル スクリプトを確認してください。
フィードバック
フィードバック、ご提案、ご質問はさまざまな方法で送信できます。
Send-Feedback
は Azure PowerShell の組み込みコマンドで、自由形式のフィードバックをチームに提供できます。- Azure PowerShell リポジトリで、機能要求またはバグ レポートを提出できます。
- Azure PowerShell ドキュメント リポジトリで問題を報告することで、ご質問や内容確認を行うことができます。
Azure PowerShell をご利用いただけましたら幸いです。
このセクションに問題がある場合 このセクションを改善できるよう、フィードバックをお送りください。