Rancher CLIを触ってみる



![Kobito.7f8r3i.png](https://qiita-image-store.s3.amazonaws.com/0/40692/e3ece2bb-d5ab-acd8-412b-087c41bcefd9.png "Kobito.7f8r3i.png")


# これで何がわかるか

基本的なRancher CLIの設定と使いかた

## 注意事項
11/21時点のRancher Server v.1.2.0のpre4-rc10を対象に
操作しているため、GAリリースの際には試用が変わっている可能性があります。

# Rancherとは
Rancherはエンタープライズ向けのコンテナ環境の管理ツールです。
Dockerコマンド一つでひとまずの試用は開始可能です。

http://rancher.com/

# Rancher CLI
Rancherはv.1.2.0よりRancher CLIと称してCLIが提供されています。
Dockerホストの情報や、個別のコンテナの情報などを取得するだけでなく、
コンテナ、サービスの起動が可能です。

# 手順
## Rancher CLIのダウンロードと初期設定
1) Rancher Server(v.1.2.0)のGUIにブラウザでアクセスします。
2) 画面右下のDownload CLIからRancher CLIをダウンロードします。

![Kobito.IlP4vh.png](https://qiita-image-store.s3.amazonaws.com/0/40692/5d90c6ef-d5cd-61d5-aa8c-2386855f8dfe.png "Kobito.IlP4vh.png")

3) ターミナルでダウンロードしたファイルを展開します。
   (mac版の場合)

```bash:ファイルの展開
$ tar xvzf rancher-darwin-amd64-v0.3.1.tar.gz
$ ls
rancher-v.0.3.1
$ cd rancher-v.0.3.1
$ ls 
rancher
```

4) APIキーを作成します。

![Kobito.btxTLG.png](https://qiita-image-store.s3.amazonaws.com/0/40692/3e85f845-588d-e51b-fa84-aa09523b6e8e.png "Kobito.btxTLG.png")
画面上部APIのメニューを選択

![Kobito.4N5Dmw.png](https://qiita-image-store.s3.amazonaws.com/0/40692/dbeae52c-1777-4971-ba16-16d3b96ee56a.png "Kobito.4N5Dmw.png")

Add Account API Keyボタンをクリック

![Kobito.11oe5t.png](https://qiita-image-store.s3.amazonaws.com/0/40692/ce2edd19-e66c-85a1-cccc-9ac9f38e0235.png "Kobito.11oe5t.png")
NameとDescription(説明)を入力

![Kobito.Uh6MWX.png](https://qiita-image-store.s3.amazonaws.com/0/40692/da0edbe6-accd-59d5-a029-841b0d71006d.png "Kobito.Uh6MWX.png")

Secret Keyはここでしか表示されないのでメモっておきます。


5) Rancher CLIの設定を投入します。
実際には複数の方法が存在します。


```bash:CLI設定の投入
$ ./rancher config
```

Dockerサーバのホスト名 (ホスト名またはIPアドレス:ポート番号)と
Access Key, Secret Keyを設定します。

これで、Rancher CLIの実行設定が完了しました。

## Dockerホスト一覧の取得
Rancherの管理対象となっているDockerホストの一覧を取得します。

```bash:Dockerホストの一覧を取得
$ ./rancher hosts
ID        HOSTNAME     STATE     CONTAINERS   IP           LABELS    DETAIL
1h1       ubuntu-001   active    5            172.17.0.1
```

## Dockerコンテナの一覧を取得

```bash:コンテナの一覧取得
$ ./rancher ps -c
ID        NAME             IMAGE                             STATE     HOST      IP           DOCKER         DETAIL
1i3       rancher-agent    rancher/agent:v1.1.0-rc15         running   1h1                    e5d58327753f
1i4       rancher-server   rancher/server:v1.2.0-pre4-rc10   running   1h1       172.17.0.2   36ff8781d611
1i5       nginx            nginx:latest                      running   1h1       172.17.0.3   eae3366c058d
```

## Dockerコンテナのログの取得

./rancher ps -c で取得できたコンテナを指定することで
docker logsと同様の情報が取得可能になります。
さらに、docker logs -f と同様に"./rancher logs -f コンテナ名" とすることで
tail -fのような形でログを取得することができます。

```bash:ログの取得
$ ./rancher logs nginx
192.168.0.5 - - [21/Nov/2016:14:25:59 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36" "-"
192.168.0.5 - - [21/Nov/2016:14:26:00 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36" "-"
192.168.0.5 - - [21/Nov/2016:14:26:00 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36" "-"
192.168.0.5 - - [21/Nov/2016:14:26:01 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36" "-"
```


# まとめ
Rancher CLIを利用することで、コンテナのログの取得などが可能になります。
さらに、サーバへのログインや、root権限(sudo)も不要となること、
複数のDockerホストを対象にコマンドを実行することが容易になるため
うまく扱うことで大規模環境も容易に取り扱うことができるかもしれません。

# 補遺
RancherのAPIは基本的にRESTfulに構成されています。
つまり、Rancher CLIの中身はただのREST APIのラッパーとなっています。
ここからRancherのREST APIを用いることで他のツールとの連携
なども容易に実現できるようになっています。