Azure仮想ネットワーク作成のCIDRとサブネット割り当てをBicepで構成する手順|アドレス空間の設計手順

運営:リナックスマスター.JP(代表 宮崎智広)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > Azure > Azure仮想ネットワーク作成のCIDRとサブネット割り当てをBicepで構成する手順|アドレス空間の設計手順
「AzureでVNetを作ろうとしたが、CIDRに何を入れればいいか分からない」
「サブネットを何個作るべきか、どう分割すればいいか判断軸がない」
そんな悩みを持つ方に向けて、この記事ではBicepを使ってAzure仮想ネットワーク作成のCIDR設計とサブネット割り当てを実践的に解説します。

コアキーワードは「azure 仮想ネットワーク作成」。Bicepのコードを中心に、構築ハンズオンと設計の判断軸の両方をまとめました。
想定環境はAzure CLI(az version 2.60以降)とBicep CLI(0.28以降)が使えるLinux環境です。

この記事のポイント

・Azure仮想ネットワーク作成にはCIDRの設計が先で、あとから変更できない
・Bicepでmain.bicepを書けば、同じVNet構成を何度でも再現できる
・Web層・管理層・DB層の3サブネット分割がよく使われる基本パターン
・az deployment group createで1コマンドデプロイができ、ファイルが構成書になる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Azure仮想ネットワークのCIDR設計でつまずく理由

あなたがAzureで初めてVNet(仮想ネットワーク)を作るとき、まず「アドレス空間に何を入れればいいか」で止まることが多いと思います。

Azureのポータル画面には「アドレス空間」という入力欄があり、そこに「10.0.0.0/16」のようなCIDR表記を入れます。
問題は「このCIDRをどう選べばいいか」の判断軸が、公式ドキュメントだけでは掴みにくい点です。

さらにAzure仮想ネットワークのアドレス空間は、作成後に後から大きくする変更ができません。
サブネットを追加することはできますが、VNet全体のアドレス空間を変更するにはVNetごと作り直しが必要になります。

この制約を知らずに小さなCIDRで作ると、後でサブネットが追加できなくなって詰まります。

Bicepを使えば、CIDRとサブネットの設計をコードとして記録できます。
設計変更があってもファイルを書き換えて再デプロイすればよく、構成書とコードが一致した状態を維持できます。

Bicepで仮想ネットワークを定義するファイル構成

BicepはAzureのIaC(Infrastructure as Code)ツールです。
ARMテンプレートより読みやすいJSON代替として設計されており、`az deployment group create`コマンドで直接デプロイできます。

仮想ネットワークをBicepで管理するメリットは次のとおりです。

・CIDRやサブネット名を変数として一覧管理できる
・ファイルがそのまま設計書として機能する
・gitで変更履歴を残せる

この記事では1ファイル構成で進めます。

# ファイル構成 ./ └── main.bicep # VNetとサブネットの定義

1. main.bicepの基本形を作る

Bicepでは`resource`キーワードを使ってAzureリソースを定義します。
VNetのリソースタイプは`Microsoft.Network/virtualNetworks`です。

まず、パラメーターと変数を定義します。

// main.bicep param location string = resourceGroup().location param vnetName string = 'vnet-prod-eastjapan' var vnetAddressPrefix = '10.1.0.0/16' var subnetWeb = '10.1.1.0/24' var subnetAdmin = '10.1.2.0/24' var subnetDb = '10.1.10.0/24'

`param`はデプロイ時に外から渡せる値、`var`はBicep内だけで使う変数です。
CIDRを変数にまとめておくと、変更が一か所で済みます。

2. VNetリソースのCIDR指定

変数を使ってVNetリソースを定義します。

resource vnet 'Microsoft.Network/virtualNetworks@2023-04-01' = { name: vnetName location: location properties: { addressSpace: { addressPrefixes: [ vnetAddressPrefix // 10.1.0.0/16 ] } subnets: [ { name: 'subnet-web' properties: { addressPrefix: subnetWeb // 10.1.1.0/24 } } { name: 'subnet-admin' properties: { addressPrefix: subnetAdmin // 10.1.2.0/24 } } { name: 'subnet-db' properties: { addressPrefix: subnetDb // 10.1.10.0/24 } } ] } }

`addressSpace.addressPrefixes`にVNet全体のCIDRを、`subnets`配列に各サブネットのCIDRを書きます。
サブネットのCIDRはVNetのCIDR(10.1.0.0/16)の範囲に収まる必要があります。

3. サブネットの分割と命名規則

サブネット名は後から変更しにくいため、最初に命名規則を決めておくことを推奨します。

よく使われる命名規則の例です。

・`subnet-web`:公開Webサーバー層
・`subnet-admin`:踏み台・管理用途
・`subnet-db`:データベース層(プライベート)

Azureは各サブネットで先頭5つのIPアドレスをシステムが予約します。
つまり`/24`(254アドレス)でも、実際に使えるのは249アドレスです。
この点を踏まえてサブネットのサイズを設計してください。

Bicepを活用したAzure環境構築の基礎や応用については、Azure実践ハンズオン学習サイトもあわせて参照してください。

Azure仮想ネットワーク作成のデプロイ手順

Bicepファイルが完成したら、Azure CLIを使ってデプロイします。
作業前にAzure CLIでログイン済みであることを確認してください。

1. リソースグループを用意する

VNetを作成するリソースグループを先に作ります。

# リソースグループを作成する az group create \ --name rg-vnet-sample \ --location japaneast

出力例(環境により異なります):

{ "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-vnet-sample", "location": "japaneast", "name": "rg-vnet-sample", "properties": { "provisioningState": "Succeeded" }, "type": "Microsoft.Resources/resourceGroups" }

`"provisioningState": "Succeeded"`が出ていれば作成完了です。

2. az deployment group createでデプロイする

Bicepファイルを指定してデプロイします。

# Bicepをデプロイする az deployment group create \ --resource-group rg-vnet-sample \ --template-file main.bicep \ --mode Incremental

`--mode Incremental`を指定すると、既存リソースを削除せずに差分だけ適用します。

デプロイ完了後の出力例(環境により異なります):

{ "id": "/subscriptions/xxxxxxxx/resourceGroups/rg-vnet-sample/...", "name": "main", "properties": { "provisioningState": "Succeeded", ... } }

`"provisioningState": "Succeeded"`が確認できれば、VNetが作成されています。

3. 作成結果をazコマンドで確認する

デプロイ後は`az network vnet show`で内容を確認します。

# VNetの作成結果を確認する az network vnet show \ --resource-group rg-vnet-sample \ --name vnet-prod-eastjapan \ --query '{name:name, addressSpace:addressSpace.addressPrefixes, subnets:subnets[].{name:name,prefix:addressPrefix}}' \ --output json

出力例(環境により異なります):

{ "addressSpace": ["10.1.0.0/16"], "name": "vnet-prod-eastjapan", "subnets": [ {"name": "subnet-web", "prefix": "10.1.1.0/24"}, {"name": "subnet-admin", "prefix": "10.1.2.0/24"}, {"name": "subnet-db", "prefix": "10.1.10.0/24"} ] }

サブネット名とCIDRが意図通りに設定されているかを確認してください。

CIDRサブネット割り当ての設計パターン

Azure仮想ネットワーク作成時のCIDR設計には、いくつかの定番パターンがあります。
規模感 VNetのCIDR サブネットの目安 用途例
小規模 10.0.0.0/24 /27(30アドレス) 開発・検証の1環境に数台のVM
中規模 10.1.0.0/22 /24(254アドレス) 本番・検証を同一VNetに収める構成
大規模 10.1.0.0/16 /24(最大254個) 将来のVNetピアリング・他リージョン接続を見越した設計
最初からVNet全体のCIDRを広めに取っておくのが一般的な考え方です。

VNetのアドレス空間はあとから大きくするには作り直しが必要なため、小さくしすぎると後で困ります。

また、オンプレミス環境やVPNゲートウェイと接続する予定がある場合は、既存のオンプレミス側のCIDRと重複しないようにしてください。
CIDRが重複すると、VNetピアリングやVPN接続で通信できなくなります。

Bicepであれば、CIDRを変数として一か所にまとめているため、設計変更がある場合に変数だけ書き換えて再デプロイできます。

トラブルシュート|よくあるエラーと対処法

「Subnet address prefix overlaps with another subnet」

サブネットのCIDRが重複しているときに出るエラーです。

# エラー例(環境により異なります) ERROR: Code=SubnetAddressPrefixOverlaps Message: Subnet 'subnet-db' address prefix 10.1.1.0/24 overlaps with other subnets in virtual network 'vnet-prod-eastjapan'.

対処: Bicepのサブネット変数を確認して、重複のないCIDRに修正してください。
`subnet-web`が`10.1.1.0/24`なら、`subnet-db`は`10.1.10.0/24`のように異なる範囲を指定します。

「VNet address space is too small」

サブネットのCIDRがVNetのアドレス空間に収まっていないエラーです。
VNetを`10.1.0.0/24`にしてサブネットを`10.1.1.0/24`にすると、範囲外になってエラーが出ます。
VNetのCIDRをサブネットより広い範囲(`/22`や`/16`)に設定し直してください。

「Bicep build error: Expected a character」

Bicepファイルの文法エラーです。
`bicep build`コマンドで事前に構文チェックができます。

# Bicepの構文チェックを実行する bicep build main.bicep

エラーがなければ`main.json`が生成されます。
エラーがあれば行番号とメッセージが表示されるので、該当箇所を修正してください。

本記事のまとめ

Azure仮想ネットワーク作成のCIDRとサブネット割り当てをBicepで管理する手順を解説しました。
やりたいこと Bicepの書き方・コマンド
VNet全体のCIDRを定義する addressSpace.addressPrefixes: ['10.1.0.0/16']
サブネットを追加する subnets配列にname/addressPrefixを追加
Bicepをデプロイする az deployment group create --template-file main.bicep
VNetの設定を確認する az network vnet show --query subnets
Bicepの構文チェックをする bicep build main.bicep
Bicepを使うことで、CIDRの設計意図をコード上に記録できます。
同じ構成を別の環境にも確実に再現できるため、開発・検証・本番の3環境管理にも効果的です。

VNetのアドレス空間はあとから変更しにくいため、最初の設計で広めに取っておくことが重要です。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、

Azureを含むクラウド環境でのLinux実践スキルは、【初心者向けLinuxセミナー(2日間ハンズオン)】で体系的に学べます。

>>Azure実践ハンズオンの詳細はこちら

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

運営

リナックスマスター.JP(代表 宮崎智広)

株式会社イーネットマーキュリーが運営するLinux教育サイトです。代表の宮崎智広は現役のLinuxサーバー管理者として20年以上の実務経験を持ち、累計3,100名以上のエンジニアを指導してきました。実践型のLinuxセミナーや無料マニュアルの配布を通じてLinux人材の育成に取り組んでいます。