演習 - Azure PowerShell でスクリプトを使用して Azure リソースを作成する
CRM ソフトウェアをテストするための VM を作成するという元のシナリオを思い出してください。 新しいビルドを使用できるようになったので、クリーンなイメージからインストール エクスペリエンス全体をテストできるように、新しい VM を起動してみたいと思います。 それが完了したら、VM を削除します。
VM を作成するコマンドを試してみましょう。
Azure PowerShell を使用して Linux VM を作成する
Azure サンドボックスを使用しているので、リソース グループを作成する必要はありません。 代わりに、
PowerShell を使用して新しい Azure VM を作成してみましょう。
New-AzVm
コマンドレットを使用して VM を作成します。[サンドボックス リソース グループ名] というリソース グループを使用します。VM に名前を付けます。 通常、VM の目的、場所、(複数ある場合は) インスタンス番号を識別するわかりやすい名前を使用する必要があります。 "米国東部のテスト VM、インスタンス 1" には "testvm-eus-01" を使用します。VM を配置する場所に基づいて、独自の名前を付けてください。
Azure サンドボックスで使用できる次のリストから、自分に近い場所を選択します。 コピーと貼り付けを使用する場合は、次のコマンド例の値を必ず変更してください。
- westus2
- southcentralus
- centralus
- eastus
- westeurope
- southeastasia
- japaneast
- brazilsouth
- australiasoutheast
- centralindia
イメージには "Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest" を使用します。 このイメージは Ubuntu Linux です。
Get-Credential
コマンドレットを使用し、結果をCredential
パラメーターに指定します。重要
ユーザー名とパスワードの制限については、Linux VM の FAQ に関するページを参照してください。 パスワードは 12 から 123 文字の長さにし、次の 4 つの複雑性要件のうち 3 つを満たしている必要があります。
- 小文字を含む
- 大文字を含む
- 数字を含む
- 特殊文字を含む ([\W_] に一致する正規表現)
-OpenPorts
パラメーターを追加し、ポートとして "22" を渡します。 このポートにより、マシンに SSH で接続できます。パブリック IP アドレス名を作成します。 この名前を使用し、コンピューターにサインインするための静的 IP アドレスを作成および検索します。
New-AzVm -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "testvm-eus-01" -Credential (Get-Credential) -Location "eastus" -Image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest -OpenPorts 22 -PublicIpAddressName "testvm-eus-01"
ヒント
[コピー] ボタンを使用して、コマンドをクリップボードにコピーできます。 貼り付けるには、Cloud Shell ターミナル内で新しい行を右クリックして [貼り付け] を選択するか、Shift + Insert キーボード ショートカット (macOS では ⌘ + V) を使用します。
ユーザー名とパスワードを作成してから、Enter キーを押します。 PowerShell により VM の作成が始まります。
VM の作成には数分かかります。 完了したら、クエリを実行し、変数 (
$vm
) に VM オブジェクトを割り当てることができます。$vm = (Get-AzVM -Name "testvm-eus-01" -ResourceGroupName <rgn>[sandbox resource group name]</rgn>)
値のクエリを実行し、VM に関する情報をダンプします。
$vm
次の出力のようになるはずです。
ResourceGroupName : <rgn>[sandbox resource group name]</rgn> Id : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rgn>[sandbox resource group name]</rgn>/providers/Microsoft.Compute/virtualMachines/testvm-eus-01 VmId : 00000000-0000-0000-0000-000000000000 Name : testvm-eus-01 Type : Microsoft.Compute/virtualMachines Location : eastus Tags : {} HardwareProfile : {VmSize} NetworkProfile : {NetworkInterfaces} OSProfile : {ComputerName, AdminUsername, LinuxConfiguration, Secrets} ProvisioningState : Succeeded StorageProfile : {ImageReference, OsDisk, DataDisks}
複合オブジェクトには、ドット (
.
) 表記を使用してアクセスできます。 たとえば、HardwareProfile セクションに関連付けられたVMSize
オブジェクトのプロパティを表示するには、次のコマンドを実行します。$vm.HardwareProfile
または、ディスクのいずれかに関する情報を取得するには、次のコマンドを実行します。
$vm.StorageProfile.OsDisk
VM オブジェクトを他のコマンドレットに渡すこともできます。 たとえば、次のコマンドを実行すると、VM で使用可能なすべてのサイズが表示されます。
$vm | Get-AzVMSize
次のコマンドを実行し、パブリック IP アドレスを取得します。
az vm list-ip-addresses -n testvm-eus-01 -g <rgn>[sandbox resource group name]</rgn>
IP アドレスを指定し、SSH を使用して VM に接続することができます。 たとえば、ユーザー名
bob
を使用し、IP アドレスが205.22.16.5
の場合、このコマンドを実行すると、Linux マシンに接続されます。ssh bob@205.22.16.5
「
exit
」と入力してサインアウトします。
VM を削除する
その他のコマンドを試すために、VM を削除してみましょう。 まず、VM をシャットダウンする必要があります (続行を確認するプロンプトが表示された場合は「Y」と入力します)。
Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
VM が停止したら、Remove-AzVM
コマンドレットを実行して VM を削除します (続行を確認するプロンプトが表示された場合は「Y」と入力します)。
Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
このコマンドを実行して、リソース グループ内のすべてのリソースを一覧表示します。
Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Format-Table
まだ存在する複数のリソース (ディスク、仮想ネットワークなど) が一覧表示されます。
Microsoft.Compute/disks
Microsoft.Network/networkInterfaces
Microsoft.Network/networkSecurityGroups
Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks
Remove-AzVM
コマンドでは VM が削除されるだけです。 他のどのリソースもクリーンアップされません。 この時点では、リソース グループ自体を削除するだけで完了です。 ただし、手動でクリーンアップするには、この演習全体を実行してください。 コマンドのパターンがわかるはずです。
ネットワーク インターフェイスを削除します。
$vm | Remove-AzNetworkInterface –Force
マネージド OS ディスクを削除します。
Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name | Remove-AzDisk -Force
次に仮想ネットワークを削除します。
Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork -Force
ネットワーク セキュリティ グループを削除します。
Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup -Force
最後に、パブリック IP アドレスを削除します。
Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName | Remove-AzPublicIpAddress -Force
作成されたすべてのリソースをキャッチしている必要があります。 念のため、リソース グループを確認します。 ここではさまざまなマニュアル コマンドを実行しましたが、もっと良い方法は、スクリプトを記述することでしょう。 このロジックを後で再利用し、VM を作成または削除できます。 PowerShell を使用したスクリプトを見てみましょう。