1. JujuとMAAS
1.1. Jujuとは
Canonicalが提供するJujuは、アプリケーション実行環境とアプリケーションのデプロイメントをするためのソフトウェアです。
Amazon EC2やMicrosoft Azure、Google Cloud PlatformといったパブリッククラウドやOpenStackといったプライベートクラウド、ローカル環境上のLinux Containerなどに対応しています。
これらのサービスに対してJujuのコマンドやGUIによる操作でアプリケーションの配備や設定を自動化することができます。
Jujuを実行するクライアントとサービスプロパイダーはbootstrapを経由して制御します。
最終的にデプロイしたいアプリケーションやアプリケーションをデプロイしたいサービスプロパイダーによって少々異なるものの、次のような流れでアプリケーションのデプロイメントが可能です。
% juju bootstrap 〜 #クラウドやサービスと接続
% juju deploy app-1 #app-1のデプロイ
% juju deploy app-2 #app-2のデプロイ
% juju add-relation app-1 app-2 #app-1と2の接続とアプリケーションの構成の適用
JujuにはCharmとBundleという概念があります。Charmはアプリケーションのインストールの手順書や設定、テンプレートなどがパッケージングされたものです。
様々なアプリケーションをデプロイすることができるCharmが提供されています。
Bundleは簡単に説明すると、複数のCharmの集合体です。Charmをデプロイメントする感覚でBundleを利用することで、複数のアプリケーションからなるアプリケーションシステムのプロビジョングが可能になります。
どのようなアプリケーションが利用可能か、どのようなBundleが提供されているかは「jujucharms.com」で確認できます。
次に述べる、同じくCanonicalが開発するMAASと組み合わせて使うことにより、所有する物理サーバーや仮想サーバーを利用した単体のWebアプリケーションから
OpenStack、Hadoopといったような大規模アプリケーションのプロビジョニングが可能になります。
1.2. MAASとは
Canonicalが提供するMAASは、ノードとネットワークの管理、オペレーティングシステムをデプロイメントをするためのソフトウェアです。
初期のMAASではベアメタルプロビジョニングを行うためのソフトウェアでしたが、現在利用できるMAAS 1.9や2.xではLinux KVMやVMware ESXiをサポートしています。
これらのハイパーバイザーで仮想マシンを作成して、その仮想マシンを物理サーバーと同様にMAASで利用、管理することができます。
MAASは内部でDHCPやDNS、PostgreSQLやPXEといったサーバーが動作しています。これらを組み合わせてノードのネットワークの管理やOSのプロビジョニングを実現しています。