「Cloud Foundry 百日行」第61日目は、Ruby-on-Rails ベースの PasswordPusher です。このアプリは、何かのパスワードを遠隔で共有したい場合、Web上で比較的セキュアに簡単に共有することができます。
基本情報
-
公式サイト
https://pwpush.com/
デプロイ準備から動作確認までの手順は以下の通りです。
- 1) ソースコードの取得
- 2) デプロイ
- 3) 動作確認
1. ソースコードの取得
GitHub からソースコードをクローンします。
$ git clone https://github.com/pglombardo/PasswordPusher.git
$ cd PasswordPusher
PasswordPusher$ ls
app bin config db Gemfile.lock log public README.md TODO
app.json Capfile config.ru Gemfile LICENSE.txt Procfile Rakefile script
2. デプロイ
アプリの ReadMe にも database.yml にも書いてありませんが、 Gemfile の中を確認すると production
指定でデプロイしたい場合、 PostgreSQL を使うことを想定しているようです。
なので、まず PostgreSQL のサービスを作成します。 もしデプロイする bosh-lite 環境に PostgreSQL サービスブローカがない場合、 百日行の「postgresql-cf-service-broker を Cloud Foundry で動かす 」を参考に、事前に準備をしてください。
PasswordPusher$ cf create-service PostgreSQL 'Basic PostgreSQL Plan' spwd-pg
Creating service instance spwd-pg in org horiu-jn / space horiu-jn as horiu-jn...
OK
Attention: The plan `Basic PostgreSQL Plan` of service `PostgreSQL` is not free. The instance `spwd-pg` will incur a cost. Contact your administrator if you think this is in error.
次に、デプロイ用のマニフェストを作成します。
PasswordPusher$ vi manifest.yml
applications:
- name: spwd-100
command: 'RAILS_ENV=production bundle exec rake db:setup && bundle exec rackup --port $PORT'
services:
- spwd-pg
services:
にバインドするサービス名を記述しておくと、cf push
した際に自動でバインドを実行してくれるため、設定しておきます。
マニフェストが作成できたら、アプリをプッシュします。
PasswordPusher$ cf push
Using manifest file /home/horiu-jn/workspace/apps/PasswordPusher/manifest.yml
Creating app spwd-100 in org horiu-jn / space horiu-jn as horiu-jn...
OK
Using route spwd-100.10.244.0.34.xip.io
Binding spwd-100.10.244.0.34.xip.io to spwd-100...
OK
Uploading spwd-100...
:
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
1 of 1 instances running
App started
OK
App spwd-100 was started using this command `RAILS_ENV=production bundle exec rake db:setup && bundle exec rackup --port $PORT`
Showing health and status for app spwd-100 in org horiu-jn / space horiu-jn as horiu-jn...
OK
requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: spwd-100.10.244.0.34.xip.io
last uploaded: Thu Aug 13 07:18:12 UTC 2015
stack: cflinuxfs2
buildpack: Ruby
state since cpu memory disk details
#0 running 2015-08-13 04:20:53 PM 0.0% 179.7M of 256M 0 of 1G
無事成功しました。
3. 動作確認
ブラウザから、払いだされたアプリのURLへアクセスします。
Enter the Password to be Shared
と表示されているフィールドへ、共有したいパスワードを入力します。
パスワードの共有リミットを期間 (Days) またはアクセス回数 (Views) を設定することも出来ます。
パスワードを入力したあと Push it!
ボタンを押すと、ランダムな文字列で作成された共有用の URL が表示されます。
この URL へアクセスしてみると、先ほど登録したパスワードが表示されます。
また、設定したURLへのアクセス回数、または共有期間を超えると、パスワードは失効となります。
今回使用したソフトウェア
- cf-release(v211)
https://github.com/cloudfoundry/cf-release/tree/v211
(https://github.com/cloudfoundry/cf-release/tree/2121dc6405e0f036efa4dba963f7f49b07e76ffa) - bosh-lite
https://github.com/cloudfoundry/bosh-lite/tree/552dc6869600c5350eb7ffb4fb9c9c5e79e3889d - CF CLI (v6.12.0-8c65bbd-2015-06-30T00:10:31+00:00)
https://github.com/cloudfoundry/cli/tree/v6.12.0 (https://github.com/cloudfoundry/cli/tree/8c65bbd4d243cbbc9bdbf2ec2a3b0e094c094f48) - postgresql-cf-service-broker
https://github.com/cloudfoundry-community/postgresql-cf-service-broker/tree/99861eef5d220721799a6fc5465a272347b1007a - PasswordPusher
https://github.com/pglombardo/PasswordPusher/tree/f0d476b5fec36655c3e21fdee4379ca893f187eb
投稿者:NTTソフトウェア株式会社 堀内 純