Eclipse Che を Vagrant で試す


[Eclipse Foundation](https://www.eclipse.org/) には [Eclipse Cloud Development (ECD)](https://projects.eclipse.org/projects/ecd) というプロジェクトがあり、以下のようにクラウド統合開発環境の提供をミッションとしています。

> The mission of ECD is to create technologies, platforms, and tools necessary to enable the delivery of highly integrated cloud development and cloud developer environments. 

[Eclipse Che](http://www.eclipse.org/che/) はその *ECD* のサブプロジェクトで、Docker が組み込まれた Workspace とブラウザベースの IDE を提供します。
ローカルマシンでの開発環境セットアップから本当の意味で解放されますし、どのマシンからでも *いつもの* 環境で開発することができます。
現時点での過剰な期待は厳禁ですが、こういう未来があってもいいなぁと思います。

![Overview of Eclipse Che architecture](https://www.filepicker.io/api/file/O3D1OORwRmCWzuE8mD2s "Overview of Eclipse Che architecture")


## 準備

Win派の方に聞かれたりするので書いておきます。ちょっと古い構成で試します。

* Vagrant: 1.7.2
* VirtualBox: 4.3.14

Che は プロジェクトの構築や実行に Docker を必要とします。
Windows や Mac で既に Docker が利用可能になっている場合は以下の手順は不要です。
今回は一身上の都合により Docker インストール済みの Vagrant Box [box-cutter/centos71-docker](https://vagrantcloud.com/box-cutter/boxes/centos71-docker) を利用して Docker 環境を構築します。

```
$ vagrant init boxcutter/centos71-docker; vagrant up --provider virtualbox
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'boxcutter/centos71-docker' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'boxcutter/centos71-docker'
    default: URL: https://atlas.hashicorp.com/boxcutter/centos71-docker
==> default: Adding box 'boxcutter/centos71-docker' (v2.0.11) for provider: virtualbox
    default: Downloading: https://atlas.hashicorp.com/boxcutter/boxes/centos71-docker/versions/2.0.11/providers/virtualbox.box
==> default: Successfully added box 'boxcutter/centos71-docker' (v2.0.11) for 'virtualbox'!
==> default: Importing base box 'boxcutter/centos71-docker'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'boxcutter/centos71-docker' is up to date...
==> default: Setting the name of the VM: VMs_default_1455273397925_19314
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: 
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: 
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if its present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default: 
    default: Guest Additions Version: 5.0.12
    default: VirtualBox Version: 4.3
==> default: Mounting shared folders...
    default: /vagrant => /Users/niwashun/Workspaces/gs-eclipse-che
```

Unix 系では `sudo` なしで Docker を実行できる必要があるため、Che を起動するユーザが `docker` グループに所属している必要があります。
また、VM起動時に Docker デーモンも起動すると後々楽チンです。
今回利用した Box ファイルではそれらが設定済みになっていました。

```
[vagrant@localhost ~]$ cat /etc/group | grep docker
docker:x:995:root,vagrant

[vagrant@localhost ~]$ systemctl is-enabled docker.service
enabled
```

Docker が動くか検証してみます。

```
[vagrant@localhost ~]$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b901d36b6f2f: Pull complete 
0a6ba66e537a: Pull complete 
Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7
Status: Downloaded newer image for hello-world:latest

Hello from Docker.
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker Hub account:
 https://hub.docker.com

For more examples and ideas, visit:
 https://docs.docker.com/userguide/
```

次に Java 8 をインストールします。
手元にあった別の `Vagrantfile` からコピペしたので JDK ですが、Che をソースコードからビルドするのでなければ JRE で問題ないそうです。

```
[vagrant@localhost ~]$ curl -H "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" -L -o jdk8-linux-x64.rpm "http://download.oracle.com/otn-pub/java/jdk/8u74-b02/jdk-8u74-linux-x64.rpm"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:06 --:--:--     0
100   285  100   285    0     0     22      0  0:00:12  0:00:12 --:--:--    62
100  152M  100  152M    0     0  2058k      0  0:01:15  0:01:15 --:--:-- 4135k
[vagrant@localhost ~]$ 
[vagrant@localhost ~]$ sudo yum localinstall -y jdk8-linux-x64.rpm
読み込んだプラグイン:fastestmirror
jdk8-linux-x64.rpm を調べています: 2000:jdk1.8.0_74-1.8.0_74-fcs.x86_64
jdk8-linux-x64.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ jdk1.8.0_74.x86_64 2000:1.8.0_74-fcs を インストール
--> 依存性解決を終了しました。

依存性を解決しました

=================================================================================================================================================================================================================================
 Package                                              アーキテクチャー                                バージョン                                                  リポジトリー                                              容量
=================================================================================================================================================================================================================================
インストール中:
 jdk1.8.0_74                                          x86_64                                          2000:1.8.0_74-fcs                                           /jdk8-linux-x64                                          255 M

トランザクションの要約
=================================================================================================================================================================================================================================
インストール  1 パッケージ

合計容量: 255 M
インストール容量: 255 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 2000:jdk1.8.0_74-1.8.0_74-fcs.x86_64                                                                                                                                                             1/1 
Unpacking JAR files...
	tools.jar...
	plugin.jar...
	javaws.jar...
	deploy.jar...
	rt.jar...
	jsse.jar...
	charsets.jar...
	localedata.jar...
	jfxrt.jar...
  検証中                  : 2000:jdk1.8.0_74-1.8.0_74-fcs.x86_64                                                                                                                                                             1/1 

インストール:
  jdk1.8.0_74.x86_64 2000:1.8.0_74-fcs                                                                                                                                                                                           

完了しました!
```

次に、Che 本体をダウンロードします。
適当にTGZパッケージをチョイスしましたが、ZIP版やJAR版もありますのでお好きなやつをどうぞ。

```
[vagrant@localhost ~]$ curl -O https://install.codenvycorp.com/che/eclipse-che-latest.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  164M  100  164M    0     0  4311k      0  0:00:38  0:00:38 --:--:-- 5525k
[vagrant@localhost ~]$ 
[vagrant@localhost ~]$ tar xvfz eclipse-che-latest.tar.gz 
eclipse-che-4.0.0-RC3/bin/che.sh
eclipse-che-4.0.0-RC3/bin/che.bat
eclipse-che-4.0.0-RC3/bin/che-install-plugin.sh
eclipse-che-4.0.0-RC3/bin/che-install-plugin.bat
eclipse-che-4.0.0-RC3/tomcat/bin/setenv.sh
eclipse-che-4.0.0-RC3/tomcat/conf/server.xml
eclipse-che-4.0.0-RC3/tomcat/
eclipse-che-4.0.0-RC3/tomcat/bin/
eclipse-che-4.0.0-RC3/tomcat/conf/
eclipse-che-4.0.0-RC3/tomcat/endorsed/
eclipse-che-4.0.0-RC3/tomcat/lib/
...
```

Che を実行するには環境変数 `JAVA_HOME` が必要なので、`.bash_profile` に以下を追記します。

```bash:.bash_profile
export JAVA_HOME=$(readlink /etc/alternatives/java | sed -e 's/\/bin\/java//g')
```

これで起動の準備ができました、と言いたいところですが・・・

* VM のメモリがデフォルトの 1GB だと足りない（気がする）
* ゲスト上に立ち上げた Che に対してホストからブラウザでアクセスするのでIPアドレスを指定したい

などと思ったため、Vagrantfile を以下のように修正しました。
メモリサイズやIPアドレスは自分の環境に合わせて適宜設定してください。
JDK のインストールや Che のダウンロードも `provision` に書いてみました。
`JAVA_HOME` の設定も書いてみたのですが、何かが悪くて失敗してしまったので割愛してます。 
*Shell* 力不足ですみません。。。

```ruby:Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "boxcutter/centos71-docker"
  config.vm.network :private_network, ip: "192.168.28.28"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "4096"
  end
  config.vm.provision "shell", inline: <<-SHELL
    curl -H "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" -L -o jdk8-linux-x64.rpm "http://download.oracle.com/otn-pub/java/jdk/8u74-b02/jdk-8u74-linux-x64.rpm"
    yum localinstall -y jdk8-linux-x64.rpm
    curl -O "https://install.codenvycorp.com/che/eclipse-che-latest.tar.gz"
    tar xvfz eclipse-che-latest.tar.gz
    sudo chown -R vagrant:vagrant *
  SHELL
end            
```

## Che 起動

準備ができたので Che を起動します。
ホスト側からアクセスしたいので起動オプションに `-r:192.168.28.28` もしくは `--remote:192.168.28.28` を指定します。
このオプションはリモートマシンからアクセスしたい場合に指定するようです。
ローカルのマシンで直接 Che を起動してアクセスする場合は不要なので、お試し方法を誤ってしまった気がしています。

```
[vagrant@localhost eclipse-che-4.0.0-RC3]$ bin/che.sh -r:192.168.28.28 run
Docker is natively installed and reachable...

############## HOW TO CONNECT YOUR CHE CLIENT ###############
After Che server has booted, you can connect your clients by:
1. Open browser to http://localhost:8080, or:
2. Open native chromium app.
#############################################################

Using CATALINA_BASE:   /home/vagrant/eclipse-che-4.0.0-RC3/tomcat
Using CATALINA_HOME:   /home/vagrant/eclipse-che-4.0.0-RC3/tomcat
Using CATALINA_TMPDIR: /home/vagrant/eclipse-che-4.0.0-RC3/tomcat/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_74/
Using CLASSPATH:       /home/vagrant/eclipse-che-4.0.0-RC3/tomcat/conf/:/usr/java/jdk1.8.0_74//lib/tools.jar:/home/vagrant/eclipse-che-4.0.0-RC3/tomcat/bin/bootstrap.jar:/home/vagrant/eclipse-che-4.0.0-RC3/tomcat/bin/tomcat-juli.jar
2016-02-12 11:12:33,940[main]             [INFO ] [o.a.c.s.VersionLoggerListener 89]    - Server version:        Apache Tomcat/8.0.28
2016-02-12 11:12:33,955[main]             [INFO ] [o.a.c.s.VersionLoggerListener 91]    - Server built:          Oct 7 2015 18:25:21 UTC
2016-02-12 11:12:33,955[main]             [INFO ] [o.a.c.s.VersionLoggerListener 93]    - Server number:         8.0.28.0
2016-02-12 11:12:33,955[main]             [INFO ] [o.a.c.s.VersionLoggerListener 95]    - OS Name:               Linux
2016-02-12 11:12:33,955[main]             [INFO ] [o.a.c.s.VersionLoggerListener 97]    - OS Version:            3.10.0-229.el7.x86_64
2016-02-12 11:12:33,955[main]             [INFO ] [o.a.c.s.VersionLoggerListener 99]    - Architecture:          amd64
2016-02-12 11:12:33,955[main]             [INFO ] [o.a.c.s.VersionLoggerListener 101]   - Java Home:             /usr/java/jdk1.8.0_74/jre
2016-02-12 11:12:33,956[main]             [INFO ] [o.a.c.s.VersionLoggerListener 103]   - JVM Version:           1.8.0_74-b02
2016-02-12 11:12:33,956[main]             [INFO ] [o.a.c.s.VersionLoggerListener 105]   - JVM Vendor:            Oracle Corporation
2016-02-12 11:12:33,956[main]             [INFO ] [o.a.c.s.VersionLoggerListener 107]   - CATALINA_BASE:         /home/vagrant/eclipse-che-4.0.0-RC3/tomcat
2016-02-12 11:12:33,956[main]             [INFO ] [o.a.c.s.VersionLoggerListener 109]   - CATALINA_HOME:         /home/vagrant/eclipse-che-4.0.0-RC3/tomcat
2016-02-12 11:12:33,956[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Djava.util.logging.config.file=/home/vagrant/eclipse-che-4.0.0-RC3/tomcat/conf/logging.properties
2016-02-12 11:12:33,956[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
2016-02-12 11:12:33,957[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Dport.http=8080
2016-02-12 11:12:33,957[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Dcom.sun.management.jmxremote
2016-02-12 11:12:33,957[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Dcom.sun.management.jmxremote.ssl=false
2016-02-12 11:12:33,957[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Dcom.sun.management.jmxremote.authenticate=false
2016-02-12 11:12:33,957[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Dche.local.conf.dir=/home/vagrant/eclipse-che-4.0.0-RC3/conf/
2016-02-12 11:12:33,957[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Dche.home=/home/vagrant/eclipse-che-4.0.0-RC3
2016-02-12 11:12:33,957[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Dche.logs.dir=/home/vagrant/eclipse-che-4.0.0-RC3/tomcat/logs/
2016-02-12 11:12:33,957[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Djava.endorsed.dirs=/home/vagrant/eclipse-che-4.0.0-RC3/tomcat/endorsed
2016-02-12 11:12:33,958[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Dcatalina.base=/home/vagrant/eclipse-che-4.0.0-RC3/tomcat
2016-02-12 11:12:33,958[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Dcatalina.home=/home/vagrant/eclipse-che-4.0.0-RC3/tomcat
2016-02-12 11:12:33,958[main]             [INFO ] [o.a.c.s.VersionLoggerListener 115]   - Command line argument: -Djava.io.tmpdir=/home/vagrant/eclipse-che-4.0.0-RC3/tomcat/temp
2016-02-12 11:12:34,231[main]             [INFO ] [o.a.c.http11.Http11NioProtocol 424]  - Initializing ProtocolHandler ["http-nio-8080"]
2016-02-12 11:12:34,256[main]             [INFO ] [o.a.t.util.net.NioSelectorPool 72]   - Using a shared selector for servlet write/read
2016-02-12 11:12:34,271[main]             [INFO ] [o.a.catalina.startup.Catalina 587]   - Initialization processed in 779 ms
2016-02-12 11:12:34,306[main]             [INFO ] [c.m.JmxRemoteLifecycleListener 332]  - The JMX Remote Listener has configured the registry on port 32001 and the server on port 32101 for the Platform server
2016-02-12 11:12:34,306[main]             [INFO ] [o.a.c.core.StandardService 433]      - サービス Catalina を起動します
2016-02-12 11:12:34,307[main]             [INFO ] [o.a.c.core.StandardEngine 259]       - Starting Servlet Engine: Apache Tomcat/8.0.28
2016-02-12 11:12:34,408[ost-startStop-1]  [INFO ] [o.a.c.startup.HostConfig 916]        - Webアプリケーションアーカイブ /home/vagrant/eclipse-che-4.0.0-RC3/tomcat/webapps/ide.war を配備します
2016-02-12 11:12:40,311[ost-startStop-1]  [WARN ] [p.DockerExtConfBindingProvider 51]   - DockerExtConfBindingProvider
2016-02-12 11:12:42,041[ost-startStop-1]  [INFO ] [.c.p.d.c.DockerRegistryChecker 43]   - Probing registry 'http://localhost:5000'
2016-02-12 11:12:42,061[ost-startStop-1]  [WARN ] [.c.p.d.c.DockerRegistryChecker 50]   - Docker registry http://localhost:5000 is not available, which means that you won't be able to save snapshots of your workspaces.
How to configure registry?
	Local registry  -> https://docs.docker.com/registry/
	Remote registry -> set up 'docker.registry.auth.*' properties
2016-02-12 11:13:12,960[ost-startStop-1]  [INFO ] [o.a.c.u.SessionIdGeneratorBase 241]  - Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [30,578] milliseconds.
2016-02-12 11:13:13,954[ost-startStop-1]  [INFO ] [o.a.c.startup.HostConfig 980]        - Deployment of web application archive /home/vagrant/eclipse-che-4.0.0-RC3/tomcat/webapps/ide.war has finished in 39,546 ms
2016-02-12 11:13:13,956[ost-startStop-1]  [INFO ] [o.a.c.startup.HostConfig 916]        - Webアプリケーションアーカイブ /home/vagrant/eclipse-che-4.0.0-RC3/tomcat/webapps/dashboard.war を配備します
2016-02-12 11:13:14,128[ost-startStop-1]  [INFO ] [o.a.c.startup.HostConfig 980]        - Deployment of web application archive /home/vagrant/eclipse-che-4.0.0-RC3/tomcat/webapps/dashboard.war has finished in 171 ms
2016-02-12 11:13:14,128[ost-startStop-1]  [INFO ] [o.a.c.startup.HostConfig 916]        - Webアプリケーションアーカイブ /home/vagrant/eclipse-che-4.0.0-RC3/tomcat/webapps/swagger.war を配備します
2016-02-12 11:13:14,251[ost-startStop-1]  [INFO ] [o.a.c.startup.HostConfig 980]        - Deployment of web application archive /home/vagrant/eclipse-che-4.0.0-RC3/tomcat/webapps/swagger.war has finished in 123 ms
2016-02-12 11:13:14,255[ost-startStop-1]  [INFO ] [o.a.c.startup.HostConfig 1036]       - Webアプリケーションディレクトリ /home/vagrant/eclipse-che-4.0.0-RC3/tomcat/webapps/ROOT を配備します
2016-02-12 11:13:14,344[ost-startStop-1]  [INFO ] [o.a.c.startup.HostConfig 1152]       - Deployment of web application directory /home/vagrant/eclipse-che-4.0.0-RC3/tomcat/webapps/ROOT has finished in 89 ms
2016-02-12 11:13:14,350[main]             [INFO ] [o.a.c.http11.Http11NioProtocol 469]  - Starting ProtocolHandler ["http-nio-8080"]
2016-02-12 11:13:14,356[main]             [INFO ] [o.a.catalina.startup.Catalina 638]   - Server startup in 40084 ms
```

起動時のコマンドを `start` にすればコンソールにログが出力されず、成功したら *Tomcat started* と表示されます。
ログは `tomcat/logs/catalina.out` などを確認しましょう。

ブラウザで `http://192.179.28.28:8080/` へアクセスします。
問題がなければ以下のような Dashboard が表示されるはずです。

![eclipse-che-dashboard.png](https://qiita-image-store.s3.amazonaws.com/0/23886/550b267c-4b0f-444c-9792-b49eb55b27d7.png "eclipse-che-dashboard.png")

## プロジェクト作成

プロジェクトの新規作成は左上の「NEW PROJECT」から、以下のような画面が開きます。ちょっとワクワクします。

![eclipse-che-new-project.png](https://qiita-image-store.s3.amazonaws.com/0/23886/1199d7c3-5db7-4cd9-0aad-921bd7064c02.png "eclipse-che-new-project.png")

### Select Source

ここではプロジェクトをどうやって作成するかを指定します。
ひとまず提供されているテンプレートから作成してみるので *"New from blank, template, or sample project"* を選択します。

*"Import from existing location"* なら任意の Git Repository を指定できたり・・・

![eclipse-che-new-project-select-source-import-1.png](https://qiita-image-store.s3.amazonaws.com/0/23886/be1fd8bf-9586-222c-d445-22a281391f01.png "eclipse-che-new-project-select-source-import-1.png")

GitHub を指定したり・・・

![eclipse-che-new-project-select-source-import-2.png](https://qiita-image-store.s3.amazonaws.com/0/23886/f74087d2-acc5-070f-5073-3e7cee77433a.png "eclipse-che-new-project-select-source-import-2.png")

ZIPファイルを指定したりすることができるようです。

![eclipse-che-new-project-select-source-import-3.png](https://qiita-image-store.s3.amazonaws.com/0/23886/ecdbb4ce-b837-a45e-d645-d1e9fcb792ef.png "eclipse-che-new-project-select-source-import-3.png")

### Select Stack

プロジェクトの実行環境を定義するために使用するレシピやイメージを選択します。

*Ready-To-Go Stacks* は、特定のタイプのプロジェクト向けにツールなどがプリインストールされた環境を提供するもの、だそうです。

![eclipse-che-new-project-select-stack.png](https://qiita-image-store.s3.amazonaws.com/0/23886/3670fcbd-6303-137e-ff8a-16df23fddbf0.png "eclipse-che-new-project-select-stack.png")

*Stack Library* は、プロジェクトに必要なツールや環境をより細かい粒度で提供しているようです。

![eclipse-che-new-project-select-stack-library.png](https://qiita-image-store.s3.amazonaws.com/0/23886/6a3841b0-b347-a7d7-e5b7-d3fede5bd93b.png "eclipse-che-new-project-select-stack-library.png")

*Custom Stack* は独自の実行環境を定義する場合に選択します。
レシピとして *Dockerfile* をアップロードするか、直接打ち込むようになっているようです。
通常のプロジェクトで使用するには、避けて通れないトコですね。
その辺の苦労はまたの機会にしたいので `Ready-To-Go` の Java Stack を選択します。

### Configure Workspace

Workspace の名前とRAMサイズを指定します。

![eclipse-che-new-project-configure-workspace.png](https://qiita-image-store.s3.amazonaws.com/0/23886/68eb000a-c825-91ff-ba9e-7c945aef8f37.png "eclipse-che-new-project-configure-workspace.png")

### Select Template

テンプレートはコードや設定などのセットです。

![eclipse-che-new-project-select-template.png](https://qiita-image-store.s3.amazonaws.com/0/23886/c9d9e17e-7cf7-c544-0d8b-4bd881551014.png "eclipse-che-new-project-select-template.png")

*Ready-to-run project samples* はコンパイルや実行が可能なサンプルコードを提供するテンプレートです。選択した Stack に応じて選択できるテンプレートは変わります。

*Wizard-driven templates* は空のプロジェクトを作成した後にウィザード形式でプロジェクトの初期設定を進めていく場合に選択するそうです。

実際に使えるかどうか、こういう細かいトコを見ていかないと判断できないとは思いますが、、、すみません。
`Ready-to-run project sample` の `console-java-sample` を選択します。

### Project Metadata

プロジェクトの名前と説明を設定します。
テンプレートを選択したらデフォルトで埋まっていました。

![eclipse-che-new-project-metadata.png](https://qiita-image-store.s3.amazonaws.com/0/23886/fce13f26-3bf9-303b-33d6-ae275b31597d.png "eclipse-che-new-project-metadata.png")

### Create the Project

これでようやく `CREATE PROJECT` ボタンが押せます！全力で押しましょう！！
このプロジェクト構築感がたまりません・・・！！！

![eclipse-che-new-project-create-1.png](https://qiita-image-store.s3.amazonaws.com/0/23886/8b6054e0-93c3-bcfb-0e1a-a6850cd04a01.png "eclipse-che-new-project-create-1.png")

完了後は `Open in IDE` ボタンから IDE へ遷移できます。


ちなみに、何か問題が起きると、こんな感じになります。
**RETRY** できるところが嬉しい限りですね。
（エラーの原因が Che 起動時にオプションを指定していなかったというオチだったので、何度リトライしても失敗して軽く絶望したのですが。）

![eclipse-che-new-project-create-failed.png](https://qiita-image-store.s3.amazonaws.com/0/23886/24c4549a-de5e-093d-dba4-cf953d0a8a69.png "eclipse-che-new-project-create-failed.png")

## Cloud IDE

`Open in IDE` した直後。黒いです。素敵です。

![eclipse-che-open-in-ide.png](https://qiita-image-store.s3.amazonaws.com/0/23886/4d38b89a-a5d7-9251-f649-8503cf2303d2.png "eclipse-che-open-in-ide.png")

なんか、Eclipse っぽくないというか、IntelliJ IDEA みたいですね。

![eclipse-che-workspaces.png](https://qiita-image-store.s3.amazonaws.com/0/23886/98222f70-9450-25cb-56a7-60f44cf7736a.png "eclipse-che-workspaces.png")

中央上部に **CMD** という欄があって *console-java-sample:run* を実行すると `mvn clean install` で jar を作成して `java -jar` で実行してくれます。
ちょっとわかりズラいかもしれませんが、、、

![eclipse-che-workspace-run.png](https://qiita-image-store.s3.amazonaws.com/0/23886/563eaf2f-1246-8c16-c580-75829b80d2f6.png "eclipse-che-workspace-run.png")

## 最後に

あまり IDE 部分を試すことができませんでしたが、エラー原因が起動オプションだとなかなか気付かず力尽きた感があるのでココまでにします・・・

Eclipse Che は [Codenvy](https://codenvy.com/) のベースになっています。
興味があるなら、まず先にソッチを試してみることをお勧めします！！！

## 2016-02-18 追記

Codenvy の中の人が、GitHub に似たような Vagrantfile あるよって教えてくれました！！

<blockquote class="twitter-tweet" data-conversation="none" data-lang="ja"><p lang="en" dir="ltr"><a href="https://twitter.com/TylerJewell">@TylerJewell</a> <a href="https://twitter.com/niwashun">@niwashun</a> <a href="https://twitter.com/Qiita">@Qiita</a> Another community member created a different Vagrantfile, but similar: <a href="https://t.co/QNK7uGOl15">https://t.co/QNK7uGOl15</a></p>&mdash; Codenvy (@CodenvyHQ) <a href="https://twitter.com/CodenvyHQ/status/700134476471357440">2016, 2月 18</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

それがコチラです！ものすごく簡単に試せるのでとても良いです！！

* https://github.com/mickaelbaron/vagrant-dockereclipseche-ubuntu64-build