presents by IT Consulting 109

Azure – PowerShellでネットワークインターフェースの作成

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

第6回は、これから作成する仮想マシンにアタッチする、AWSで言うところのネットワークインターフェースに類似するサービス「ネットワークインターフェース」を作成します。

番外編

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

手順

前提:事前に「仮想ネットワーク」が作成されていること。

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

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

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

# 仮想ネットワーク名を設定
$private:vnwName = $private:resourceGroupName + "vnw"

# 仮想マシン名を設定
$private:vmname = $private:resourceGroupName + "vm01"
# ネットワークインターフェース名を設定
$private:nicname = $private:vmname + "nwif"

$private:nics = Get-AzNetworkInterface -ResourceGroupName $private:resourceGroupName -Name $private:nicname -ErrorAction Ignore -WarningAction Ignore
if (-not $private:nics) {
    try{
        # ネットワークインターフェース作成(パブリックサブネットに作成)
        $private:subnet = (Get-AzVirtualNetwork -ResourceGroupName $private:resoucreGroupName -Name $private:vnwName -WarningAction Ignore).Subnets | Where-Object {$_.Name -eq "publicSubnet"}

        # 対象のサブネットの有無
        if ($private:subnet) {
            # ネットワークインターフェースを作成
            Write-Host ("${private:resourceGroupName} の「ネットワークインターフェース」に ${private:nicname} を作成中...")
            $private:nic = New-AzNetworkInterface -Location $private:location -ResourceGroupName $private:resourceGroupName -Name $private:nicname -Subnet $private:subnet -Tag $tags -ErrorAction Stop
            Write-Host ("${private:resourceGroupName} の「ネットワークインターフェース」に ${private:nicname} を作成しました。")
            Write-Host ""

            # プライベートIPアドレスを固定
            $private:nic.IpConfigurations[0].PrivateIpAllocationMethod = 'Static'
            $null = Set-AzNetworkInterface -NetworkInterface $private:nic -ErrorAction Stop
            Write-Host ("プライベートIPアドレスを静的に変更しました。")
            Write-Host ""

        } else {
            # サブネットが存在しない
            Write-Host "指定のサブネットが存在しません。" -ForegroundColor Red
            Write-Host ""
        }

    } catch {
        Write-Host "ネットワークインターフェース作成 or プライベートIPアドレス固定エラー" -ForegroundColor Red
        Write-Error -Message $_.Exception
        Write-Host ""

    }

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

}

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

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

$private:vnw = Get-AzNetworkInterface -ResourceGroupName $private:resourceGroupName -Name $private:nicname

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

New-AzNetworkInterfaceでネットワークインターフェースを作成。

$private:nic = New-AzNetworkInterface -Location $private:location -ResourceGroupName $private:resourceGroupName -Name $private:nicname -Subnet $private:subnet -Tag $tags -ErrorAction Stop

-Subnetオプション「サブネット」について利用可能なサブネットを指定。

-Subnet $private:subnet

サブネットの一覧から「publicSubnet」を指定。

$private:subnet = (Get-AzVirtualNetwork -ResourceGroupName $private:resourceGroupName -Name $private:vnwName).Subnets | Where-Object {$_.Name -eq "publicSubnet"}

「privateSubnet」に作成する場合は、指定を変更する。

$private:subnet = (Get-AzVirtualNetwork -ResourceGroupName $private:resourceGroupName -Name $private:vnwName).Subnets | Where-Object {$_.Name -eq "privateSubnet"}

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

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

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

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

コメントを残す

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