AWSをメインで利用しているエンジニアがAzure環境の構築をPowerShellで進める連載。
リソースグループの作成から仮想マシンを起動するまでを連載していく予定です。
第6回は、これから作成する仮想マシンにアタッチする、AWSで言うところのネットワークインターフェースに類似するサービス「ネットワークインターフェース」を作成します。
番外編
前提:事前に「仮想ネットワーク」が作成されていること。
# リソースグループ名を設定
$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
}