最近、ディストリビューションの指定がない場合、OpenStackの構築にはJujuとMAASを使うことが多くなっています。 その理由として、開発がオープンであること、利用に何ら制限がないことがあげられます。
JujuとMAASを組み合わせれば手持ちのサーバーを使ってOpenStackだKubernetesだHadoopだ...と様々な環境を数ステップで構築できます。
JujuにはCharm(チャーム)とBundle(バンドル)というものがあり、Charmをつかうことで任意のマシンにアプリケーションをデプロイできます。複数からなるアプリケーションはRelationによってセットアップされ、関連付けされます。マシンの確保からOSのセットアップ、アプリケーションのデプロイ、そして設定までの一連の流れを自動でセットアップしてくれるBundleというものも存在します。
JujuのCharmとBundleは「JAAS Store」で公開されています。これらのスクリプトをダウンロードして手元で実行すると環境をセットアップできます。OpenStackも例外ではなく、様々な構成のOpenStack環境を作るためのCharmとBundleが公開されています。
注意するポイント
便利なJuju Bundleですが、最近のOpenStack Bundleに大きめの修正が入ったので注意が必要です。普通は検索で引っかかったBundleを使って、デプロイしたいOpenStackのバージョンや構成をした上でOpenStackをデプロイするかと思いますが、OpenStackの基本構成のBundleであるOpenStack Baseのバージョン61以降と、それに監視系のコンポーネントが追加されたOpenStack Telemetryの56以降でPlacementコンポーネントが別コンポーネントとしてデプロイされます。これは以前はNova Controllerにふくまれていました。
新しいBundleを使って古いバージョンのOpenStack(例えば、CanonicalによるUbuntu Bionicとサポート期間が同一のQueensとか)をデプロイしようとすると、失敗することになります。ちなみにPlacementが含まれるバージョンのBundleを使ってOpenStackをデプロイする場合、現状デプロイ可能なのは最新のOpenStack Trainのみです。
OpenStack Train以外を使いたい場合はバンドルの構成とバージョンに注意したほうが良さそうです。以下にPlacementが独立する前のバージョンのリンクを貼っておきます。