昨日の第25回「Cloud Foundry 百日行」で、ブラウザ上で動作するターミナル ButterFly を試しましたが、ログインが必要なので実運用で問題になりそうでした。今回はログインがいらないターミナル "tty.js" を試してみます。
基本情報
- 公式サイト、および ソースコード
https://github.com/chjj/tty.js/ - 参考情報
「tty.js - node製のWebベースのターミナル」
デプロイ
"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 の利用等)
余談
この記事を書いた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