PowerShell を使用して、完全に構成された仮想マシンを作成する
このスクリプトでは、オペレーティング システムが Ubuntu の Azure 仮想マシンを作成します。 スクリプトを実行すると、SSH 経由で仮想マシンにアクセスできるようになります。
必要に応じて、Azure PowerShell ガイドの手順に従って Azure PowerShell モジュールをインストールし、Connect-AzAccount
を実行して、Azure との接続を作成します。 また、id_rsa.pub
という名前の SSH 公開キーがユーザー プロファイルの .ssh ディレクトリに必要です。
Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
サンプル スクリプト
# Variables for common values
$resourceGroup = "myResourceGroup"
$location = "westeurope"
$vmName = "myVM"
# Define user name and blank password
$securePassword = ConvertTo-SecureString ' ' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("azureuser", $securePassword)
# Create a resource group
New-AzResourceGroup -Name $resourceGroup -Location $location
# Create a subnet configuration
$subnetConfig = New-AzVirtualNetworkSubnetConfig -Name mySubnet -AddressPrefix 192.168.1.0/24
# Create a virtual network
$vnet = New-AzVirtualNetwork -ResourceGroupName $resourceGroup -Location $location `
-Name MYvNET -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig
# Create a public IP address and specify a DNS name
$pip = New-AzPublicIpAddress -ResourceGroupName $resourceGroup -Location $location `
-Name "mypublicdns$(Get-Random)" -AllocationMethod Static -IdleTimeoutInMinutes 4
# Create an inbound network security group rule for port 22
$nsgRuleSSH = New-AzNetworkSecurityRuleConfig -Name myNetworkSecurityGroupRuleSSH -Protocol Tcp `
-Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 22 -Access Allow
# Create a network security group
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `
-Name myNetworkSecurityGroup -SecurityRules $nsgRuleSSH
# Create a virtual network card and associate with public IP address and NSG
$nic = New-AzNetworkInterface -Name myNic -ResourceGroupName $resourceGroup -Location $location `
-SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
# Create a virtual machine configuration
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize Standard_D1 |
Set-AzVMOperatingSystem -Linux -ComputerName $vmName -Credential $cred -DisablePasswordAuthentication |
Set-AzVMSourceImage -PublisherName Canonical -Offer UbuntuServer -Skus 14.04.2-LTS -Version latest |
Add-AzVMNetworkInterface -Id $nic.Id
# Configure SSH Keys
$sshPublicKey = Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"
Add-AzVMSshPublicKey -VM $vmconfig -KeyData $sshPublicKey -Path "/home/azureuser/.ssh/authorized_keys"
# Create a virtual machine
New-AzVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig
デプロイのクリーンアップ
次のコマンドを実行して、リソース グループ、VM、すべての関連リソースを削除します。
Remove-AzResourceGroup -Name myResourceGroup
スクリプトの説明
このスクリプトでは、以下のコマンドを実行してデプロイを作成します。 表内の各項目は、コマンドごとのドキュメントにリンクされています。
コマンド | メモ |
---|---|
New-AzResourceGroup | すべてのリソースを格納するリソース グループを作成します。 |
New-AzVirtualNetworkSubnetConfig | サブネット構成を作成します。 この構成は、仮想ネットワークの作成プロセスで使用されます。 |
New-AzVirtualNetwork | 仮想ネットワークを作成します。 |
New-AzPublicIpAddress | パブリック IP アドレスを作成します。 |
New-AzNetworkSecurityRuleConfig | ネットワーク セキュリティ グループ規則の構成を作成します。 この構成は、NSG の作成時に NSG 規則を作成するために使用されます。 |
New-AzNetworkSecurityGroup | ネットワーク セキュリティ グループを作成します。 |
Get-AzVirtualNetworkSubnetConfig | サブネット情報を取得します。 この情報は、ネットワーク インターフェイスを作成するときに使用されます。 |
New-AzNetworkInterface | ネットワーク インターフェイスを作成します。 |
New-AzVMConfig | VM 構成を作成します。 この構成には、VM 名、オペレーティング システム、管理資格情報などの情報が含まれます。 この構成は、VM の作成時に使用されます。 |
Set-AzVMOperatingSystem | 仮想マシンに使用するオペレーティング システムのプロパティを設定します。 |
Set-AzVMSourceImage | 仮想マシンのイメージを指定します。 |
Add-AzVMNetworkInterface | 仮想マシンにネットワーク インターフェイスを追加します。 |
New-AzVM | 仮想マシンを作成します。 |
Remove-AzResourceGroup | リソース グループと、それに含まれているすべてのリソースを削除します。 |
次のステップ
Azure PowerShell モジュールの詳細については、Azure PowerShell のドキュメントを参照してください。
その他の仮想マシン用の PowerShell サンプル スクリプトは、Azure Linux VM のドキュメントにあります。