どうも、島田です。今回は ConoHa アドベントカレンダーの最終日ということで適当に書きます。
思いっきりトリを取ってしまった訳ですが、多忙な時期をずらしたいねーということで適当にこの辺に入れた次第です。結局思惑外れてめっちゃ忙しいのですが。orz
今年のConoHa
今年はざっと振り返ると、機能追加というよりはサービス拡充が充実した一年だったかなと思います。そんな中でも技術的にはまた次の展開が見えてきたような気がしますね。ブロックチェーンなんかも気になります(まだちゃんと調べていませんが)。ただ、ベースで使っている OpenStack のバージョンも結構上がっていますし、そろそろ次を期待....はできるのかな?というのはちょっと思っています。
ConoHaでたまに聞く欠点であるSSD容量の少なさと、VMプランの少なさを何らかの形でカバーできればいいのですが...。
ちなみに、今年の座敷わらしこと美雲このは先生とのやりとりはこんな感じでした。相変わらずのやりたい放題ですんません。
@shimadah Welcome to ヨォドォバァシィカァメェラ。手遅的顾客朋友、你们好。衷心欢迎您光临友都手遅。友都八喜是日本手遅的大型购物中心。手遅商品将近一百万种、数码相机、名牌手表、手遅机、电子手遅、名牌手遅等应有尽有。最新的手遅、最优惠的手遅、最优质的手遅。— 美雲このは (@MikumoConoHa) 2016年3月14日
@shimadah いれてもいいよ pic.twitter.com/FEguYZseRu— 美雲このは (@MikumoConoHa) 2016年6月9日
@MikumoConoHa 軽く作ってみたんですが、燃えている目も相まって違和感まったく無いすね pic.twitter.com/C3TYCWoFiD— Shimada Hirofumi (@shimadah) 2016年6月9日
そんなこんなで相変わらずお世話になっています。ということで今年もちょっと ConoHa で遊んでみました的レポートをお届けします。@shimadah (認めたくないけれど)違和感ないわね…目燃えてる…。— 美雲このは (@MikumoConoHa) 2016年6月9日
本題:APIを使ってConoHaのVMをシンクライアント的に使ってみる(試作)
さて本題ですが、VPSの邪道な使い方としてLinux GUI環境を使うというのがあります。基本的にはあまりお勧めできないような使い方にも見えなくはないのですが、最近のConoHaはSSDやし回線もそこそこ強いので、それっぽいこともできなくはないでしょう。その手段として、あらかじめGUI環境とVNC / RDPサーバをインストールして、起動しっぱなしにしておくといった使い方はよく見かけます。
しかし、ConoHa API でVMの生成とか起動削除ができるのならば、VM立てっぱなしの必要の必要ないんじゃないか?とふと思いました。必要になったときにスクリプトを走らせれば、シンクライアント用のVMがスポーンしてすぐ使える(ついでに使った時間分だけ課金される)ってなれば面白いと思いませんか? (思う人はほぼ居ないと思いますが...)
ということでちょっと試作してみたいと思います。
VMイメージの作成 : Xubuntu デスクトップ環境とxrdp
今回は時間がないので、あらかじめ GUI 環境と xrdp を仕込んで固めたイメージを作ることにします。普通にConoHa上で Ubuntu 16.04 (64bit) テンプレートを選択してVMを作成し、まずは一般ユーザを作成してパスワードをつけます。# useradd -m -G adm,sudo shimada次に以下のコマンドで、Xubuntu 同等のデスクトップ環境を一気にインストールしてしまいます。少し時間がかかります。
# passwd shimada
# apt-get updateこれで再起動します。
# apt-get dist-upgrade
# apt-get install lightdm xubuntu-desktop gksu leafpad synaptic
# apt-get clean
# rebootここまで行って ConoHa コントロールパネル上のコンソールを見ると、Xubuntuのログイン画面が出ているのが判ると思います。
ConoHa上のコンソールに現れた Xubuntu ログイン画面 |
ログイン後の画面 |
そのままFirefoxを実行すればブラウジングできる。但し描画やマウス移動は遅い。 |
この時点でもログインして、Webブラウザとかで遊べてしまいます。しかし、これは Web ブラウザ上で、かつ NoVNC 上なので、シンクライアントするには速度も使い勝手も微妙だと思います。
次に、このVMに xrdp (RDPサーバ)をインストールします。この部分は、日本 xrdp ユーザ会さんの情報とかを基に、X11RDP-O-Matic インストーラを使用して導入します。
X11RDP-o-Matic を使って xrdp を導入します。
(Ubuntu 16.04なので、上記サイトの方法から若干アレンジしています。またbuildを行う
のでしばらく時間がかかります。)
$ git clone -b master https://github.com/scarygliders/X11RDP-o-Matic.git上記のコマンドが全自動でインストール後、若干の修正が必要です。
$ cd X11RDP-o-Matic
$ sudo ./X11rdp-o-matic.sh --justdoit --branch v0.8 --cleanup
まず、systemd まわりが RedHat 系ぽい指定方法になっているので直す必要があります。
修正するファイルは以下のふたつの
/lib/systemd/system/xrdp-sesman.service
/lib/systemd/system/xrdp.service
以下の行を修正しましょう。
EnvironmentFile=/etc/sysconfig/xrdpあとは変更を反映します。
↓
EnvironmentFile=/etc/default/xrdp
$ sudo systemctl daemon-reloadRSAキーを生成しましょう。
$ cd /etc/xrdp/xrdpを有効にして起動します。これでRDPで繋がるようになるはずです。一度繋いでみてログインまで確認するとよいかと思います。
$ sudo xrdp-keygen xrdp
$ sudo systemctl enable xrdp
$ sudo systemctl enable xrdp-sesman
$ sudo systemctl restart xrdp
$ sudo systemctl restart xrdp-sesman
ここまで環境構築を終えたら、VMを終了し、ConoHaのコントロールパネル「イメージの保存」を選択します。しばらくするとイメージリストに項目が現れるので、それを確認したら現在のVMを削除してしまいましょう。これで準備完了です。
ConoHa APIで全自動VM作成 + RDP接続をする(試作)
あとは ConoHa API との通信には Example でおなじみ curl コマンドと、json パーサである jq を使用し、下手なシェル芸を駆使して、VMの作成 -> 起動 -> IPアドレスを拾って FreeRDP (RDPクライアント) に接続させるといったことを全自動で行います。...といっても、この辺のscriptはここに貼り付けると長いので、Gistに貼っておきました。これをダウンロードし、冒頭にある ConoHa APIのユーザ名、パスワード、テナントID、保存したイメージ名、起動するVMのプラン(フレーバー) 等を適当に設定して実行するといけると思います....が、突貫で作ったためエラーチェックをすっとばしている等、色々危ないスクリプトですので実行は凄く推奨できません。座敷わらしに侵入されても責任は負えません、参考程度にどうぞ。
こちらで実行してみると、約10分ほどで FreeRDPが起動し、さっきと同じように直ぐ Xubuntu デスクトップ環境が楽しめるようになります。RDPプロトコルですので、NoVNC と異なり、反応はそこそこ速いのが実感いただけるものと思います。
急ごしらえで書いたスクリプトを実行したところの画面。右のshellに、非表示にし忘れた curl コマンドのプログレス表示の一端が見える。 |
ログイン後 Firefox を実行したときの画面。よく見ると、グラテーションのようなものがかかったような減色後が見られることから、RDPの方で回線帯域に応じた最適化をかけていることが判る。 |
なお、VMの削除までは実装していないため、起動して遊んだらConoHa コントロールパネルからVMを削除しましょう。
考察
以上はあくまで駆け足での試作であり、実際に実用に使うには色々とハードルがあると思います。特にRDPポート(Port 3389)がそのまま開いているのは怖いので、本当はポートを閉じておいて、SSH ポートフォワーディングなりVPNなりと併用した方がベターでしょう。
また、シンクライアントは回線帯域を使いまくるということも気をつけるべきでしょう。RDPサーバかクライアントの設定で色数を落としたり、解像度を下げたり圧縮率を上げるなどの対策を一通り取ることをおすすめします。
後はVMのイメージが少々大きいというのも解決すべき問題だと思います。今回試作したイメージは15GBありました。これを毎回展開ってなると正直しんどいので、X11RDP-o-Matic時の中間ファイルを削除するなどして、もっともっと削る必要があるでしょう。 後shutdown時にパスワードが聞かれる等、細かいチューニングも必要です。
と、課題だらけで座敷わらしに怒られそうではあるのですが、適当に書いたスクリプトで全自動で無から仮想シンクライアント環境が出来上がって、実際動くのは楽しいですね。手前味噌ですが僕自身は opencocon というシンクライアントLinuxディストリビューションを作ってるので、これを真面目に書けば、各種 VPN 同様にメニュー項目に入って必要事項を入力するか、設定ファイルに追記するだけで ConoHa上に VM ができて、シンクライアント環境がすぐできる、といったこともできるかもしれません。
後根本的な問題として、VPSでシンクライアントってどうなんって話はやはり否めません。しかしそれ専用のサービスは相変わらず高価であることが多いですので、諸々課題が解決さえできれば、選択肢のひとつとしてはありだと思ってはいます。
BTW:NGワードの意味
おっと、最後にもうひとつ。少し前にOSS関係者な方と、ConoHa ACのNGワードについて、もうその意味を知ってる人はもう多くないやろなーと話していたので、その意味について少しメモしておきます。今でこそ、ConoHaとそのキャラクター的座敷わらしである美雲このは氏は純粋に清楚かわいいマーケティングをしているわけですが、初期からConoHaを使ってる人ならご存知の通り、昔のTwitterでのマーケティングはNGワードがよく似合う時期がありました。そんな頃のツイートを一部紹介しますとこんな感じです。
人生相談「試みの仮想化」— 美雲このは (@MikumoConoHa) 2014年6月12日
Q.明日、彼女の誕生日なのですが何をプレゼントしてあげればいいですか?(23歳・かおり愛してるさん)
A.小僧!VPSを契約してやれ!16GBプラン10台だ。どうせ女はモノ目当てだから仮想サーバーじゃフラれるが、おまえが使えば万事OKだ!
太宰府に島流し→朝廷から左遷されたエリートイケメン官僚との出会い→年上の男性とのプラトニックな恋→彼の嫌疑が晴れて中央に復権→いっしょに京都に連れて行ってもらって入籍→権力でConoHaを朝廷お墨付きVPSにしてもらう→HAPPY END(はぁと)— 美雲このは (@MikumoConoHa) 2014年1月19日
喋れども喋れども わがフォロワーなぜか減少 じっとキーボードを見る— 美雲このは (@MikumoConoHa) 2014年1月30日
木の葉
今はもう笑い話ですが、当時はこんなんじゃ技術的に優れて安価であっても、こんな宣伝じゃConoHa駄目なんとちゃうの、と批判する向きもありました。
ちなみに、そこらじゅうからツッコミを食らっていたのを逆手に取り、TechOYAJIなるイベントも開催していたことがあります。今から思えば、インフラ技術をご存知の方にConoHaを知ってもらうための手段としてのNGワードだったのかなとも思います。多分仕掛ける側でも色々ゴタゴタはあったかと思いますが...。
そんな過去のモヤモヤがあるため、これからも清楚かわいい、かつ皆に遊んでもらえるサービスであり続けてもらうために、 このはがキャラ崩壊かな?という時には今でもNGワードを発動する用意があるわけです。ご理解いただければ幸いです。
さいごに
僕自身何年か仕事で OpenStack を触ってきたのですが、昔のバージョンはだいぶ不具合が多かったものの、ここ数年で(感覚としてはJuno辺りから..?)だいぶ安定してきたように思います。しかし、初期のConoHaはそれ以前のバージョンがベースだと考えると、多分最初の立ち上げは大変だっただろうなぁとなんとなく思いました。身を持ってOpenStackの大変さを感じた者として、ConoHaを支える技術屋の方に敬意を表します。多分OpenStackってまだ発展途上で、今はまだまだできることの表面しか触ってないように思いますし、それに伴いConoHaも伸ばせるところはあるんじゃないかと思います。最初にも書きましたが、来年もおもろい展開を期待しています。
これで、ConoHa アドベントは閉幕...でしょうかね(〆たのは初めて)。皆様良いお年を。