御成門プログラマーの技術日記

Microsoft AzureやAngularなどの技術情報を発信します。

AzureにLinux仮想マシンを作成するPowerShell コマンドレット(MCP 70-533試験 対策)

参考ページ

docs.microsoft.com

まずはAzureに接続

# Azureに接続する
connect-azurermaccount

前もってSSH接続認証用に SSH キーを作成しておく

docs.microsoft.com

作成した「id_rsa.pub」ファイルはコマンド実行前に
Windows ユーザー プロファイルの .ssh ディレクトリに格納しておく必要があります

Azure に Linux 仮想マシンを作成する

途中パスワードを入力するところが空になっているので入力してから実行してください。

New-AzureRmResourceGroup -Name "VmOnLinuxTest" -Location "EastUS"

# Create a subnet configuration
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name "mySubnet" -AddressPrefix 192.168.1.0/24

# Create a virtual network(コマンドレットに修正が入るかも)
$vnet = New-AzureRmVirtualNetwork -ResourceGroupName "VmOnLinuxTest" -Location "EastUS" `
-Name "myVNET" -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig

# Create a public IP address and specify a DNS name(コマンドレットに修正が入るかも)
$pip = New-AzureRmPublicIpAddress -ResourceGroupName "VmOnLinuxTest" -Location "EastUS" `
-AllocationMethod Static -IdleTimeoutInMinutes 4 -Name "mypublicdns$(Get-Random)"

# Create an inbound network security group rule for port 22
$nsgRuleSSH = New-AzureRmNetworkSecurityRuleConfig -Name "myNetworkSecurityGroupRuleSSH"  -Protocol "Tcp" `
-Direction "Inbound" -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 22 -Access "Allow"

# Create an inbound network security group rule for port 80
$nsgRuleWeb = New-AzureRmNetworkSecurityRuleConfig -Name "myNetworkSecurityGroupRuleWWW"  -Protocol "Tcp" `
-Direction "Inbound" -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
-DestinationPortRange 80 -Access "Allow"

# Create a network security group(コマンドレットに修正が入るかも)
$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName "VmOnLinuxTest" -Location "EastUS" `
-Name "myNetworkSecurityGroup" -SecurityRules $nsgRuleSSH,$nsgRuleWeb

# Create a virtual network card and associate with public IP address and NSG
$nic = New-AzureRmNetworkInterface -Name "myNic" -ResourceGroupName "VmOnLinuxTest" -Location "EastUS" `
-SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

# Define a credential object
$securePassword = ConvertTo-SecureString 'ここにパスワードを入力' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("azureuser", $securePassword)

# Create a virtual machine configuration(コマンドレットに修正が入るかも)
$vmConfig = New-AzureRmVMConfig -VMName "myVM" -VMSize "Standard_D1" | `
Set-AzureRmVMOperatingSystem -Linux -ComputerName "myVM" -Credential $cred -DisablePasswordAuthentication | `
Set-AzureRmVMSourceImage -PublisherName "Canonical" -Offer "UbuntuServer" -Skus "16.04-LTS" -Version "latest" | `
Add-AzureRmVMNetworkInterface -Id $nic.Id

# Configure SSH Keys
$sshPublicKey = Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"
Add-AzureRmVMSshPublicKey -VM $vmconfig -KeyData $sshPublicKey -Path "/home/azureuser/.ssh/authorized_keys"

##定義した構成も合わせた仮想マシンの作成
New-AzureRmVM -ResourceGroupName "VmOnLinuxTest" -Location EastUS -VM $vmConfig

VMができていることを確認

f:id:tt-suzukiit:20181004194705p:plain

VMに接続を行う。

VMのパブリックIPアドレスを確認する。

Get-AzureRmPublicIpAddress -ResourceGroupName "VmOnLinuxTest" | Select "IpAddress"

VMに接続する

@以下を取得したipアドレスに書き換える。

ssh azureuser@IpAddress

VMの動作確認(WEBサーバーのインストール)

NGINX Web サーバーをインストールします。

# update packages
sudo apt-get -y update

# install NGINX
sudo apt-get -y install nginx

コマンド実行完了後、ブラウザで先ほど取得したパブリックIPアドレスを入力すると、WEBサイトの表示が確認できます。
f:id:tt-suzukiit:20181004200105p:plain