Check! Azure CycleCloud のアプリケーションサーバーを建ててみる

こんばんは、 @dz_ こと大平かづみです。

Prologue - はじめに
====

先日 GA (Genaral Available) した、[Azure CycleCloud](https://azure.microsoft.com/en-us/features/azure-cyclecloud/) を試してみます。

CycleCloud は、もともと昨年8月に Microsoft に買収された [Cycle Computing](https://cyclecomputing.com/)  の製品で、エンタープライズ向けのセキュアでフレキシブルなクラウド上のHPC環境を管理できるソフトウェアのようです。

Azure CycleCloud のアプリケーション自体は無料で、いくつかの方法で動かすことができます。

- 自身のAzure上にデプロイする（クイックスタート）
- Marketplace から購入する
- コンテナイメージ [microsoft/azure-cyclecloud](https://hub.docker.com/r/microsoft/azure-cyclecloud/) を利用する

[クイックスタート](https://docs.microsoft.com/en-us/azure/cyclecloud/quickstart-install-cyclecloud) 、または [手動インストール](https://docs.microsoft.com/en-us/azure/cyclecloud/installation) について、それぞれご参考ください。

References
----
- [ASCII.jp：買収したHPCクラスター管理ツールCycleCloudを「Azure CycleCloud」としてGA (1/3)｜さとうなおきの「週刊アジュール」](http://ascii.jp/elem/000/001/741/1741250/)
- [Microsoft Azure, the cloud for high performance computing | Blog | Microsoft Azure](https://azure.microsoft.com/en-us/blog/microsoft-azure-the-cloud-for-high-performance-computing/)
- [Microsoft acquires Cycle Computing to accelerate Big Computing in the cloud - The Official Microsoft Blog`](https://blogs.microsoft.com/blog/2017/08/15/microsoft-acquires-cycle-computing-accelerate-big-computing-cloud/)

Azure 上にデプロイしてみる
====

さて、 [クイックスタート](https://docs.microsoft.com/en-us/azure/cyclecloud/quickstart-install-cyclecloud) を参考に、自身の Azure 上に建ててみましょう。

大まかな手順
----

1. サービスプリンシパルを作成する
2. SSHキーペアを作成する
3. デプロイする
4. CycleCloud アプリケーションサーバーにログインする

準備
----
- Azure アカウント
- [Azure Cloud Shell](https://shell.azure.com/) を利用するか、[Azure CLI 2.0](https://docs.microsoft.com/cli/azure/install-azure-cli) がインストールされた環境

作業メモ
----

```bash
# サービスプリンシパルを作成する
az ad sp create-for-rbac --name CycleCloudApp --years 1
```
`appId`, `password`, `tenant` を記録しておきます。

```bash
# SSHキーペアを作成する
ssh-keygen -f ~/.ssh/id_rsa-cyclecloud -N "" -b 4096

# 公開鍵をコピーする
cat ~/.ssh/id_rsa-cyclecloud.pub

# 公開鍵をコピーする（※ WSLの場合は clip.exe に渡すことでコピーできる）
cat ~/.ssh/id_rsa-cyclecloud.pub | clip.exe
```

[Deploy Azure CycleCloud](https://docs.microsoft.com/en-us/azure/cyclecloud/quickstart-install-cyclecloud#deploy-azure-cyclecloud) の _Deploy to Azure_ ボタンをクリックして、デプロイ情報の入力画面に進みます。

[![Deploy to Azure](http://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fraw.githubusercontent.com%2FCycleCloudCommunity%2Fcyclecloud_arm%2Fmaster%2Fazuredeploy.json) (2018/9 時点のリンクを引用）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/3812/684f6c20-6b1d-771c-bcd9-90c26ae2df84.png)

それぞれ選択、記入し、利用規約を確認・承認して「Purchase」ボタンをクリックします。

| 項目 | 説明 |
| --- | --- |
| _Subscription_ | 利用するAzureサブスクリプションを選択する |
| _Resource group_ | CycleCloudアプリケーションを配置するリソースグループ名を指定する |
| _Location_ | リソースを配置するロケーションを選択する |
| _Tenant Id_ | サービスプリンシパル作成時の `tenant` を入力する |
| _Application Id_ | サービスプリンシパル作成時の `appId` を入力する |
| _Application Secret_ | サービスプリンシパル作成時の `password` を入力する |
| _SSH Public Key_ | 作成したSSHキーペアの公開鍵（ `ssh-rsa XXX~`）を入力する |
| _Username_ | CycleCloud アプリケーションをインストールする仮想マシンにログインするためのユーザー名を指定する |
| _Cyclecloud Vm Size_ | CycleCloud アプリケーションをインストールする仮想マシンのVMサイズを指定する（※ 後述） |
| _Cyclecloud Vm Storage_ | CycleCloud アプリケーションをインストールする仮想マシンのストレージタイプを指定する（※ 後述） |
| _Cyclecloud Version_ | CycleCloud のバージョンを指定する |
| _Azure Sovereign Cloud_ | [ソブリンリージョン](https://azure.microsoft.com/ja-jp/global-infrastructure/)については、日本で利用する場合は `public` を選択する |
| _Vnet Name_ | 仮想ネットワークの名前を指定する |

※ VMサイズについて、デフォルトの `D3 v2` は、約33,440円/月で、個人で試すにはちょっと高めですね（笑）。[Marketplace の Azure CycleCloud](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/azurecyclecloud.azure-cyclecloud-vm?tab=PlansAndPrice) を確認すると、 `F4S`（約 20,154円/月） の `Premium storage` で対応できるようなので、 `Standard_F4s_v2` を指定してみます。(お高いので使わないときは停止しておきましょうか…）ストレージの選択はお任せします。

```bash
# 参考) VMサイズ一覧
az vm list-sizes -l japaneast -o table
```

デプロイしたらしばし待ちます。

デプロイが完了したら、CycleCloud アプリケーションサーバーへログインしてみましょう。

まず、CycleCloudアプリケーションサーバーのドメイン名（FQDN）を取得します。

```bash
# リソースグループを変数に指定する
export RESOURCE_GROUP="<your resource group of cyclecloud>"

# ネットワークを開放する
az network public-ip show -g ${RESOURCE_GROUP?} -n cycle-ip --query dnsSettings.fqdn
```
`xxx.japaneast.cloudapp.azure.com` このようなドメイン名が表示されます。このドメインをブラウザで開きます。
 例） `https://xxx.japaneast.cloudapp.azure.com/` 

自己署名証明書なので警告が表示されますが、 アクセスします。

お、無事セットアップ画面が表示されました！

![image.png](https://qiita-image-store.s3.amazonaws.com/0/3812/85b6a2c3-35df-a497-7c1b-0da93a2c6c8b.png)

サイト名を入力して、「Next」ボタンをクリックします。規約を読み、承諾のチェックを付けて、「Next」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/3812/8b352308-f999-a3e3-5eb9-3e9396191cd5.png)

_User ID_, _Name_, _Passwrord_, _Confirm_ を埋めて、「Done」ボタンをクリックします。

やった！できました！(\*'ω'\*)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/3812/ecbc0236-f74c-4341-e7a8-de219f7fb876.png)

気になりどころのクラスタのひな型がすでに用意されているようですね♪

次回、クラスタをデプロイしていろいろ試してみようと思います。

なお、課金が気になる方は、CycleCloudアプリケーションサーバーやクラスタを停止しておくなど、ご留意くださいませ。

Epilogue - おわりに
====

Azure ポータルではないということで気になっていましたが、簡単にアプリケーションサーバーを建てられることがわかりました。

いよいよ、使い勝手が気になりますね(\*'ω'\*)