前のエントリではPCF DevをWindows上にインストールする方法を紹介しました。その際、CloudFoundryのCLIツールはWindows上にインストールした訳ですが、Windowsを使っていても、実際の開発はVM上やBash on Windows上のLinuxで実施しており、アプリのデプロイはそちらから行いたい場合があるかと思います。このエントリでは、VM上のLinux(Ubuntu 16.04)からアプリをデプロイする方法を解説します。まったく難しいものではなく、単にそれぞれの環境にインストールしたCloudFoundry CLIに対してログイン先としてPCF Devを指定するだけです。

 

VM上のUbuntuへのCLIツールのインストール

下記のコマンドで、CloudFoundryのパッケージレポジトリをUbuntuに追加し、cf-cliパッケージをインストールすることが出来ます。

wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -
echo "deb http://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list
sudo apt-get update
sudo apt-get install cf-cli

CloudFoundry CLIからPCF Devへのログイン

インストールしたCloudFoundry CLIに対して、下記コマンドを実行することで、PCF Devへログインすることが出来ます。-aオプションはAPIエンドポイント、-uと-pオプションはそれぞれユーザー名とパスワードを指定します。–skip-ssl-validationは証明書の検証をスキップするオプションで、PCF Devの自己署名証明書がUbuntu側にはインストール出来ていないので指定しています。

ynojima@X1CARBON:~/workspace/jetbrains$ cf login -a api.local.pcfdev.io -u user -p pass --skip-ssl-validation
API エンドポイント: api.local.pcfdev.io
認証中です...
OK

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

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



API エンドポイント:   https://api.local.pcfdev.io (API バージョン: 2.65.0)
ユーザー:             user
組織:                 pcfdev-org
スペース:             pcfdev-space

PCF Devへのアプリのデプロイ

PCF Devへのアプリのデプロイは、Windows上のcf pushコマンドで実行した場合と全く変わりません。

ynojima@X1CARBON:~/workspace/jetbrains/spring-boot/spring-boot-samples/spring-boot-sample-web-ui$ cf push spring-boot-sample-ui-from-vm -p target/spring-boot-sample-web-ui-2.0.0.BUILD-SNAPSHOT.jar
user として組織 pcfdev-org / スペース pcfdev-space 内のアプリ spring-boot-sample-ui-from-vm を更新しています...
OK

spring-boot-sample-ui-from-vm をアップロードしています...
次のパスからアプリ・ファイルをアップロードしています: /tmp/unzipped-app437930987
337.9K、107 個のファイルをアップロードしています
Done uploading
OK


user として組織 pcfdev-org / スペース pcfdev-space 内のアプリ spring-boot-sample-ui-from-vm を開始しています...
Downloading dotnet-core_buildpack...
Downloading java_buildpack...
Downloading ruby_buildpack...
Downloading nodejs_buildpack...
Downloading go_buildpack...
Downloaded go_buildpack
ynojima@X1CARBON:~/workspace/jetbrains/spring-boot/spring-boot-samples/spring-boot-sample-web-ui$ cf push spring-boot-sample-web-ui-from-vm -p target/spring-boot-sample-web-ui-2.0.0.BUILD-SNAPSHOT.jar
user としてアプリ spring-boot-sample-web-ui-from-vm を組織 pcfdev-org / スペース pcfdev-space 内に作成しています...
OK

経路 spring-boot-sample-web-ui-from-vm.local.pcfdev.io を作成しています...
OK

spring-boot-sample-web-ui-from-vm.local.pcfdev.io を spring-boot-sample-web-ui-from-vm にバインドしています...
OK

spring-boot-sample-web-ui-from-vm をアップロードしています...
次のパスからアプリ・ファイルをアップロードしています: /tmp/unzipped-app191471913
337.9K、107 個のファイルをアップロードしています
Done uploading
OK


user として組織 pcfdev-org / スペース pcfdev-space 内のアプリ spring-boot-sample-web-ui-from-vm を開始しています...
Downloading dotnet-core_buildpack...
Downloading java_buildpack...
Downloading ruby_buildpack...
Downloading nodejs_buildpack...
Downloading go_buildpack...
Downloaded java_buildpack
Downloading python_buildpack...
Downloaded ruby_buildpack
Downloading php_buildpack...
Downloaded nodejs_buildpack
Downloading staticfile_buildpack...
Downloaded php_buildpack
Downloading binary_buildpack...
Downloaded go_buildpack
Downloaded python_buildpack
Downloaded binary_buildpack
Downloaded staticfile_buildpack
Downloaded dotnet-core_buildpack
Creating container
Successfully created container
Downloading app package...
Downloaded app package (18M)
Staging...
-----> Java Buildpack Version: v3.10 (offline) | https://github.com/cloudfoundry/java-buildpack.git#193d6b7
-----> Downloading Open Jdk JRE 1.8.0_111 from https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_111.tar.gz (found in cache)
       Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.6s)
-----> Downloading Open JDK Like Memory Calculator 2.0.2_RELEASE from https://java-buildpack.cloudfoundry.org/memory-calculator/trusty/x86_64/memory-calculator-2.0.2_RELEASE.tar.gz (found in cache)
       Memory Settings: -Xmx681574K -XX:MaxMetaspaceSize=104857K -Xss349K -Xms681574K -XX:MetaspaceSize=104857K
-----> Downloading Spring Auto Reconfiguration 1.10.0_RELEASE from https://java-buildpack.cloudfoundry.org/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 (63.1M)
Uploading complete
Destroying container
Successfully destroyed container

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

アプリが開始されました


OK

アプリ spring-boot-sample-web-ui-from-vm はコマンド `CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-2.0.2_RELEASE -memorySizes=metaspace:64m..,stack:228k.. -memoryWeights=heap:65,metaspace:10,native:15,stack:10 -memoryInitials=heap:100%,metaspace:100% -stackThreads=300 -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/. org.springframework.boot.loader.JarLauncher` を使用して開始されました

user として組織 pcfdev-org / スペース pcfdev-space 内のアプリ spring-boot-sample-web-ui-from-vm の正常性と状況を表示しています...
OK

要求された状態: started
インスタンス: 1/1
使用: 256M x 1 インスタンス
URL: spring-boot-sample-web-ui-from-vm.local.pcfdev.io
最終アップロード日時: Sat Jan 21 18:40:16 UTC 2017
スタック: cflinuxfs2
ビルドパック: java-buildpack=v3.10-offline-https://github.com/cloudfoundry/java-buildpack.git#193d6b7 java-main open-jdk-like-jre=1.8.0_111 open-jdk-like-memory-calculator=2.0.2_RELEASE spring-auto-reconfiguration=1.10.0_RELEASE

     状態   開始日時                 CPU    メモリー            ディスク             詳細
#0   実行   2017-01-22 03:40:56 AM   0.0%   256M の中の 66.4M   512M の中の 142.5M

おわりに

以上、VM上のUbuntuにインストールしたCloudFoundry CLIからPCF Devにアプリをプッシュする方法の紹介でした。PCF Dev自体の操作はCloudFoundry CLIのPCF Dev Pluginが必要なのでWindows側のcf devコマンドから実施する必要がありますが、それ以外のアプリのデプロイなどの操作は可能なので、Windows上にVMを立てて開発している場合は是非活用いただければと思います。