Azure上でVirtual Machineの作成に躓いたときの対処法

#躓いた箇所
VMを作成するために以下のコマンドを入力しました。

```shell
az vm create --location eastus --resource-group malmo --name ${USER}-vm \
 --admin-username ${USER} --admin-password ${VM_PW} \
 --authentication-type password \
 --public-ip-address-dns-name ${USER}  \
 --image microsoft-ads:linux-data-science-vm-ubuntu:linuxdsvmubuntu:latest \
 --size Standard_B2s
```

こんなエラーメッセージが出ました。
困った！


>Azure Error: MarketplacePurchaseEligibilityFailed
>Message: Marketplace purchase eligibilty check returned errors. See inner errorsfor details.
>Exception Details:
>        Error Code: BadRequest
>        Message: Offer with PublisherId: microsoft-ads, OfferId: linux-data->science-vm-ubuntu cannot be purchased due to validation errors. See details for more information.[{"Legal terms have not been accepted for this item on this subscription. To accept legal terms using PowerShell, please use Get-AzureRmMarketplaceTerms and Set-AzureRmMarketplaceTerms API(https://go.microsoft.com/fwlink/?linkid=862451) or deploy via the Azure portal to accept the terms":"StoreApi"}]


#対処法
エラーメッセージによると、「法的条項に同意していないので`linux-data-science-vm-ubuntu`を取得できないよ。同意するためには`PowerShell`で`Get-AzureRmMarketplaceTerms`APIと`Set-AzureRmMarketplaceTerms`APIを使ってね。もしくはAzureポータルで（以下略）」とのこと。

##１．PowerShellに切り替え
なのでPowerShellに切り替えます。
おそらくこの時点ではCloud Shellで`Bash`を選択していると思います。
左上にShellを選択できるプルダウンメニューがあるので、そこから`PowerShell`を選択します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/245438/b366b679-e16a-25e2-1162-5ccf2e338474.png" title="" alt="image.png" width="60%" height="" >

以下のダイアログが表示されたら「確認」ボタンを押します。
<img src="https://qiita-image-store.s3.amazonaws.com/0/245438/1a1b6df9-8a03-d37c-7118-c9c8aa75e8ef.png" title="" alt="image.png" width="60%" height="" >

##２．コマンドで法的条項に同意する
`PowerShell`に切り替わったら、以下のコマンドを入力します。

```shell
Get-AzureRmMarketplaceTerms -Publisher "microsoft-ads" -Product "linux-data-science-vm-ubuntu" -Name "linuxdsvmubuntu" | Set-AzureRmMarketplaceTerms -Accept
```

これは、以下の公式サイトを参考にしてパラメータを今回のケースに合わせて変更したものです。

- [Get-AzureRmMarketplaceTerms](https://docs.microsoft.com/en-us/powershell/module/azurerm.marketplaceordering/get-azurermmarketplaceterms?view=azurermps-6.13.0)
- [Set-AzureRmMarketplaceTerms](https://docs.microsoft.com/en-us/powershell/module/azurerm.marketplaceordering/set-azurermmarketplaceterms?view=azurermps-6.13.0)

以下のように出力されたらOKです。

```shell
Publisher         : microsoft-ads
Product           : linux-data-science-vm-ubuntu
Plan              : linuxdsvmubuntu
LicenseTextLink   : https://storelegalterms.blob.core.windows.net/legalterms/3E5E
                    D_legalterms_MICROSOFT%253a2DADS%253a24LINUX%253a2DDATA%253a2
                    DSCIENCE%253a2DVM%253a2DUBUNTU%253a24LINUXDSVMUBUNTU%253a24T6
                    KYYUE6UICDGSKJBSZ7NUG36TS7TLQNEXKVU5ZKR2Y2KZNYCHB3KPFZZIJSWAY
                    BL3WOEYWIQZASGI2LEGBOM2MSVTDOBSREMDZG2DI.txt
PrivacyPolicyLink : http://www.microsoft.com/privacystatement/en-us/OnlineService
                    s/Default.aspx
Signature         : ZUR5WDU6J53A6VI2ZGX5KDDKW5DKER7TFJ4ABKAIX3N6A3A52IDSSGRYYTNSO
                    A3MNMIRXEBJPA4A2GYU3IJWLO73NZHVQ4F5YR5XO3Q
Accepted          : True
Signdate          : 1/25/19 6:00:47 AM
```

##３．Bashに切り替える
`PowerShell`に切り替えたときと同じ方法で`Bash`に切り替えてください。

##４．VMを作成
問題のコマンドを再び入力します。
コマンドラインに以下のように表示されたら、VMの作成が開始されています。
VMの作成には数分かかります。
待ちましょう。

```shell
 - Running ..
```

数分後、以下のように表示されたらVMの作成完了です。
（見せられない情報は「*」で隠してあります）

```shell
{
  "fqdns": "papa.eastus.cloudapp.azure.com",
  "id": "/subscriptions/********/resourceGroups/malmo/providers/Microsoft.Compute/virtualMachines/********",
  "location": "eastus",
  "macAddress": "********",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.5",
  "publicIpAddress": "*********",
  "resourceGroup": "malmo",
  "zones": ""
}
```

#補足のようなもの
PowerShellの方の作業で、`Get－AzureRmMarketplaceTerms`を使いました。

```shell
Get-AzureRmMarketplaceTerms -Publisher "microsoft-ads" -Product "linux-data-science-vm-ubuntu" -Name "linuxdsvmubuntu"
```
このコマンドは以下の3つのパラメータを持っています。
- Publisher "microsoft-ads"
- Product "linux-data-science-vm-ubuntu"
- Name "linuxdsvmubuntu"

これは元の失敗していたVM作成コマンドのパラメータの一つ`--image`の内容に対応しています。
この中に上記の3つのパラメータと同じ文字列が含まれているのがわかります。

```shell
--image microsoft-ads:linux-data-science-vm-ubuntu:linuxdsvmubuntu:latest
```

`latest`はどこいったんだ、というのは今の僕にはわかりません。
わかるのはこれでMarloプロジェクトを実行するためのVMを作成できたということです。