Ubuntu Weekly Recipe

第288回 デプロイツール「Juju」を使って大魔導師を目指そう

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

やれ仮想化だ,やれクラウドだと,様々な単語が流行っていく中で,管理者が構築・運用しなければいけないサーバの数はどんどん増えています。今回はUbuntu Serverを「スケール」させるうえでとても便利なデプロイツールである「Juju」を紹介します。

Jujuとは

JujuはCanonicalが開発している「サービスオーケストレーションツール」です。公式サイトやホワイトペーパーでは抽象的な表現が多すぎて「お前は何を言っているんだ」状態なJujuですが,簡単に言うと「Amazon EC2やOpenStack,Azure,LXC,MAASといったサービス上にUbuntu Serverを用意し,そこに既存の各種サービスをデプロイするための自動化ツール」です。

Ubuntuにはもともと強力なパッケージ管理システムであるAPTが存在します。APTシステムを使えば多種多様なソフトウェアの依存関係の解決やインストール,アップグレードを非常に簡単に行えます。しかしながら,ソフトウェアのインストールだけでサービスの構築作業が完了するとは限りません。他のソフトウェアとの連携やサイト特有の設定は,インストール後に管理者が自分で行う必要があります。

たとえば,WordPressでブログサイトを構築する場合を考えましょう。Ubuntuにはwordpressパッケージが存在するので,これをapt-getコマンドでインストールすればWordPressのインストールは完了です。ところがこのままではWordPressは動作しません。なぜならWordPressのデータを保存するデータベースを用意していないからです注1)⁠実際にWordPressを使うためには,Ubuntuのヘルプにもあるようにデータベースパッケージのインストールや設定も別途「手動で」行う必要があります。

このような従来「手動で」行っていた作業を,自動化することがJujuの目的です。パッケージという個々のパートを,ひとつの調和のとれたサービスに「編成」するために,⁠サービスオーケストレーションツール」と呼ばれています注2)⁠

注1)
なぜwordpressパッケージにデータベースのパッケージが依存していないかと言うと,データベースは必ずしもwordpressパッケージをインストールするマシン上に存在する必要はないからです。このためwordpressパッケージをインストールするとき,⁠mysql-serverパッケージ」のインストールが「提案」されますが,自動的にはインストールされません。
注2)
開発当初,Jujuはこの「オーケストラ」という単語にあわせて「Ensemble(アンサンブル)⁠と呼ばれていました。ちなみに「Juju」はアフリカの言葉で「魔法」「魔除け」を意味します。さらにJujuに必要なスクリプト群は「Charm(魔力・おまじない)⁠と呼ばれています。つまりJujuを使えば「Charm(魔力)を用いてJuju(魔法)を発動する魔法使い」になれるのです。

Chefとの違い

サービス構築の自動化という意味では,ChefやPuppetを思い浮かべる方も多いでしょう。JujuとChefやPuppetは,標準でできることやその実現方法,ポリシーなど細かい違いは数多く存在しますが,⁠サービスの構築で,できるだけ楽をしたい」という点では同じ方向を向いていますし,⁠UbuntuにはJujuがあるからChefは使えない」というわけでもありません。

よってUbuntu上でどちらを使うかは,やりたいことや好みに合わせて選べば良いでしょう。あえてChefとの違いを挙げるなら,次のような相違点が存在します。

  • Jujuは構成スクリプトをBashやPythonなど好きな言語を使って記述できる
  • Jujuは構築の中でも,サービス間の動的な「Relation」「Scale」の設定の自動化に注力している
  • Chefが数多くのプラットフォームに対応しているのに対して,JujuはUbuntuしかサポートしていない

もちろんJujuとChefを共存させることも可能です。Ubuntuインスタンスの生成とChefを動かすためのセットアップまでをJujuで,そこから先をChefで構築するという方法で,既存のChefのコードを流用することもできます。

Charm(構築手順書)を共有する

サービス構築にあたっての手順書を,Jujuでは「Charm」と呼びます。どんなパッケージをインストールするのか,インストール後にどんな設定を行うのか,設定が変更されたときはどうするのか,という手順はもちろんのこと,他のCharmに紐付けられたときにどういう動作をすべきかということもCharmに記載します。

これらの構築手順書は,再利用できて初めて真価を発揮するものです。もちろん個々の環境に特化したCharmでもかまわないのですが,より多くの環境でより汎用的に使えるCharmを作っておけば,サービス構築の試行錯誤に時間を割くことなく新しいサービスを運用できます。

そこでCanonicalではCharm StoreというCharm登録・公開サイトを作成しています。ここで公開されたCharmはJujuコマンドから簡単に再利用できます。さらに他のUbuntuのソフトウェアやパッケージと同様にLaunchpad上でのバージョン管理やチケット管理もできるのです。

インストール方法

以前,Ubuntu Serverをさらっと用意する方法で,少しだけJujuの導入方法について触れました。今回はもう少し詳しく,そして最新のJujuに沿った形でインストール方法を紹介します。

Jujuを使ううえで最低限必要なのは,⁠UbuntuもしくはOS Xがインストールされたマシン(クライアント)⁠「SSHの鍵」⁠⁠デプロイ先のマシン(サーバ)⁠の3つです注3)⁠

クライアントにはJujuを使うためのコマンド群をインストールします。明示的にJujuをインストールする必要があるのはこのクライアントだけです。

サーバとして使うマシンは物理マシンでも仮想マシンでもかまいません。仮想マシンは各種クラウドサービスを利用できますし,LXCを使ってクライアントとサーバを同じマシン上で実行することもできます。物理マシンを使う場合はMAASを用いてUbuntuがインストールされている必要があります。

もしまだ持っていないようなら,まずはSSH鍵を作成しておきましょう。

$ ssh-keygen -t rsa -b 2048

この鍵は,Jujuで構築したサーバにログインするために必要となります。

次にJujuをクライアントにインストールします。Jujuは頻繁にリリースされており,できるだけ最新のJujuを使うためにもPPAからインストールしてください。

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

最後にJujuの設定ディレクトリと設定テンプレートを生成しておきましょう。次のコマンドは「~/.juju/」ディレクトリを作成し,そこに設定ファイルのひな形を保存します。

$ juju init

これでJujuのインストールは完了です。

注3)
Jujuは最近,MacのOS X上にHomebrewを使ってインストールできるようになりました。詳しいインストール方法は公式のドキュメントを参照してください。ここではUbuntuのインストール方法のみを紹介しますが,インストール方法以外はOS X版と違いはありません。

著者プロフィール

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

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

コメント

コメントの記入