RancherでDockerクラスタを構築する-③ RancherからVULTR APIでDockerホストを追加する

![qiita_rancher_04.PNG](https://qiita-image-store.s3.amazonaws.com/0/143640/ccf5c178-d89a-ff12-2753-57059e6bf04b.png)

今回はRancherからVULTR APIを使ってDokerホストを追加し、DockerホストをRancerの管理下に置いていきます。

VULTRは、DigitalOceanと同じようにAPI経由でサーバを起動したりすることが出来ます。

Rancherはデフォルトでは

* Custom(自前で用意する）
* Amazon EC2
* Azure
* DigitalOcean

が用意されていますが、一度設定を行うことで他のクラウドプロバイダも利用することが出来ます。VULTRの他に、SoftLayer・Packetなども利用可能です。

## VULTRのAPIを有効化

VULTRはデフォルトでAPIが無効になっています。
[Account] > [API] からAPIを有効化します。

__Your API KEY__ が　APIキーになります。

## APIのアクセス制限

念のためAPIのアクセス元を制限しましょう。

Access ControllからRancher Serverが稼働しているホストのIPアドレスを入れ、/(スラッシュ）以降に```32```を入力します。

こうすることにより、Rancher ServerのホストからのAPI呼び出し以外はすべてリジェクトされます。

## RancherにVULTRクラウドプロバイダを有効化

VULTRのDocker Machineを有効化します。

Rancher Serverのナビゲーションから、```Infrastracture > Hosts```を選択します。

![qiita_rancher_05.PNG](https://qiita-image-store.s3.amazonaws.com/0/143640/9c730ec2-52e9-21f6-7367-fb04f0df61e1.png)

まだホストが存在しないので、上の画像のように表示されます。

```Add Host```でホストを追加します。

![qiita_rancher_06.PNG](https://qiita-image-store.s3.amazonaws.com/0/143640/923a21d9-5a7f-32da-e202-5c3e2a8d0f7e.png)

このように、CUSTOM / Amazon EC2 / Azure / Digital Ocean しかありませんので、４つクラウドプロバイダ・アイコンの下に小さくある```Manage available machine drivers```をクリックしてください。

![qiita_rancher_07.PNG](https://qiita-image-store.s3.amazonaws.com/0/143640/44727f5b-f4b4-482e-aa4d-717452c3de06.png)

一番下にさりげなーく```vultr```がありますので、vultrの右上にある```Activate```ボタンを押します。

少し待っていると```Active```になります。

もう一度、```Infrastracture > Hosts```から```Add Host```を選ぶと、

![qiita_rancher_08.PNG](https://qiita-image-store.s3.amazonaws.com/0/143640/7cfc3636-619c-e922-50d5-87cbac83bcd2.png)

このように```Other```が増えています。また、Driverが```vultr```になっています。

## RancherからDockerホストを追加する

それでは、```Add Host```から実際にホストを追加してみましょう。

|項目  |入力内容  |備考  |
|---|---|---|
|Name  |(Host名）  |任意  |
|Driver* |vultr  |そのまま  |
|apiKey|(VULTR側のAPI KEY) |VULTR側のAPI KEYを入力してください|
|osId |179|CoreOS。 [OS一覧](https://api.vultr.com/v1/os/list)から選択可能|
|planId|94|2048 MB RAM,45 GB SSD,3.00 TB BW。[プラン一覧](https://api.vultr.com/v1/plans/list)から選択可能|
|priavateNetWorking|オン|Private Networkに入れるかどうか|
|pxeScript|0|そのまま|
|regionId|25|Tokyo。[リージョン一覧](https://api.vultr.com/v1/regions/list)から選択可能|
|sshUser|root|そのまま|
|userdata|(空白）|そのまま|

APIの詳細は、[VULTR API Reference](https://www.vultr.com/api/)を参考にしてください。

Labelsはホスト起動後でも変更可能ですが、例えば

|Key |Value  |  |
|---|---|---|
|env  |production |環境は？  |
|tier  |web |どの層か？（web, worker, db, lb(ロードバランサ）等）  |

を入れておくと、後々ホストが増えてきたときに、AホストではXコンテナを起動する、BホストではXコンテナを起動しない等の細かいスケジューリングが可能です。

スケジューリングについては、以降詳しくご紹介させていただきます。

すべての準備が出来ました！```CREATE```を押してホストを起動してください。

しばらくすると、Rancherにホストが追加されます。

![qiita_rancher_09.PNG](https://qiita-image-store.s3.amazonaws.com/0/143640/030f8c7f-853f-3287-a941-4593ea31c571.png)

VULTR側でもホストが追加されています。

![qiita_rancher_10.PNG](https://qiita-image-store.s3.amazonaws.com/0/143640/3b72c8c0-d836-ee40-2505-73c7745d8417.png)

また、RancherはSSHキーをホスト毎に作ってVULTRホストにアクセスしています。

![qiita_rancher_11.PNG](https://qiita-image-store.s3.amazonaws.com/0/143640/7141034f-d0f3-dc58-f093-405ff493a7e6.png)

このように、VULTRでも比較的簡単にDockerホストを登録することが出来ました。

## Rancher側からホストを削除するとどうなるか？

試してみるまでは、VULTR側は手動でDestroyする必要があると予想していましたが、予想に反して、Rancher側からホストを削除するとVULTR側のホストもキレイにDestroyされるようです！

## 次回予告

次回からはRancherの基本構成である```Stack```を構成していきたいと思います。