[10分チャレンジ]瞬殺!さくらのクラウドでDC/OSを動かすよ!

## はじめに

[DC/OS](https://dcos.io/)使ってますか？

最近では[TechNet:マイクロソフトが新規 DC/OS オープン ソース プロジェクトに参加](https://blogs.technet.microsoft.com/jpitpro/2016/05/11/マイクロソフトが新規-dcos-オープン-ソース-プロジェ/)や
先日の[de:code2016](https://www.microsoft.com/ja-jp/events/decode/2016/default.aspx)でのセッションなど何かと話題ですね!

このビックウェーブに乗っかろうと思い、インストールを試みたのですが、、ちょっと大変でした。
ローカルならvagrant、クラウド上でならAWSやAzure、DigitalOceanなどで[すぐに動かせる環境](https://dcos.io/docs/1.7/administration/installing/cloud/)があるのですが、 

  - vagrantだと重すぎ
  - クラウドだと、どれくらいのお値段かかるのかよくわからない
  - 将来的に自分で細やかに物理ノードを制御したい
  
という思いがあったため、[さくらのクラウド](http://cloud.sakura.ad.jp)に環境作りました。
インストールには[Terraform for さくらのクラウド](http://qiita.com/yamamoto-febc/items/ae92cd258cf040957487)を使うことで、10分ほどで環境構築ができてしまいます。

さくらのクラウドならクーポンお持ちの方も多いかと思いますし、
日本語使える、料金アラートも設定できるので安心ですよね!


なお、 **タイトルはちょっと釣り気味**です。
前提条件を満たすことを考えるともうちょっとかかるかもしれません。
そこはまあご容赦ください。

DC/OSの詳細なインストール手順は[こちら](https://dcos.io/docs/1.7/administration/installing/)です。合わせて一読ください。

## サーバー環境:料金(198円/時間)

* Bootstrapノード(2コア4GBメモリ) : 41円/時間
* Masterノード(4コア8GBメモリ)    : 65円/時間
* Agentノード(2コア4GBメモリ) * 2台  : 41円/時間 * 2
* スイッチ  : 10円/時間
* SSHキー  : 0円

合計で **198円/時間**ですね。
2万円クーポン使えば余裕ですね:bangbang:

**2016/6/1追記:スイッチ分を入れ忘れていたため修正**

## 前提条件

  - Terraform for さくらのクラウドが使えること
  - Gitが使えること

`Terraform for さくらのクラウド`については以下の記事を参考に使えるようにしておいてください。

[Terraform for さくらのクラウド スタートガイド](http://qiita.com/yamamoto-febc/items/ae92cd258cf040957487)

さくらのクラウドのAPIキーは以下のように環境変数に設定しておいてください。

```bash:APIキーを環境変数に設定
export SAKURACLOUD_ACCESS_TOKEN="取得したAPIトークン"
export SAKURACLOUD_ACCESS_TOKEN_SECRET="取得したAPIシークレット"
```

gitは参考サイトなど多数あると思いますので、適宜インストールしておいてください。
なお、以下ではMac(OSX)で作業しています。
Linux/Windowsで作業する場合は適宜読み替えてください。

## 手順

以下順次実施すればOKです

 - 1) Terraform用に定義ファイル類をGithubから取得
 - 2) SSHキーペア生成
 - 3) `terraform`実施

### 1) Terraform用に定義ファイル類をGithubから取得

```bash:tfファイル取得
$ git clone https://github.com/yamamoto-febc/dcos-on-sakuracloud.git
$ cd dcos-on-sakuracloud
``` 

上記リポジトリは以下リンクからも参照できます。
[GitHub:dcos-on-sakuracloud](https://github.com/yamamoto-febc/dcos-on-sakuracloud)

### 2) SSHキーペア生成

```bash:sshキーペア生成
$ ssh-keygen -C "" -f keys/id_rsa
``` 

### 3) `terraform apply`実施

```bash:terraform実行
$ terraform get    # tfファイル内で使っているモジュールの取得
$ terraform plan   # 実行内容の確認
$ terraform apply  # 実行
```

## DC/OSダッシュボードを開く!

インストールできましたか？
`terraform apply`の最後にダッシュボードのURLが表示されていますのでブラウザで開いてみましょう。

![output.png](https://qiita-image-store.s3.amazonaws.com/0/20668/d20e00fb-d663-2d6e-32ee-0d18e6c6ef30.png "output.png")

もしウィンドウを閉じてしまったなどの場合は以下のコマンドで再表示できます。

```bash:ダッシュボードURL再表示
$ terraform output
```

### ログイン画面

ブラウザで開くと以下のような画面になると思います。

![login.png](https://qiita-image-store.s3.amazonaws.com/0/20668/7b5c5f20-f208-5380-c8e9-0a5d5c34f86f.png "login.png")

Google/GitHub/MicrosoftいずれかのアカウントでOAuthログインします。
なお、初回は **OAuthできれば誰でも**ログイン出来ちゃいます。
(初回ログイン時に管理者として登録され、他のユーザーがログイン出来なくなるみたいです)
なるべく早くログインしましょう。

### ダッシュボード画面

ログイン出来ましたか？
以下のような画面が表示されるはずです。

![dash1.png](https://qiita-image-store.s3.amazonaws.com/0/20668/9f8fba4d-92d5-a736-795c-1e4fd8099207.png)

後はどんどん動かしてみるだけです。

#### 画面サンプル

![dash2.png](https://qiita-image-store.s3.amazonaws.com/0/20668/154403fa-b9da-c99b-9329-c93c050f9879.png)

![dash3.png](https://qiita-image-store.s3.amazonaws.com/0/20668/255d852f-5261-4001-6bda-24b9aec9525a.png)

![dash4.png](https://qiita-image-store.s3.amazonaws.com/0/20668/6fda1a11-c9a5-af87-4f56-56d5f5839752.png)


かっこいいUIですよね!私もこれからガンガン使い倒す予定です！

なお、この構成はスペックが若干低めです。
tfファイルの編集で調整できますので以下の`スペックの調整`を参考にしてください。

## おまけ

### スペックの調整

`variables.tf`を編集してください。

```variables.tf
variable "private_ip" {
    default = {
        "bootstrap" = "192.168.2.11"
        "master01" = "192.168.2.101"
        "agent01" = "192.168.2.201"
        "agent02" = "192.168.2.202"
    }
}

variable "spec" {
    default = {
        # Bootstrapノード
        bootstrap_core = 2
        bootstrap_memory = 4
        
        # Masterノード
        master_core = 4
        master_memory = 8
        
        # Agentノード
        agent_core = 2
        agent_memory = 4
    }
}
```

### 作ったサーバーへのSSH接続

Terraformの`output`を利用してSSH接続情報を表示できます。
以下のコマンドで表示されるコマンドをコピペで実行できます。
$()やバッククォートで直接実行してもOKです。

```SSH接続コマンド表示
$ terraform output
```

![SSH.png](https://qiita-image-store.s3.amazonaws.com/0/20668/8b68ceac-f088-2813-b253-4a3f45d7105a.png "SSH.png")

直接実行する場合は以下のような感じですね。

```bash:直接SSHコマンド実行
$ $(terraform output ssh_bootstrap) # Bootstrapノード
$ $(terraform output ssh_master01)  # Masterノード
$ $(terraform output ssh_agent01)   # Agentノード(01)
$ $(terraform output ssh_agent02)   # Agentノード(02)

```

### 後片付け

使い終わったら`terraform destroy`しておきましょう。
どうせ環境構築は10分もかからないのですから、
お試し/調査の場合は使う度に作ったほうが料金的に安心ですよね！

本日は以上です。Enjoy:bangbang: