presents by IT Consulting 109

Azure – PowerShellで仮想ネットワークの作成

AWSをメインで利用しているエンジニアがAzure環境の構築をPowerShellで進める連載。
リソースグループの作成から仮想マシンを起動するまでを連載していく予定です。

第5回は、作成したリソースグループに、AWSで言うところのVPCに類似するサービス「仮想ネットワーク」を作成します。

番外編

  • 第10回 PowerShellでストレージアカウントの作成
  • 第11回 PowerShellで仮想マシン用VHDイメージのアップロード
  • 第12回 PowerShellで仮想マシンをVHDイメージから作成
  • 第13回 PowerShellでディスクの拡張

手順

前提:事前にリソースグループが作成されていること。

# リソースグループ名を設定
$private:resourceGroupName = "rg001"

# ロケーションを設定
$private:location = "japaneast"

# タグを設定
$tags = @{"環境名"="ITC109"}

# ネットワークセキュリティグループ名を設定
$script:nwSgName = $private:resourceGroupName + "nwsg"

# パブリックサブネット名を設定
$private:publicSubnetName = "publicSubnet"

# プライベートサブネット名を設定
$private:privateSubnetName = "privateSubnet"

# 仮想ネットワークアドレスを設定
$private:addressPrefix = "10.0.0.0/24"

# パブリックネットワークアドレスを設定
$private:publicSubnetPrefix = "10.0.0.0/25"

# プライベートネットワークアドレスを設定
$private:privateSubnetPrefix = "10.0.0.128/25"
##################################################
Write-Host "■■ 仮想ネットワークの作成処理 ■■"
##################################################
# 仮想ネットワーク名を設定
$private:vnwName = $private:resourceGroupName + "vnw"

# 仮想ネットワークの有無を確認
$private:vnw = Get-AzVirtualNetwork -ResourceGroupName $private:resourceGroupName -Name $private:vnwName -ErrorAction Ignore -WarningAction Ignore

if (-not $private:vnw) {
    try{
        # 仮想ネットワークの作成
        Write-Host ("${private:resourceGroupName} の「仮想ネットワーク」に ${private:vnwName} を作成中...")
        $private:vnw = New-AzVirtualNetwork -Location $private:location -ResourceGroupName $private:resourceGroupName -Name $private:vnwName -AddressPrefix $private:addressPrefix -Tag $tags -ErrorAction Stop -WarningAction Ignore
        Write-Host ("${private:resourceGroupName} の「仮想ネットワーク」に ${private:vnwName} を作成しました。")
        Write-Host ""

        # パブリックサブネット作成
        $script:nwSgPublic = Get-AzNetworkSecurityGroup -ResourceGroupName $private:resourceGroupName -Name $script:nwSgPublicName
        Write-Host "■■ パブリックサブネットの作成処理 ■■"
        Write-Host ("${private:resourceGroupName} の「サブネット」に ${private:publicSubnetName} を作成中...")
        $null = Add-AzVirtualNetworkSubnetConfig -VirtualNetwork $private:vnw -Name $private:publicSubnetName -AddressPrefix $private:publicSubnetPrefix -NetworkSecurityGroup $script:nwSgPublic -WarningAction Ignore | Set-AzVirtualNetwork -ErrorAction Stop -WarningAction Ignore
        Write-Host ("${private:resourceGroupName} の「サブネット」に ${private:publicSubnetName} を作成しました。")
        Write-Host ""

        # プライベートサブネット作成
        $script:nwSgPrivate = Get-AzNetworkSecurityGroup -ResourceGroupName $private:resourceGroupName -Name $script:nwSgPrivateName
        Write-Host "■■ プライベートサブネットの作成処理 ■■"
        Write-Host ("${private:resourceGroupName} の「サブネット」に ${private:privateSubnetName} を作成中...")
        $null = Add-AzVirtualNetworkSubnetConfig -VirtualNetwork $private:vnw -Name $private:privateSubnetName -AddressPrefix $private:privateSubnetPrefix -NetworkSecurityGroup $script:nwSgPrivate -WarningAction Ignore | Set-AzVirtualNetwork -ErrorAction Stop -WarningAction Ignore
        Write-Host ("${private:resourceGroupName} の「サブネット」に ${private:privateSubnetName} を作成しました。")
        Write-Host ""

    }catch{
        Write-Host "仮想ネットワーク & サブネット作成エラー" -ForegroundColor Red
        Write-Error -Message $_.Exception
        Write-Host ""

    }

} else {
    Write-Host ("${private:resourceGroupName} の「仮想ネットワーク」には、既に ${private:vnwName} が存在するため作成をスキップしました。") -ForegroundColor Yellow
    Write-Host ""

}

##################################################

Get-AzVirtualNetworkで既に同名のリソースが存在しないか確認。

$private:vnw = Get-AzVirtualNetwork -ResourceGroupName $private:resourceGroupName -Name $private:vnwName

if (-not $private:vnw) {
  ※リソースが存在しない場合は、ここに作成する処理を記述。
} else {
  ※リソースが存在する場合は、ここに作成しない処理を記述。
}

今回のサンプルでは仮想ネットワークのアドレス群を「10.0.0.0/24」で作成。

New-AzVirtualNetwork -Location $private:location -ResourceGroupName $private:resourceGroupName -Name $private:vnwName -AddressPrefix $private:addressPrefix -Tag $tags -ErrorAction Stop -WarningAction Ignore

今回のサンプルではパブリック用のサブネットを「10.0.0.0/25」で仮想ネットワークに追加

Add-AzVirtualNetworkSubnetConfig -VirtualNetwork $private:vnw -Name $private:publicSubnetName -AddressPrefix $private:publicSubnetPrefix -NetworkSecurityGroup $script:nwSgPublic | Set-AzVirtualNetwork

今回のサンプルではプライベート用のサブネットを「10.0.0.128/25」で仮想ネットワークに追加

Add-AzVirtualNetworkSubnetConfig -VirtualNetwork $private:vnw -Name $private:privateSubnetName -AddressPrefix $private:privateSubnetPrefix -NetworkSecurityGroup $script:nwSgPrivate | Set-AzVirtualNetwork

try ~ catchで例外が発生したときにエラーメッセージを表示。

try {
    ※リソースの作成の作成。
} catch {
    ※リソースの作成の作成に失敗。
    Write-Error -Message $_.Exception
}

リソース ビジュアライザー

この記事を書いた人
名前:TRUE's。 千葉県育ち、神奈川県在住のIT系フリーエンジニア。 IT系のナレッジサイトを不定期で更新中。 フォトグラファー兼エンジニアとして日々勤しんでいる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です