4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LIGHTzAdvent Calendar 2021

Day 24

Azureで仮想マシンをコマンドで作ってみよう

Posted at

Azureポータルでポチポチ仮想マシンを作成するのはめんどくさいですよね。
PowerShellで作成する方法もありますが、エクセルで簡単に仮想マシンを作成したかったので、あえてaz cliで作成を半自動化してみました。(需要あるのか?)
誰かの参考になればと、そっと置いておきます。

##事前準備
この記事のコマンドを利用する場合は、az cliをインストールしておいてください。
Macの場合は、brewをインストール後にaz cliをインストールします。

※本コマンド群は結果を保証するものではありません。

##レッツ作成

まずはAzure環境にログインしましょう。

az login

ちなみに、コマンドをアップデートする場合は以下のおまじないを施します。(macの場合)

brew update && brew upgrade azure-cli

##リソースグループの作成

サブスクリプションを持っている前提で、まずはリソースグループを作成します。
各リソース名は任意ですが、今回は「Azure-XXXX01」という様なネーミングルールで作成していきます。

az group create -n Azure-RG01 -l japaneast

##ネットワークの作成

VNETを作成します。ネットワークアドレスはお好みの物に変更してください。

az network vnet create --name Azure-VNET01 --resource-group Azure-RG01 --location japaneast --address-prefixes 10.1.0.0/16 --subnet-name Azure-SrvSubnet01 --subnet-prefix 10.1.1.0/24

VNETにゲートウェイ用のサブネットを作成します。
例は/24で作成していますが、/27以上で作成すればOKです。

az network vnet subnet create --vnet-name Azure-VNET01 -n GatewaySubnet -g Azure-RG01 --address-prefix 10.1.255.0/24

Azureが提供するDNSを利用しない場合は、以下のコマンドでDNSを変更します。

az network vnet update -g Azure-RG01 -n Azure-VNET01 --dns-servers 8.8.8.8

##インターネットVPNでオンプレと接続してみる

まずはパブリックIPを割り当てておきます。

az network public-ip create -n Azure-GIP01 -g Azure-RG01 --allocation-method Dynamic

Azure側にローカルゲートウェイを作成します。接続する先のパブリックIPは事前に調べておいてください。

az network local-gateway create --gateway-ip-address XXX.XXX.XXX.XXX --name Azure-LocalGW01 --resource-group Azure-RG01 --local-address-prefixes 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

いろいろな制約で、オンプレ側から外部ネットワークに抜けるように設定したい場合、ルートテーブルを作成して経路をねじ曲げます。

az network route-table create -g Azure-RG01 -n Azure-RT01
az network route-table route create --address-prefix "0.0.0.0/0" --name Azure-DefaultRoute01 --next-hop-type VirtualNetworkGateway --resource-group Azure-RG01 --route-table-name Azure-RT01
az network vnet subnet update -n Azure-SrvSubnet01 --resource-group Azure-RG01 --vnet-name Azure-VNET01 --address-prefixes 10.1.1.0/24 --route-table Azure-RT01

いよいよVPNゲートウェイを作成していきます。プランは、VpnGw1を選択しています。このあたりはスペックを確認しながら変更してください。

az network vnet-gateway create -n Azure-GW01 -l japaneast --public-ip-address Azure-GIP01 -g Azure-RG01 --vnet Azure-VNET01 --gateway-type Vpn --sku VpnGw1 --vpn-type RouteBased --client-protocol IkeV2 --no-wait

前述した、Azureのトラフィックを一度、オンプレに戻す場合、以下のVPN定義を利用します。

az network vnet-gateway create -n Azure-GW01 -l japaneast --public-ip-address Azure-GIP01 -g Azure-RG01 --vnet Azure-VNET01 --gateway-type Vpn --sku VpnGw1 --vpn-type RouteBased --client-protocol IkeV2 --gateway-default-site Azure-LocalGW01 --no-wait

最後にVPNを接続して完了です。シェアードキーはオンプレ側のVPN機器と合わせる必要があります。

az network vpn-connection create --name Azure-Connection01 --resource-group Azure-RG01 --vnet-gateway1 Azure-GW01 -l japaneast --shared-key ********* --local-gateway2 Azure-LocalGW01

##セキュリティグループの作成

仮想マシンで利用するセキュリティグループを作成します。
仮想マシンのNic毎に作成しておくと、きめ細かい設定をすることが出来ます。

az network nsg create --name Azure-SrvNSG01 --resource-group Azure-RG01 --location japaneast 

##仮想マシンの作成

まずは仮想マシンに割り当てる仮想Nicを作成してみましょう。IPアドレスは、事前に設定したサブネットの中から任意で割り当てしてください。

az network nic create --name Azure-Srv01-Nic01 --resource-group Azure-RG01 --vnet-name Azure-VNET01 --subnet Azure-SrvSubnet01 --network-security-group Azure-SrvNSG01 --private-ip-address 10.1.1.10

いろいろとスペックを選ぶことが出来ます。今回は、Windows2019DC、スタンダードSSD(128GB)、Standard_B2msという仮想マシンスペックで作成してみます。

az vm create --name ServerName --resource-group Azure-RG01 --location japaneast --image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest --size Standard_B2ms --nics Azure-Srv01-Nic01 --storage-sku StandardSSD_LRS --os-disk-name ServerName_CDRIVE --os-disk-size-gb 128 --admin-username sv-administrator --admin-password ***********

追加でディスクを割り当てる場合、以下の様にしてディスクを追加します。

az vm disk attach --resource-group Azure-RG01 --vm-name ServerName --name ServerName_EDRIVE --size-gb 32 --sku Premium_LRS --new

作業用に一時的にグローバルIPを割り当てる場合、以下の様にしてIPを割り当てリモートデスクトップでアクセスするとよいでしょう。

az network public-ip create --name ServerName-GIP --resource-group Azure-RG01
az network nic ip-config update --name ipconfig1 --nic-name Azure-Srv01-Nic01 --resource-group Azure-RG01 --public-ip-address ServerName-GIP

##NSGを変更しよう

仮想マシンにアクセスするため、NSGの定義を追加していきます。
リモートデスクトップを許可する場合、以下の様にします。XXX.XXX.XXX.XXXからのアクセスを許可しています。

az network nsg rule create --resource-group Azure-RG01 --nsg-name Azure-SrvNSG01 --name Azure-nsgRule-RDP01 --direction Inbound --protocol tcp --priority 100 --destination-port-range 3389 --source-address-prefixes XXX.XXX.XXX.XXX --destination-address-prefixes VirtualNetwork --access allow

どうでしょうか、おおよそ以上の操作で一通りの作成は出来たと思います。
各種オプションなどは調べてつつ変更して作成してみてください。

##オプション:ExpressRouteの接続

サンプルコマンドを置いておきます。作成時の参考にしてみてください。

az network express-route create --bandwidth 50 -n Az-ExRCircuit01 --peering-location Tokyo -g AzExR-RG01 --provider XXXXXXX -l japaneast --sku-family MeteredData --sku-tier Standard
az network public-ip create -n Az-ExRGIP01 -g AzSrv-RG01 --allocation-method Dynamic
az network vnet-gateway create --name Az-GW01 --gateway-type ExpressRoute --public-ip-addresses Az-ExRGIP01 --resource-group AzSrv-RG01 --vnet Az-VNET01 --sku Standard --no-wait
az network vpn-connection create --name Az-ExRConnection01 --resource-group AzSrv-RG01 --vnet-gateway1 Az-GW01 --express-route-circuit2 Az-ExRCircuit01
az network route-table create -g AzSrv-RG01 -n Az-RT01
az network route-table route create --address-prefix "XXX.XXX.XXX.XXX/32" --name Az-RTKMS01 --next-hop-type Internet --resource-group AzSrv-RG01 --route-table-name Az-RT01
az network vnet subnet update -n Az-SrvSubnet01 --resource-group AzSrv-RG01 --vnet-name Az-VNET01 --route-table Az-RT01
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?