Iginte 2回目も終わり、そろそろ花粉も終わって欲しいところです。 さて、昨年11月からWeb AppsがNat Gatewayを使うことで手軽にOutbound IPアドレスの固定化ができるるようになりました。
今回はこの環境をAzure Cloud ShellからAzure CLIで作ってみます。
Let's Deploy
ざっくりとした作成の流れです。
- NAT Gatewayを作成
- VNETを作成
- Web Appsを作成
- VNET Integrationを設定
まずは、Web Appまでを作ります。
resourceGroup=<Resouce Group> location=<Location> appName=<App Name> # Create Resource group az group create --name $resourceGroup --location $location # NAT Gateway natName=nat-$appName az network nat gateway create --resource-group $resourceGroup --name $natName --public-ip-addresses $natPublicIPName # Public IP natPublicIPName=pip-$natName az network public-ip create --resource-group $resourceGroup --name $natPublicIPName --sku standard --zone 1 # VNet vnetName=vnet-$appName az network vnet create -g $resourceGroup -n $vnetName --address-prefixes "10.0.0.0/16" appSubnetName=snet-webapp az network vnet subnet create --resource-group $resourceGroup --vnet-name $vnetName -n $appSubnetName --address-prefixes "10.0.0.0/24" --nat-gateway $natName # App Service Plan appServicePlanName=plan-$appName az appservice plan create --resource-group $resourceGroup --name $appServicePlanName --is-linux --sku P1V3 # Web App webAppName=app-$appName az webapp create -g $resourceGroup -n $webAppName -p $appServicePlanName -i "DOTNETCORE|3.1" az webapp config set -g $resourceGroup -n $webAppName --always-on true --http20-enabled az webapp update -g $resourceGroup -n $webAppName --client-affinity-enabled false --https-only true
Outbount IPアドレスを固定する前のWeb AppsのOutbount IPアドレスを確認してみます。
$ az webapp ssh -g $resourceGroup -n $webAppName This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus Verifying if app is running.... App is running. Trying to establish tunnel connection... _____ / _ \ __________ _________ ____ / /_\ \___ / | \_ __ \_/ __ \ / | \/ /| | /| | \/\ ___/ \____|__ /_____ \____/ |__| \___ > \/ \/ \/ A P P S E R V I C E O N L I N U X Documentation: http://aka.ms/webapp-linux PHP quickstart: https://aka.ms/php-qs PHP version : 7.0.33 Note: Any data outside '/home' is not persisted root@2c0a6cd794d1:/home# curl -s https://ipinfo.io/ip XXX.XXX.XXX.XXX root@2c0a6cd794d1:/home# exit
固定化するOutbount IPアドレスを確認します。
$ az network public-ip show -n $natPublicIPName -gresourceGroup --query ipAddress "XXX.XXX.XXX.XXX"
最後にWeb AppsにVNET Integrationを設定してOutbound IPアドレスを固定にします。
# VNET Integration az webapp vnet-integration add --resource-group $resourceGroup --vnet $vnetName --subnet $appSubnetName --name $webAppName az webapp config appsettings set -g $resourceGroup -n $webAppName --settings WEBSITE_VNET_ROUTE_ALL=1
Outbound IPが作成したPublic IPになっているか確認してみましょう。
$ az webapp ssh -g $resourceGroup -n $webAppName This command is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus Verifying if app is running.... App is running. Trying to establish tunnel connection... _____ / _ \ __________ _________ ____ / /_\ \___ / | \_ __ \_/ __ \ / | \/ /| | /| | \/\ ___/ \____|__ /_____ \____/ |__| \___ > \/ \/ \/ A P P S E R V I C E O N L I N U X Documentation: http://aka.ms/webapp-linux PHP quickstart: https://aka.ms/php-qs PHP version : 7.0.33 Note: Any data outside '/home' is not persisted root@37a02c38f851:/home# curl -s https://ipinfo.io/ip XXX.XXX.XXX.XXX root@37a02c38f851:/home#
Web AppがNAT Gatewayにも向けられるようになったことで、手軽にOutbound IPアドレスを固定化できるようになりました。どんどんWeb Appを使っていきましょう!