Check! Azure DevTest Labs で、使いたいときだけコストの範囲内で安心して開発してみる


こんにちは、オークファンの @dz_ こと大平かづみです。

Prologue - はじめに
==================
ステージングやテスト環境など、常時使うわけでないけど、なくてはならないサーバーの管理、どうしてますか？ 作業時間の間だけ起動・自動シャットダウンや、コストや台数の管理ができたら便利ですよね？

そんなときは、[Azure DevTest Labs](https://azure.microsoft.com/ja-jp/services/devtest-lab/ "DevTest Labs | Microsoft Azure") の出番です！

一通り触ってみて、気に入ったところをご紹介いたします。

そして、管理以上に、ラボ独自の「シークレット ストア」「アーティファクト」「式（Formula）」が便利そうなので、個人で使うにもお勧めできそうです！

Azure DevTest Labs とは？
=========================
Azure の仮想マシンや仮想ネットワークを、開発/テスト用に取りまとめて扱えるラボです。DevTest Labs 自体は無料で利用できます。（ラボ内で利用する仮想マシンなどのリソースに対しては、別途料金がかかります。）

![20160925_azure-devtest-labs_014.png](https://qiita-image-store.s3.amazonaws.com/0/3812/beb005db-bb52-72d9-583e-9587bf826ed1.png)

主な特徴
---------
### 開発者に便利！
- シークレット ストアで鍵の管理が簡単に
- アーティファクトで仮想マシンのセットアップが簡単に
- 仮想マシンのプリセットを作成できる（式）

### 管理者に便利！
- 仮想マシンの管理
    - Marketplace、カスタムイメージが利用できる
    - 仮想ネットワークの構成管理ができる
    - ラボ全体に、アーティファクト、式を配布できる
- ポリシー管理
    - 仮想マシンのスペックや起動台数を制限できる
    - 仮想マシンの起動、シャットダウンの時刻を指定できる
    - シャットダウンの前に、 Webhook に通知ができる
- コスト管理
    - コスト傾向を可視化できる
    - ユーザーごとのコストを一元化できる
    -  Webhook にアラート通知ができる（※確認中）


気になるピックアップ！ ～ ラボユーザー編
=================================
前述したように、 DevTest Labs は仮想マシンの管理を楽にしてくれるのですが、ラボを利用する開発者にとっても便利な点があります。

仮想マシンが、通常より作りやすいのです！

仮想マシンを作ってみる
----------------
何が便利かって、この 2つ、シークレット ストア と、アーティファクトです(σ´v’)

![20160925_azure-devtest-labs_001.png](https://qiita-image-store.s3.amazonaws.com/0/3812/a561f0a5-8226-ba4e-714e-d7ca4db37bdb.png)


### シークレット ストアに鍵を保存
基本的には、安全に保管してくれるキーバリューストアです。

ここに、ユーザーとパスワードのセットや、SSH 公開鍵キーを設定しておくと、仮想マシン作成時に利用できるので便利なんです。

いつもの SSH公開鍵のコピー面倒～(ノω･｡) なんてことなく、プルダウンから選べるようになります。

![20160925_azure-devtest-labs_005.png](https://qiita-image-store.s3.amazonaws.com/0/3812/4d631197-163a-1d7b-3be6-55fb9565f841.png)

### アーティファクトで簡単セットアップ

アーティファクト (英: Artifact) ってなんでしょうって疑問だったのですが、ここではプロビジョニングなどに使える処理セットのことを言うようです。

実際には、下図のような選択肢があり、構成管理ツールなど使わず GUI でさくっと設定できるのは便利だと感じました。また、chef や Docker なども選べるので、既存の資産も活かせそうです。

![20160925_azure-devtest-labs_007.png](https://qiita-image-store.s3.amazonaws.com/0/3812/a3cb98d6-1c00-66c0-76f1-ab15a84f6f37.png)

アーティファクトは複数選べます。また、自作もできるようですよ！

仮想マシンのプリセット(式)を作成しよう
----------------

そして、上記の便利機能でさえも設定が面倒な方は、事前に「プリセット」を作ることができますよ。

その名も、「式」(英: Formula)

しき？ (´･ω･`;)

ちょっと名前からだとわかりにくいのですが、要は仮想マシン作成時の設定項目を事前に保存して置ける機能です。シークレット ストアやアーティファクトも含むことができます。

![20160925_azure-devtest-labs_008.png](https://qiita-image-store.s3.amazonaws.com/0/3812/347ba33b-952b-f326-8420-0230135008ba.png)
![20160925_azure-devtest-labs_009.png](https://qiita-image-store.s3.amazonaws.com/0/3812/205de17d-686d-614f-b463-ec3ac6e658d0.png)

なお、この「式」はラボ全体に対しても作成することができます。

気になるピックアップ！ ～ ラボ管理者編
=====================================
ラボの管理者は、ラボのユーザーに対して、仮想マシンのベースを用意したり、制限したりできます。

触ればすぐ理解できるものが多いので、さくっと全体を紹介いたします。

構成
----------------
構成では、主に仮想マシンの作成に関する機能が揃っています。
### 管理
| 項目 | 説明 |
|------|-----|
| アーティファクト リポジトリ | アーティファクトを登録できる（※下図参照） |
| 仮想ネットワーク | 利用できる仮想ネットワークを管理できる |

![20160925_azure-devtest-labs_015.png](https://qiita-image-store.s3.amazonaws.com/0/3812/702a7057-a922-185b-4dff-146e34f1c7cb.png)


### 仮想マシンのベース
いくつかの方法で、ラボのユーザーに仮想マシンのベースを提供できます。

| 項目 | 説明 |
|------|-----|
| Marketplace イメージ | Marketplace からラボのユーザーが利用するイメージを制限できる |
| カスタム イメージ (VHD) | 通常の仮想マシンのように、VHD を用いたカスタムイメージを登録することができる（下記に参考リンク） |
| 式 |ラボ全体で利用できる式を登録できる |

仮想マシンと VHD については、こちらをご参考くださいませ。

- [VM を作成するための Azure DevTest Labs のカスタム イメージの管理](https://azure.microsoft.com/ja-jp/documentation/articles/devtest-lab-create-template/ "VM を作成するための Azure DevTest Labs のカスタム イメージの管理 | Microsoft Azure")
- [Azure 仮想マシン用のディスクと VHD について](https://azure.microsoft.com/ja-jp/documentation/articles/virtual-machines-linux-about-disks-vhds/ "Linux VM 用のディスクと VHD について | Microsoft Azure")

ポリシー設定
----------------
ポリシー設定では、ラボのユーザーに対して、ポリシー（仮想マシンの制約）や、スケジュール（自動起動・自動シャットダウン）を設定できます。

### ポリシー
| 項目 | 説明 |
|------|-------|
| 許可される仮想マシン サイズ | ラボ内で起動できる仮想マシンのスペックを制限できる |
| ユーザー当たりの仮想マシン数 | ラボ内で１ユーザーが利用できる仮想マシン数を制限できる |
| ラボあたりの仮想マシン数 | ラボ全体の仮想マシン数を制限できる |

### スケジュール
| 項目 | 説明 |
|------|-----|
| 自動シャットダウン | シャットダウン時刻を指定、15分前を通知する Webhook URL を指定できる |
| 自動開始 | 自動開始時刻と、曜日を指定できる |

コスト設定
----------------

コスト設定では、ラボ全体のコスト傾向を確認することができます。

気になる点としては、コストのしきい値を設定して、 Webhook に通知できそうなところですね。（※ まだ実動作を確認できてないので、確認でき次第追記いたします。）

| 項目 | 説明 |
|------|-----|
| ラボのコスト傾向 | ラボ全体のコスト傾向を、期間ごとに可視化して確認できる |
| リソースごとのコスト | リソースごとに利用ユーザーやコストが確認できる |

![20160925_azure-devtest-labs_016.png](https://qiita-image-store.s3.amazonaws.com/0/3812/b7ad7c98-175a-2199-d7b7-ba0930130e67.png)

![20160925_azure-devtest-labs_017.png](https://qiita-image-store.s3.amazonaws.com/0/3812/8ca593fa-6561-bf07-bb04-fd69aa2ad589.png)



Epilogue - おわりに
==================
ざっくりですが、推しポイントをご紹介させていただきました！

次回は、アーティファクトを自作してみようかな～(o´ω｀o)