AWS経験者からよく聞かれる悩みだ。AzureのVirtual Machine(VM)はEC2と同じ仮想マシンだが、リソースの名前・作成手順・必須の前提条件が異なるため、最初の一歩でつまずきやすい。
この記事では、AWS EC2の経験者を対象に、AzureでEC2相当のLinux VMを作成する手順を実践形式で解説する。概念の対応表・az CLIコマンド・実機の出力例まで網羅し、30分以内でSSH接続まで完了できる構成にした。
この記事のポイント
・Azure VMはEC2相当だが、リソースグループが必須の管理単位となる
・az vm createコマンド1本でVMを起動しSSH接続まで完了できる
・VMを「停止」するだけでは課金が続く。「割り当て解除」が正しい停止方法
・削除は関連リソースごとリソースグループ削除が確実
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
AzureのVMとEC2の対応関係
AWSとAzureは同じクラウドだが、リソースの名称と構造が異なる。まず対応関係を把握しておくと、Azureの操作に迷いが減る。| AWS(EC2) | Azure(VM) | 役割 |
|---|---|---|
| AWSアカウント | サブスクリプション | 課金・管理の単位 |
| (相当概念なし) | リソースグループ | 関連リソースをまとめる論理コンテナ |
| VPC | VNet(仮想ネットワーク) | プライベートネットワーク空間 |
| サブネット | サブネット | VNet内の分割されたネットワーク |
| セキュリティグループ | NSG(ネットワークセキュリティグループ) | インバウンド/アウトバウンドのポート制御 |
| AMI | イメージ(Marketplace) | OSテンプレート |
| インスタンスタイプ(t3.micro等) | VMサイズ(Standard_B1s等) | CPU・メモリの仕様 |
| EBS | Managed Disk | ブロックストレージ |
| Elastic IP | パブリックIPアドレス(静的SKU) | 固定パブリックIP |
| IAMロール | Managed Identity | VMへのAzureリソースアクセス権限 |
Azure VMを作成するための準備
EC2はVPCとセキュリティグループを指定すれば起動できるが、AzureではVMを作る前に以下の順序でリソースを用意する必要がある。 ・リソースグループ → VNet → サブネット → (NSG)→ VMただし
az vm create には一部のリソースを自動生成するオプションがある。本記事では「リソースを明示的に作るステップ」と「az vm createで一括作成するショートカット」の両方を紹介する。
1. Azure CLIのインストールとログイン
Ubuntu/Debianの場合はaptでインストールできる。# Ubuntu / Debian の場合 curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash # インストール確認 $ az --version azure-cli 2.64.0
az login を実行するとブラウザが開く。
$ az login A web browser has been opened at https://login.microsoftonline.com/... [ { "cloudName": "AzureCloud", "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "isDefault": true, "name": "MySubscription", "state": "Enabled", "tenantId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy", "user": { "name": "user@example.com", "type": "user" } } ]
az account set --subscription "サブスクリプションID" で対象を切り替える。
2. リソースグループを作成する
リソースグループはAWSにはない概念だ。「このプロジェクトで使うリソースをまとめるフォルダ」と考えると分かりやすい。$ az group create --name rg-myserver --location japaneast { "id": "/subscriptions/xxxxxxxx.../resourceGroups/rg-myserver", "location": "japaneast", "name": "rg-myserver", "properties": { "provisioningState": "Succeeded" }, "type": "Microsoft.Resources/resourceGroups" }
--location japaneast は東日本リージョンの指定だ。AWSの ap-northeast-1(東京)に相当する。利用可能なリージョン一覧は az account list-locations -o table で確認できる。
3. VNetとサブネットを作成する
# VNet を作成する(AWSのVPC相当) $ az network vnet create --resource-group rg-myserver --name vnet-myserver --address-prefix 10.0.0.0/16 --subnet-name subnet-default --subnet-prefix 10.0.0.0/24 { "newVNet": { "addressSpace": { "addressPrefixes": ["10.0.0.0/16"] }, "location": "japaneast", "name": "vnet-myserver", "provisioningState": "Succeeded", "subnets": [ { "addressPrefix": "10.0.0.0/24", "name": "subnet-default", "provisioningState": "Succeeded" } ] } }
/16 で作るのが無難だ。
az vm createでLinux VMを起動する
VNetとサブネットが用意できたら、az vm create でVMを作成する。NSGは az vm create が自動的に作成してくれる。
1. VMを作成する
$ az vm create --resource-group rg-myserver --name vm-web01 --image Ubuntu2204 --size Standard_B1s --admin-username azureuser --generate-ssh-keys --vnet-name vnet-myserver --subnet subnet-default
・--image:OSイメージの指定。
Ubuntu2204 はUbuntu 22.04 LTS。利用可能なイメージ一覧は az vm image list -o table --all --publisher Canonical で確認できる・--size:VMサイズ。
Standard_B1s はvCPU 1・メモリ1GBでEC2の t3.micro に近い最小構成・--generate-ssh-keys:SSH鍵ペアを自動生成して
~/.ssh/ に保存する。EC2のキーペアと同じ概念・--vnet-name / --subnet:手順2で作成したVNet・サブネットを指定する
コマンド実行後、1~3分待つと以下のJSONが返ってくる。
{ "fqdns": "", "id": "/subscriptions/xxxxxxxx.../virtualMachines/vm-web01", "location": "japaneast", "macAddress": "00-22-48-1A-2B-3C", "powerState": "VM running", "privateIpAddress": "10.0.0.4", "publicIpAddress": "20.89.xxx.xxx", "resourceGroup": "rg-myserver", "zones": "" }
publicIpAddress のIPアドレスをメモしておく。
2. NSGのSSHルールを送信元IPで絞り込む
az vm create は既定でSSH(ポート22)をインターネット全体に公開するNSGルールを自動作成する。検証目的以外では、自分のPCのIPアドレスだけに制限するとよい。
# 自分のPCのIPアドレスのみ許可に変更 $ az network nsg rule update --resource-group rg-myserver --nsg-name vm-web01NSG --name SSH --source-address-prefixes "203.0.xxx.xxx/32"
3. SSH接続を確認する
$ ssh azureuser@20.89.xxx.xxx Warning: Permanently added '20.89.xxx.xxx' (ED25519) to the list of known hosts. Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 6.2.0-1019-azure x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/pro azureuser@vm-web01:~$ uname -r 6.2.0-1019-azure azureuser@vm-web01:~$ df -h / Filesystem Size Used Avail Use% Mounted on /dev/sda1 29G 2.9G 26G 11% /
ec2-user(Amazon Linux)または ubuntu(Ubuntu AMI)だが、Azure VMは --admin-username で指定した名前になる。本手順では azureuser だ。接続時に混乱しやすいポイントなので注意したい。
EC2との違いでつまずきやすい注意点
AWS経験者がAzure VMに移行するときに遭遇しやすい差異をまとめる。 ① VMの停止と課金の関係EC2を停止(stopped)してもEBSの課金は続くが、インスタンス料金は止まる。AzureでもVMを「停止」するだけでは課金が続く場合がある。料金を止めるには「割り当て解除(deallocate)」が必要だ。
# 課金を止めるには deallocate(割り当て解除)を使う $ az vm deallocate --resource-group rg-myserver --name vm-web01 # 単純な停止(課金が継続する場合あり。検証環境では非推奨) # az vm stop --resource-group rg-myserver --name vm-web01 # 状態を確認する $ az vm show --resource-group rg-myserver --name vm-web01 --show-details --query "{powerState:powerState}" -o table PowerState ----------- VM deallocated
AzureのパブリックIPはVMとは独立したリソースとして作成される。VMを削除してもパブリックIPリソースは残り続け、課金が発生し続ける。削除漏れを防ぐには、リソースグループごと削除するのが確実だ。
③ NSGはNICとサブネットの両方に関連付けられる
AWSのセキュリティグループはインスタンスに直接関連付けるが、AzureのNSGはVMのNIC(ネットワークインターフェース)またはサブネット単位に関連付ける設計だ。
az vm create が自動作成するNSGはNICに関連付けられる。④ WebサーバーのポートはNSGで手動追加が必要
EC2と同様、NSGに許可ルールがなければ外部からの通信はすべてブロックされる。Webサーバーを立てるときはNSGに80番・443番のインバウンドルールを手動で追加する必要がある。
# HTTP (80) と HTTPS (443) を許可するNSGルールを追加 $ az network nsg rule create --resource-group rg-myserver --nsg-name vm-web01NSG --name allow-http --protocol tcp --priority 1010 --destination-port-ranges 80 443 --access allow
不要リソースを削除する
検証後にリソースを削除するときは、リソースグループごと削除するのが確実だ。VMだけ削除してもNSG・VNet・パブリックIPが残り続ける。# リソースグループごと削除(関連リソースをまとめて削除) $ az group delete --name rg-myserver --yes --no-wait # 削除状況の確認(残っていれば一覧に表示される) $ az group list -o table Name Location Status ------ ---------- --------- (表示なし = 削除完了)
本記事のまとめ
| やりたいこと | az CLIコマンド |
|---|---|
| リソースグループを作成する | az group create --name RG名 --location japaneast |
| VNetとサブネットを作成する | az network vnet create --resource-group RG名 --name VNet名 --address-prefix 10.0.0.0/16 --subnet-name サブネット名 --subnet-prefix 10.0.0.0/24 |
| Linux VMを作成する | az vm create --resource-group RG名 --name VM名 --image Ubuntu2204 --size Standard_B1s --admin-username azureuser --generate-ssh-keys --vnet-name VNet名 --subnet サブネット名 |
| VMのIPアドレスを確認する | az vm list-ip-addresses --resource-group RG名 --name VM名 -o table |
| VMを停止・割り当て解除する(課金停止) | az vm deallocate --resource-group RG名 --name VM名 |
| リソースグループごと削除する | az group delete --name RG名 --yes --no-wait |
AzureでのLinuxサーバー構築をより体系的に学びたい方には、Azure環境でのLinuxサーバー構築セミナーも参考にしてほしい。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます