Eclipse Che を CentOS7 on VirtualBox on Vagrantで試す

Eclipse CheのLocal Installでの環境構築手順を書こうと思います。
※使用OSはWindowsです。
※現時点では最新版は5.7.0です。
[eclipse/che - Docker Hub](https://hub.docker.com/r/eclipse/che/tags/)
([Eclipse Che Blog](https://che.eclipse.org/)によると、月に2回ペースでのリリースを予定しているようです)

#Eclipse Cheとは
Cloud IDEの一つで、Eclipse Foundationで開発されているCloud IDEです。
(エディタ部分はEclipse Orionをベースとしているようです)
Cloud IDEとは端的に言ってしまうとWebブラウザ経由で利用するIDEです。

Cloud IDEには他にもAWSに買収されたCloud9、codenvy等色々あります。
こんな比較サイトもあります
[26 Best cloud IDEs - slant](https://www.slant.co/topics/713/~best-cloud-ides)

codenvyはEclipse Cheのエンタープライズ版のようなものです。
使ってみればわかりますが、Eclipse CheのSaaS利用が、
すなわちcodenvyの無償枠での利用となります。
codenvyのCEOであるTyler Jowell氏はEclipse Cheのメインコミッターでもあります。
たまにTwitterをエゴサしているのか、Che関連のツイートをしているとリプくれるときがあります。

Cloud IDEはほとんどの場合有償のSaaSとして利用します。
Eclipse CheもSaaS形式とAzureやAWSへインストールするPrivate Cloud形式、
Local Install形式の3つの利用形態があります。
今回はLocal Install形式について書いてます。

# VirtualBoxをインストールする
VirtualBox自体はスーパバイザ型の仮想化ソフトウェアで、Vagrantのproviderとして必要になります。
Virtualboxである必要はないのですが、vagrantのデフォルトのproviderはVirtualBoxですのでいったんここは思考停止で。

# Vagrantをインストールする
仮想環境の構築を楽にするソフトウェアです。
VirtualBoxだけでも正直いいのですが、楽に起動停止したいので。

### Vagrantのプラグインをインストールする
Vagrantを便利に使うためにも、最低でも以下のプラグインを導入します。
以下のコマンドはどこで叩いても構いません。

- vagrant-guestadditions

```
vagrant plugin install vagrant-vbguest
```

vagrant up時にGuestAdditionsを自動でアップデートしてくれる優れものです。

- vagrant-teraterm(事前にteratermのインストールが必要です)

```
vagrant plugin install vagrant-teraterm
```

`vagrant up`後に`vagrant teraterm`とすると、起動したVMに対してTeratermが起動します。(事前にteratermのインストールが必要です)

他にもいろいろあります。
[Vagrantプラグインの使い方（vbguest, hostmanager, sahara, snapshot）
Vagrant](http://www.task-notes.com/entry/20150714/1436842800)
[vagrantの便利に使えるプラグイン6選](http://qiita.com/succi0303/items/e06bca7db5a0c3de96af)


# Vagrantのboxを導入する
boxとは、仮想マシンの起動に必要となるイメージファイルです。
以下のコマンドはどこで叩いても構いません。

```
vagrant box add centos/7
```

Officialのboxであり、メンテナンス頻度もそれなりの[centos/7](https://atlas.hashicorp.com/centos/boxes/7/)がいいと思います。
かゆいところに手の届くいい感じのboxがあっても、サードパーティのboxはいつの間にか消えてることが多いです。

#いざ`vagrant up`
### vagrant init
適当にcentos/7用のvagrantfileが置かれるフォルダを作成して`vagrant init`します。

```
mkdir centos7
cd centos7
vagrant init cantos/7
```

### `vagrant up`

先ほど`vagrant init`で作成されたvagrantfileのある階層で実行します。
providerオプションでproviderを指定できますが、デフォルトVirtualBoxなので今回は特に指定する必要は無いです。

```
vagrant up
```

### vagrant teratermで接続

起動すれば、以下のコマンドだけでTeratermの起動から接続まで自動で行われます。

```
vagrant teraterm
```


# Dockerをインストールする
`vagrant up`で起動が成功したら`vagrant teraterm`でターミナルを起動してください。
Dockerのインストール方法は[こちら](https://store.docker.com/editions/community/docker-ce-server-centos?tab=description)の通りに。

### yumリポジトリのセットアップ

```
sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
```

### Docker CE(Community Edition)のインストール

```
sudo yum -y install docker-ce
```

### Start Docker

```
systemctl start docker
```

# Eclipse Cheをインストールする
[こちら](https://www.eclipse.org/che/docs/setup/getting-started/)の通りに。

### インストール、起動

```
docker run -it eclipse/che start
```

以下のように出れば成功です。

```
INFO: (che start): Use: http://10.0.2.15:8080
INFO: (che start): API: http://10.0.2.15:8080/swagger
```

# Eclipse Cheを開く
vagrantのconfing.vm.networkのfowarder_portの設定と、
private_networkの設定通りのホスト名とポート番号のURLへアクセスしてください。
最初はEclipse Cheのdashboardの画面が表示されます。


# Tips
### vagrant upがrsyncが見つかりませんで失敗する

cygwinをインストールして解決しました。
なお、rsyncはデフォルトではインストールされないので個別選択してください。

### guest⇒hostで共有したい

vagrantのsync folderという設定ではhost⇒guestの同期しか取れないので、guest⇒hostの共有を図りたい場合はVirtualBoxの共有フォルダの設定で行う必要があります。

### WARNING: IPv4 forwarding is disabled

`docker run`時にこのメッセージが出力されてche serverが起動しないときはこれで解決しました。
[DockerをCentOS6.4にインストールする方法](http://qiita.com/gitcell/items/7cfde70e7a73fa1d2f7b)