続・PCF Devを使ってCloud Foundryローカル環境を作ってみた

以前こんな記事を書いたのですが

[PCF Devを使ってCloud Foundryローカル環境を作ってみた](http://qiita.com/kojiisd/items/a7a657ce9a2ea1d3098e)

@making氏からすでにVagrantでのインスタンス作成は古い、と言われてしまったので（うだうだしていた間に新しい記事が投稿されてしまった模様）、新しいバージョンでの実施も試してみます。
# インストールから起動まで
（前提としてCloud Foundryはすでにインストールされているものとします。）
[こちら](https://blog.ik.am/entries/387)の記事を参考にインストールします。

v0.16.0からcfコマンドでインストールが可能になったらしい。

```
$ cf install-plugin ./pcfdev-v0.17.0+PCF1.7.0-osx
```
（pcfdev-v0.17.0+PCF1.7.0-osxのファイルはこうやってインストールするのか、、、と今更理解。）
で、スタートしてみる。

```
$cf dev start
```
すでに旧バージョンで動かしていると、VMが残っている、と言われるので削除が必要なようです。

```
FAILED
Error: old version of PCF Dev already running, please run `cf dev destroy` to continue.
```
自分の場合は0.14ですでに動かしたことがあったので、v0.14内で"destroy-osx"を実行しました。

気を取り直して起動してみます。APIキーはPivotal Networkのプロフィール画面から確認ができます。（事前にPivotal Networkに登録が必要です。）

```
$ cf dev start
Please retrieve your Pivotal Network API from:
https://network.pivotal.io/users/dashboard/edit-profile

API token> 
```
ここのAPI tokenは入力がマスク（非表示）されており、また入力後はしばらく待ってからEULAが表示されるようになっています。ここで焦って何か入力すると、次に表示されるEULAへの承認入力で変な値が入ってしまうので要注意。

で、無事起動しました。

```
$ cf dev start
Downloading VM...
Progress: |+>                   | 3%


Progress: |+===================>| 100%
VM downloaded
Allocating 4096 MB out of 16384 MB total system memory (6074 MB free).
Importing VM...
Starting VM...
Provisioning VM...
Waiting for services to start...
9 out of 50 running
50 out of 50 running
 _______  _______  _______    ______   _______  __   __
|       ||       ||       |  |      | |       ||  | |  |
|    _  ||       ||    ___|  |  _    ||    ___||  |_|  |
|   |_| ||       ||   |___   | | |   ||   |___ |       |
|    ___||      _||    ___|  | |_|   ||    ___||       |
|   |    |     |_ |   |      |       ||   |___  |     |
|___|    |_______||___|      |______| |_______|  |___|
is now running.
To begin using PCF Dev, please run:
	cf login -a https://api.local.pcfdev.io --skip-ssl-validation
Admin user => Email: admin / Password: admin
Regular user => Email: user / Password: pass
```
ログインしてみます。

```
$ cf login -a https://api.local.pcfdev.io --skip-ssl-validation
API エンドポイント: https://api.local.pcfdev.io

Email> admin

Password> 
認証中です...
OK

組織を選択します (または Enter キーを押してスキップします):
1. pcfdev-org
2. system

Org> 1
組織 pcfdev-org をターゲットにしました

スペース pcfdev-space をターゲットにしました


                      
API エンドポイント:   https://api.local.pcfdev.io (API バージョン: 2.54.0)
ユーザー:             admin
組織:                 pcfdev-org
スペース:             pcfdev-space
```
無事ログインできました。今回はpcfdev-orgを選びましたが、ここ地味に今までと違うように見えます。systemを選択すると何か変わるのだろうか、また別途調べてみようと思います。
# アプリをPushしてみる
前回同様hello-cfアプリをPushしてみます。

```
$ mvn clean package
  :
  :
$ cf push hello-cf -p target/hello-cf-0.0.1-SNAPSHOT.jar
admin としてアプリ hello-cf を組織 pcfdev-org / スペース pcfdev-space 内に作成しています...
OK

経路 hello-cf.local.pcfdev.io を使用しています
hello-cf.local.pcfdev.io を hello-cf にバインドしています...
OK

hello-cf をアップロードしています...
次のパスからアプリ・ファイルをアップロードしています: /var/folders/f2/dn55vt054w5djx70_r7nq1sr0000gn/T/unzipped-app277539627
492.5K、89 個のファイルをアップロードしています
Done uploading               
OK


admin として組織 pcfdev-org / スペース pcfdev-space 内のアプリ hello-cf を開始しています...
Downloading binary_buildpack...
Downloading nodejs_buildpack...
Downloading go_buildpack...
Downloading python_buildpack...
Downloading staticfile_buildpack...
Downloading java_buildpack...
Downloading ruby_buildpack...
Downloading php_buildpack...
Downloaded java_buildpack
Downloaded go_buildpack
Downloaded ruby_buildpack
Downloaded staticfile_buildpack
Downloaded binary_buildpack (8.3K)
Downloaded python_buildpack (254.1M)
Downloaded nodejs_buildpack (60.7M)
Downloaded php_buildpack (262.3M)
Creating container
Successfully created container
Downloading app package...
Downloaded app package (11.8M)
Staging...
-----> Java Buildpack Version: v3.6 (offline) | https://github.com/cloudfoundry/java-buildpack.git#5194155
-----> Downloading Open Jdk JRE 1.8.0_71 from https://download.run.pivotal.io/openjdk/trusty/x86_64/openjdk-1.8.0_71.tar.gz (found in cache)
       Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (2.3s)
-----> Downloading Open JDK Like Memory Calculator 2.0.1_RELEASE from https://download.run.pivotal.io/memory-calculator/trusty/x86_64/memory-calculator-2.0.1_RELEASE.tar.gz (found in cache)
       Memory Settings: -Xmx160M -XX:MaxMetaspaceSize=64M -Xss853K -Xms160M -XX:MetaspaceSize=64M
-----> Downloading Spring Auto Reconfiguration 1.10.0_RELEASE from https://download.run.pivotal.io/auto-reconfiguration/auto-reconfiguration-1.10.0_RELEASE.jar (found in cache)
Exit status 0
Staging complete
Uploading droplet, build artifacts cache...
Uploading build artifacts cache...
Uploading droplet...
Uploaded build artifacts cache (109B)
Uploaded droplet (56.7M)
Uploading complete

1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です
1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です
1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です
1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です
1 個の中の 0 個のインスタンスが実行中です, 1 個が開始中です
1 個の中の 1 個のインスタンスが実行中です

アプリが開始されました


OK

アプリ hello-cf はこのコマンド `CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-2.0.1_RELEASE -memorySizes=metaspace:64m.. -memoryWeights=heap:75,metaspace:10,native:10,stack:5 -memoryInitials=heap:100%,metaspace:100% -totMemory=$MEMORY_LIMIT) && JAVA_OPTS="-Djava.io.tmpdir=$TMPDIR -XX:OnOutOfMemoryError=$PWD/.java-buildpack/open_jdk_jre/bin/killjava.sh $CALCULATED_MEMORY" && SERVER_PORT=$PORT eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/.:$PWD/.java-buildpack/spring_auto_reconfiguration/spring_auto_reconfiguration-1.10.0_RELEASE.jar org.springframework.boot.loader.JarLauncher` を使用して開始されました

admin として組織 pcfdev-org / スペース pcfdev-space 内のアプリ hello-cf の正常性と状況を表示しています...
OK

要求された状態: started
インスタンス: 1/1
使用法: 256M x 1 インスタンス
URL: hello-cf.local.pcfdev.io
最後アップロード日時: Sun Jul 24 17:26:31 UTC 2016
スタック: unknown
ビルドパック: java-buildpack=v3.6-offline-https://github.com/cloudfoundry/java-buildpack.git#5194155 java-main open-jdk-like-jre=1.8.0_71 open-jdk-like-memory-calculator=2.0.1_RELEASE spring-auto-reconfiguration=1.10.0_RELEASE

     状態   次の日時から             CPU    メモリー             ディスク             詳細
#0   実行   2016-07-25 02:28:13 AM   0.0%   256M の中の 126.9M   512M の中の 135.4M
```
うまく実行されたようです。

# アクセスしてみる

```
$ cf a
admin として組織 pcfdev-org / スペース pcfdev-space 内のアプリを取得しています...
OK

名前       要求された状態   インスタンス   メモリー   ディスク   URL
hello-cf   started          1/1            256M       512M       hello-cf.local.pcfdev.io
```
URLもこれでわかるので、アクセスしてみます。

```
$ curl http://hello-cf.local.pcfdev.io
Hello World!
```
無事起動したようです。

# Webコンソールで確認
このバージョンからWebコンソールも利用できるようになっているとのことなので、アクセスしてみます。https://console.local.pcfdev.io/2/ でアクセスができるようになっています。

<img width="1078" alt="スクリーンショット 2016-07-25 2.33.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/c0287e26-59c7-d9d6-d197-76b2f0432143.png">
うーん、かっこいい。

<img width="1082" alt="スクリーンショット 2016-07-25 2.34.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/a8269c55-56b0-7a36-155b-f934a3a42632.png">
確かコマンドでできることはWebコンソールからでもできたと思うので、スケールアップなどもこちらから試してみたいですね。

<img width="1282" alt="スクリーンショット 2016-07-25 2.35.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/2797fa68-c282-a8c8-a000-cbe6a3231d33.png">


# まとめ
前回に続きまずは基本的な流れを試してみましたが、せっかくスケールアップなどのコマンドも用意しているので、それらを使って実際にスケールアップ／ダウンさせるなど、いろいろ試してみたいと思います。

# ログインできなくなったら
cf dev startでVMのインスタンスや初期設定が終わった後にネットワークの接続を切り替えたりすると以下のようなメッセージが表示されてログインできなくなることがあります。

```
$ cf login -a https://api.local.pcfdev.io --skip-ssl-validation
API エンドポイント: https://api.local.pcfdev.io
失敗
要求の実行時にエラーが発生しました: Get https://api.local.pcfdev.io/v2/info: dial tcp 192.168.11.11:443: connect: host is down
ヒント: ファイアウォールに守られている側でHTTPプロキシが必要な場合、https_proxy環境変数が正確に設定されていることを確認してください。その他、ネットワーク接続を確認してください。
```
自分の場合は以下を実施することで直りました。

1. cf dev destroyでVMインスタンスの破棄
2. VirtualBoxの設定で今回利用されているvboxnetX(Xは数字)を削除
3. cf dev startで再度初期化から実施