オープンソースのPaaSソフトウェア CloudFoundry の技術情報やイベント告知などを掲載します

2015-07-09

tty.js を Cloud Foundry で動かす

本日の第26回「Cloud Foundry 百日行」はブラウザ上で動作するターミナル tty.js です。

昨日の第25回「Cloud Foundry 百日行」で、ブラウザ上で動作するターミナル ButterFly を試しましたが、ログインが必要なので実運用で問題になりそうでした。今回はログインがいらないターミナル "tty.js" を試してみます。

基本情報


デプロイ

"tty.js" のソースコードを入手してデプロイもできるかと思いますが、"tty.js"  は npm パッケージ化されているので、Cloud Foundry へのデプロイ過程にて取得し、実行する方法をとりました。

1. 準備

"tty.js" は Node.jsランライムで実行されるアプリケーションです。package.json に "tty.js" を dependency として記述すると Node.js ビルドパックがデプロイ時に取得してくれます。


$ cat package.json
{
  "dependencies": {
        "tty.js": "0.2.14-1"
  }
}

用意するファイルは package.json だけです。簡単ですね。


2. デプロイ

npm パッケージは node_modules ディレクトリに保管されるので、実行コマンドを "node node_modules/tty.js/bin/tty.js -p $PORT" とします。


$ cf push amnttty -c 'node node_modules/tty.js/bin/tty.js -p $PORT' -m 256M

App amnttty was started using this command `node node_modules/tty.js/bin/tty.js -p $PORT`



requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: amnttty.mybluemix.net
last uploaded: Wed Jul 8 04:46:34 UTC 2015
stack: lucid64

     state     since                    cpu    memory          disk          details
#0   running   2015-07-08 01:47:30 PM   0.0%   36.6M of 256M   58.8M of 1G

なお今回の Cloud Foundry は Bluemix を利用しました。

動作確認

正常にデプロイできたら、アプリケーションURL にアクセスします。




"tty.js" のバナーに "Open Terminal"ボタンがあるのでそれをクリックします。するとターミナルが開きます。Open Terminal をクリックすると複数のターミナルが起動するようです。

いくつかコマンドを動かしてみました。



vi エディターも動くようです。




なお、"tty.js" の課題として、文字のコピーはできるがペーストする手段がないことがあげられています。ここは将来のバージョンで修正して欲しいところです。


まとめと余談

Cloud Foundry のコンテナに端末として入りたいという理由がいくつかあります。
  • コンテナで使われている rootfs の内容が知りたい
  • 自分のPCは Windows だが急遽 Linux が必要になった
  • ネットワークが不調なので、別のマシンからアクセスさせてみたい (curl の利用等)
"cf-ssh" などを利用した端末アクセス方法がありますが、今回紹介した tty.js では、ペーストできないという欠点を除けば、比較的簡単にアクセスできるようになると思われます。しかしながら、ログインしないでアクセス出来てしまうので、目的を達成したらアプリケーションは停止しておくことを推奨します。


余談

この記事を書いた1週間前には、package.json ファイルの dependencies の記述を "tty.js": "*" のようにしていたのですが、再度確認しようと思った時に動かなくなってしまいました。よくみると最新版だと思っていた "0.2.14"が依存する複数のパッケージが npm リポジトリから削除されているのがわかりました。有志があつまりいろいろ検索してくれた結果、-1 を付ければよいということが判明し、無事記事として出せるようになった顛末があります。Node.js で npm リポジトリからパッケージが削除されることがあるという良い経験になりました。


今回利用したソフトウェア


  • cf-release Bluemix (v210)

  • tty.js v0.2.14-1
    https://github.com/chjj/tty.js/tree/v0.2.14-1