Ubuntu Weekly Recipe

第307回 サービスオーケストレーションツール「Juju GUI」でWebブラウザからサービスをデプロイする

この記事を読むのに必要な時間:およそ 4.5 分

昨年は第288回第294回で,Ubuntuのサービスオーケストレーションツールである「Juju」を紹介しました。今回はWebブラウザを使ってサーバー上にさまざまなサービスをデプロイできる「Juju GUI」を紹介しましょう。

Juju GUIとJuju Quickstart

Juju GUIは,JujuをWebブラウザから操作できるサーバーサイドのツールです。Node.jsベースで実装されており,サービスの状態の確認,ドラッグ&ドロップでのサービスのデプロイ,Webブラウザからのサービスの設定変更やスケールアウト・バック,設定のエクスポートやインポートなどが行えます。実際の動作は,Jujuのデモページを見ると良いでしょう。

Juju GUIをデプロイする

Juju GUIはCharm(Jujuでは,サービスをデプロイするために必要な処理を書いたスクリプト群をCharmと呼びます)として提供されていますので,Jujuを使ってインストールすることになります。そこで,まずJujuの実行環境を用意し,サービスをデプロイできている状態にしておきましょう。具体的には,第288回第294回「juju bootstrap」が完了しているところまで進めておいてください。もちろんデプロイ済みの環境にJuju GUIを導入しても問題ありません。

次にJuju GUI本体をデプロイします。さらにWebサービスなのでexposeコマンドで公開しておきましょう。

$ juju deploy --to 0 juju-gui
$ juju expose juju-gui

最初のコマンドで「--to 0」を指定しているのは,デプロイ先をbootstrapノードと同じインスタンスにするためです。jujuは「--to」オプションを指定しない場合は,deployコマンドごとに新しいインスタンスを作成し,そこにサービスをデプロイします。Jujuで必須のbootstrapノードと今回作成するJuju GUIはどちらもJujuの状態を管理する部分なので,同じインスタンスにインストールするようにしました。もちろん,別のインスタンスにインストールしても問題ありません。

「juju status」で状態を確認して,最終的に「agent-state」「started」になればJuju GUIのデプロイは成功です。ちなみに,bootstrapノードと同じインスタンスにデプロイする場合は,インスタンスの作成をスキップするので数秒でデプロイが完了すると思います。

$ juju status
(中略)
services:
  juju-gui:
    charm: cs:precise/juju-gui-81
    exposed: true
    units:
      juju-gui/0:
        agent-state: started
        agent-version: 1.16.5
        machine: "0"
        open-ports:
        - 80/tcp
        - 443/tcp
        public-address: ec2-zzz-zzz-zzz-zzz.ap-northeast-1.compute.amazonaws.com

デプロイが成功したら,juju-guiサービスにある「public-address」にWebブラウザからアクセスしましょう。初期設定だと自動的にHTTPSにリダイレクトされます。また,デプロイ時に自動生成された自己署名の証明書が使われます。証明書を変更したい場合は,サービスの設定変更手順Juju GUIの設定一覧を参考に,ssl-cert-contentsやssl-key-contentsを変更してください。

そうすると以下のようなログイン画面が表示されるはずです。ユーザー名はjuju-coreパッケージで設定されている「user-admin」が自動補完されています。パスワードは「~/.juju/environments.yaml」の各環境で設定されている「admin-secret」を使います。この値は「juju init」設定時にランダムな値が生成されています。

図1 Juju GUIのログイン画面

図1 Juju GUIのログイン画面

ログインすると簡単な操作ツアーが表示されます。

Juju Qickstartを使う

昨年の12月にJuju GUI 0.14.0がリリースされた時,Juju Quickstart 0.5.0もリリースされました。これはJujuの導入をより簡単にするためのプラグインで,これまで説明したいくつかの定型作業をquickstartコマンド1つで実行できるようになります。

特に強力なのは後述する「Bundle」機能で,これを使えばJujuで何度もコマンドを打って行っていたデプロイや設定作業を1つの設定ファイルをインポートするだけで完了できるようになります。

Juju Quickstartをインストールするには,まずJujuのPPAを追加します。これまでに追加済みであれば必要ありません注1)⁠今のところいくつかの制約があるため,juju-coreパッケージも明示的にインストールしておいた方が良いでしょう。

$ sudo add-apt-repository ppa:juju/stable
$ sudo apt-get update && sudo apt-get install juju-core juju-quickstart

次に,⁠juju init」で環境設定をした後に,⁠juju quickstart」コマンドで環境構築します。

$ juju init
(~/.juju/environments.yamlの編集)
$ juju quickstart
juju quickstart v0.5.0
adding the ppa:juju/stable PPA repository
sudo privileges are required for PPA installation
installing the following packages: lxc, mongodb-server (this can take a while)
sudo privileges will be used for package installation
bootstrapping the amazon environment (type: ec2)
retrieving the environment status
retrieving the Juju API address
connecting to wss://ec2-yyy-yyy-yyy-yyy.ap-northeast-1.compute.amazonaws.com:17070
requesting juju-gui deployment
charm URL: cs:precise/juju-gui-81
juju-gui deployment request accepted
exposing service juju-gui
requesting new unit deployment
juju-gui/0 deployment request accepted
juju-gui/0 deployment is pending
setting up juju-gui/0 on ec2-yyy-yyy-yyy-yyy.ap-northeast-1.compute.amazonaws.com
juju-gui/0 is installed
juju-gui/0 is ready on machine 0
url: https://ec2-yyy-yyy-yyy-yyy.ap-northeast-1.compute.amazonaws.com
password: bbaf91effee4e4a1d0ee8e8dc32f9a59
connecting to the Juju GUI server
done!

最終的に標準のWebブラウザが自動的に起動してJuju GUIのページをロードします。もしUbuntu Server上で実行したのなら,w3mでJuju GUIを表示しようとしますが,残念ながらw3mには対応していませんので,適宜w3mを終了してください注2)⁠

ちなみに本来,quickstartコマンドは「juju init」も含めて代用してくれるはずのものですが,現在はまだ環境設定部分が充分に実装されていないためにこのような対応が必要です。また,標準の環境が「amazon」になっていても「local」と同様にlxcがインストールされてしまいます。このあたりは,Ubuntu 14.04 LTSのリリースまでにはある程度整理される予定です。

注1)
実はquickstartコマンドにはこのPPAを追加する機能も存在します。今のところJuju Quickstartをインストールする前にPPAを追加する必要があるためあまり利便性はありませんが,Ubuntu 14.04 LTSがリリースされたときに「Juju Quickstartは公式リポジトリからインストールし,Juju本体はquickstartコマンドでPPAからインストールする」という形が一般的になるかもしれません。
注2)
--no-browserオプションを使ってもかまいません。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入