OpenStackは思ったほど難しくない
KVMやProxmoxに慣れていれば、数台の仮想マシン(VM)を管理するのはお手の物でしょう。しかし、VMが数十台規模になり、SDNや複雑なストレージ要件が加わってくると、本格的な「管理基盤」が必要になります。そこで登場するのがOpenStackです。
Nova、Keystone、Neutronといった膨大なサービス群を前に諦めてしまう人も多いです。筆者自身、Proxmox上で12台のVMを運用するHomelabを持ちながら、OpenStack専用のコーナーを別に確保しています。OpenStackは単なるツールではなく、クラウドインフラに対する根本的に異なる思想そのものです。高性能サーバーなしで始めるなら、DevStackが最善の選択肢です。
OpenStackのデプロイ方法はどれを選ぶべきか?
コマンドを叩く前に、自分の目的に合った方法を選ぶ必要があります:
- Kolla-Ansible:サービスをDockerコンテナにパッケージングします。本番環境向けには非常に強力ですが、RAMを大量に消費し、Ansibleに不慣れだとデバッグが困難です。
- MicroStack(Snap):コマンド一発でインストールできます。ただし「ブラックボックス」に近く、設定を深く掘り下げて学ぶには向いていません。
- DevStack:OpenStackコミュニティ公式のスクリプト集です。OSに直接インストールするため、設定ファイルを一つひとつ確認したり、リアルタイムでログを追ったりするのが容易です。
なぜDevStackが学習に最適なのか?
最大の利点は透明性です。Keystoneの動作を理解したければ、/etc/keystoneを覗くだけです。Novaのコードを修正してみたければ、/opt/stack内のファイルを直接編集してサービスを再起動するだけで反映されます。唯一の欠点は永続性がないこと(ephemeral)で、再起動後に一部のサービスが商用版ほどスムーズに立ち上がらない場合があります。
ハードウェアの準備:マシンを「窒息」させないために
OpenStackはリソースを大量消費する「モンスター」です。RAM 2GBのVPSに無理やりインストールしようとすると、スクリプトが頻繁にクラッシュします。
- OS:Ubuntu 22.04 LTS(現時点で最も安定したバージョン)。
- CPU:最低2コア。別の仮想マシン上にDevStackをインストールする場合は、ネスト仮想化(Nested Virtualization)を有効にしてください。
- RAM:最低8GB。内部でVMを快適に起動したい場合は、16GBを優先してください。
- ディスク:インストール時のI/Oボトルネックを避けるため、SSD 40GB以上を推奨します。
OpenStack All-in-Oneのデプロイ手順
ステップ1:「stack」ユーザーのセットアップ
DevStackはセキュリティ上の理由からrootでの実行を拒否します。パスワードなしでsudoを実行できる専用ユーザーを作成する必要があります。
sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo chmod 755 /opt/stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo -u stack -i
ステップ2:ソースコードの取得
stable/2023.1(Antelope)ブランチを使用します。機能と安定性のバランスが取れたバージョンです。
git clone https://opendev.org/openstack/devstack -b stable/2023.1
cd devstack
ステップ3:local.confの設定
これはインストールプロセスの核心となるファイルです。local.confで起動するサービスを定義します。デフォルト設定は不要なサービスまでインストールしてマシンに負荷をかけるため、使用しないでください。
新しいファイルを作成します:
nano local.conf
以下の最小構成を貼り付けてください(IPアドレスとパスワードは必ず変更してください):
[[local|localrc]]
ADMIN_PASSWORD=あなたのパスワード123
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
# UbuntuマシンのIPアドレス
HOST_IP=192.168.1.50
# コアサービスのみインストール
enable_service rabbit mysql key glance horizon
enable_service n-api n-cpu n-cond n-sch n-novnc n-cauth
enable_service neutron q-svc q-agt q-dhcp q-l3 q-meta
enable_service cinder c-api c-vol c-sch
LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2
ステップ4:スクリプトの実行
インストールコマンドを実行します。SSDの速度とインターネット回線によって異なりますが、通常20〜30分かかります。
./stack.sh
注意:SSH接続が途中で切れてインストールが台無しになるのを防ぐため、screenまたはtmuxを使用してください。
結果の確認
完了すると、ターミナルにダッシュボードへのアクセスURLが表示されます。通常はhttp://<あなたのIP>/dashboardです。
- ユーザー名:admin
- パスワード:設定ファイルで指定したパスワード。
フレーバー(ハードウェア構成)を作成し、CirrOSインスタンスを起動してみましょう。自宅でクラウドクラスターを自分で運用できるという感覚は、本当に感動的です。
DevStack使用で得た「血と汗」の経験則
ラボを何度も壊してきた経験から学んだことをまとめます:
1. スナップショットが命綱
./stack.shを実行する直前に、必ずUbuntu仮想マシンのスナップショットを取得してください。DevStackはiptablesやネットワークブリッジに深く介入します。インストールに失敗した場合、./unstack.shでの後片付けは完全にはならないことが多いです。
2. RAM不足エラー
n-cpuサービスが「failed」エラーを報告する場合は、すぐに空きRAM容量を確認してください。OpenStackはシステムのフリーズを防ぐため、利用可能なRAMが500MB以下になると自動的にサービスを停止します。
3. CLIによる管理
ターミナルでopenstackコマンドを使用するには、事前に環境変数を読み込む必要があります:
source openrc admin admin
openstack compute service list
まとめ
DevStackは、クラウドコンピューティングのアーキテクチャを習得するための完璧な足がかりです。エラーが出ても心配しすぎないでください。それはむしろ/opt/stack/logsのログを読み込み、システムへの理解を深める絶好の機会です。以前の記事でvirt-managerを触ったことがある方にとって、OpenStackはインフラスキルを次のレベルへ引き上げるための、まさに次のステップです。

