Azure PowerShell を使って GitHub から WebApp をデプロイする


Microsoft 製品を扱う以上、やはり非常に便利なのは PowerShell です。今回は Azure のリソースを PowerShell を使用してデプロイしたいと思います。ただデプロイするだけでは、このオープンソースの時代につまらないので、GitHub にあるコードを WebApp にデプロイする、という一連の動作を PowerShell のみで完結させたいと思います。

ローカル環境に Azure PowerShell をインストールする

まずはデプロイするための環境をインストールします。ローカルの管理者権限で以下 PowerShell Code を実行します。

Install-Module -Name Az -AllowClobber -Scope CurrentUser

以下 Microsoft の Document にインストールをするための情報がよく纏まっています。
Azure PowerShell モジュールのインストール
インストールが無事に完了したら、Azure PowerShell で Azure の資格情報を使用しサインインします。

Connect-AzAccount

自動的に Azure のサインイン画面が表示されるので、Azure のサブスクリプションを所持しているアカウントにサインインします。サインインに成功すると、PowerShell にログインしたアカウントの情報が出力されます。

また、Get-AzSubscription コマンドを使用することで、ログインしているアカウントが所持しているサブスクリプション情報を確認することが出来ます。

GitHub のコードを Azure WebApp にデプロイする

今回サンプルで使用する GitHub Code は Micorosft が ASP.NET のクイックスタートとして公開しているものになります。
app-service-web-dotnet-get-started
このコードを PowerShell を使用して一発で Azure にデプロイしましょう!

今回使用するコードは以下です。

# サンプルコードのレポジトリを指定する
$gitrepo="https://github.com/Azure-Samples/app-service-web-dotnet-get-started.git"
$webappname="mywebapp$(Get-Random)"
$location="West Europe"

# リソースグループを作成する
New-AzResourceGroup -Name myResourceGroup -Location $location

# App Service Plan をフリーで作成する
New-AzAppServicePlan -Name $webappname -Location $location -ResourceGroupName myResourceGroup -Tier Free

# WebApps をデプロイする
New-AzWebApp -Name $webappname -Location $location -AppServicePlan $webappname -ResourceGroupName myResourceGroup

# GitHub にある Repo からデプロイするオプションを設定する
$PropertiesObject = @{
    repoUrl = "$gitrepo";
    branch = "master";
    isManualIntegration = "true";
}
Set-AzResource -PropertyObject $PropertiesObject -ResourceGroupName myResourceGroup -ResourceType Microsoft.Web/sites/sourcecontrols -ResourceName $webappname/web -ApiVersion 2015-08-01 -Force

なんとこれだけです!これを適用なファイル名を付けて保存し、実際に PowerShell から実行してみましょう!(管理者として実行しましょう)

これを実行するだけで、GitHub から WebApp へのデプロイが実行されます。

デプロイが無事に完了し、Azure Portal を確認すると、しっかりと WebApp が出来上がっていました!非常に簡単ですね。

WebSite の URL にアクセスしても問題なく動いていました。

所感

PowerShell ひとつでここまでできるのは、さすが PowerShell ですね!!
これからできる限り Azure のデプロイには、PowerShell Code を積極的に使っていきたいと思います。

参考 URL

Azure PowerShell モジュールのインストール

チュートリアル:Azure PowerShell を使用して Windows VM を作成および管理する

Create a web app and deploy code from GitHub