Azure Resource Manager(ARM)の小ネタ:Marketplaceのサードパーティー製品をJSONテンプレートからデプロイ

#はじめに
やっと私にも「Infrastructure as code」の波が押し寄せてきたので、Azure Resource Manager(ARM)の小ネタを投稿します。

#無料Linux、有料Linux
Azure MarketplaceにはLinuxの各種ディストリビューションがありますが、無料のもの(Azure代はかかりますが)と有料のものがあります。

【無料のものの例】
- CentOS
- Ubuntu

【有料のものの例】
- Red Hat Enterprise Linux
- Asianux

例えばAsianux Server7 SP1はAzure費用の他に0.7円/時の費用が追加でかかります。
こちらの費用はAzure費用と一緒に請求されずに別請求となります。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/8e1263ad-667f-9717-7113-29c6dd919080.png)

#仮想マシンデプロイ方法
Azureポータル画面から仮想マシンを作成する場合は上記の購入ブレードから料金を確認後「購入」を押せば仮想マシンが作成され、課金も始まります。

ただしこちらをJSONテンプレートを使ってデプロイをすると、合っているはずのテンプレートファイルであるのに、エラーが出力されます。

```
PS C:\> New-AzureRmResourceGroupDeployment -ResourceGroupName TESTRG -TemplateParameterFile .\vm-parameters.json -TemplateFile .\vm-template-asianux.json
New-AzureRmResourceGroupDeployment : 9:44:51 - Resource Microsoft.Compute/virtualMachines 'TESTVM01' failed with messa
ge '{
  "error": {
    "code": "ResourcePurchaseValidationFailed",
    "message": "User failed validation to purchase resources. Error message: 'Legal terms have not been accepted for this item on this subscription. To accept legal terms, please go to the Azure portal (http://go.microsoft.com/fwlink/?LinkId=534873) and configure programmatic deployment for the Marketplace item or create it there for the first time'"
  }
}'
発生場所 行:1 文字:1
+ New-AzureRmResourceGroupDeployment -ResourceGroupName TESTRG -Templat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-AzureRmResourceGroupDeployment], Exception
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.NewAzureResourceGroupDe 
   ploymentCmdlet

(以下略)
```

要するに「お金が別途かかる仮想マシンだから、許諾とかチェックしてね」的なことが書いてあります(ホントか?)

対処方法ですが、事前にAzureポータル画面のマーケットプレイスから該当する製品の情報を表示して、そちらのブレード下部にある「プログラムによるデプロイについて」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/0eec8732-f782-2b2f-3450-a5becd8f22f8.png)

続けて開いた「プログラムによるデプロイの構成」ブレードの下部に現在有効なサブスクリプションの一覧が出ていますので、JSONテンプレートからデプロイを行うサブスクリプションの状態を「有効化」に変更して「保存」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/c71eb8d0-be65-443d-de6a-61d96e2d18c6.png)

はい、今度はうまくいきました。

```
PS C:\> New-AzureRmResourceGroupDeployment -ResourceGroupName TESTRG -TemplateParameterFile .\vm-parameters.json -TemplateFile .\vm-template-asianux.json


DeploymentName          : vm-template-asianux
ResourceGroupName       : TESTRG
ProvisioningState       : Succeeded
Timestamp               : 2017/01/06 1:37:54
Mode                    : Incremental
TemplateLink            : 
Parameters              : 
                          Name             Type                       Value     
                          ===============  =========================  ==========
                          addressPrefix    String                     192.168.0.0/16
                          adminPassword    SecureString                         
                          adminUsername    String                     azureuser 
                          networkInterfaceName  String                     TESTVM-nic
                          networkSecurityGroupName1  String                     TEST-subnet1-nsg
                          publicIpAddressName  String                     TESTVM01-pip
                          storageAccountName  String                     ktkrtest20170106st01
                          storageAccountType  String                     Standard_LRS
                          subnetName1      String                     Subnet-1  
                          subnetPrefix1    String                     192.168.0.0/24
                          virtualMachineName  String                     TESTVM01  
                          virtualMachineSize  String                     Standard_F1s
                          virtualNetworkName  String                     TEST-vnet 
                          
Outputs                 : 
DeploymentDebugLogLevel : 
```

![image](https://qiita-image-store.s3.amazonaws.com/0/137436/6652424c-f7ea-6847-b14d-c41a45668dc6.png)

OSにsshでログインして、ディストリビューションも確認します。
![image](https://qiita-image-store.s3.amazonaws.com/0/137436/c3428b7c-e8be-2861-3217-60b13b4f3d3c.png)

#おわりに
Azure Resource Managerが出てすでに一年半以上経過しており、基本的なJSONテンプレートの使い方、作り方に関する情報もネット上に結構出てきたと思います。
その中でも私が「Infrastructure as code」を実践していくなかで、ネタになりそうなことがあれば今後も記事を公開していきたいと思います！