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

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

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

```powershell
Install-Module -Name Az -AllowClobber -Scope CurrentUser
```

以下 Microsoft の Document にインストールをするための情報がよく纏まっています。
[Azure PowerShell モジュールのインストール](https://docs.microsoft.com/ja-jp/powershell/azure/install-az-ps?view=azps-2.8.0)
インストールが無事に完了したら、Azure PowerShell で Azure の資格情報を使用しサインインします。

```powershell
Connect-AzAccount
```

自動的に Azure のサインイン画面が表示されるので、Azure のサブスクリプションを所持しているアカウントにサインインします。サインインに成功すると、PowerShell にログインしたアカウントの情報が出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/1f4068c2-5a75-cc79-00c8-10fbf6c07ee6.png)
また、`Get-AzSubscription` コマンドを使用することで、ログインしているアカウントが所持しているサブスクリプション情報を確認することが出来ます。

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

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

```powershell
# サンプルコードのレポジトリを指定する
$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 から実行してみましょう！(管理者として実行しましょう)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/a7803d67-a718-9a58-d088-8e131a464ced.png)
これを実行するだけで、GitHub から WebApp へのデプロイが実行されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/21b9bdf7-6f41-264b-c2ba-6ae130524d74.png)
デプロイが無事に完了し、Azure Portal を確認すると、しっかりと WebApp が出来上がっていました！非常に簡単ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/b73b2bdf-fb7b-5b26-4afc-9d6a9fedc2f1.png)
WebSite の URL にアクセスしても問題なく動いていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/c5134731-538b-007c-c397-7c115b4091f3.png)

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

#参考 URL
[Azure PowerShell モジュールのインストール](https://docs.microsoft.com/ja-jp/powershell/azure/install-az-ps?view=azps-2.8.0)

[チュートリアル:Azure PowerShell を使用して Windows VM を作成および管理する](https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/tutorial-manage-vm)

[Create a web app and deploy code from GitHub](https://docs.microsoft.com/en-us/azure/app-service/scripts/powershell-deploy-github?toc=%2fpowershell%2fmodule%2ftoc.json)