0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MicroStack を Hyper-V 上で動かしてみた

Posted at

MicroStack とは

MicroStack とは IaaS 構築時によく使用される OpenStack を、 Microk8s の Kubernetes クラスタ上で動かすソフトウェアです。
通常 OpenStack を構築する際は Nova や Glance などのコンポーネントの構築やデータベースのセットアップを行う必要があり、大きな手間がかかります。しかし、MicroStack を使用するとたった数コマンドの実行によってこの OpenStack 環境を簡易的に作成することができます。
今回は Hyper-V で作成した Ubuntu VM 上でこの MicroStack を使用して OpenStack 環境を構築してみたので、その内容について紹介します。

手順

Hyper-V で Ubuntu VM を作成

今回は Ubuntu VM 1台の上に All-in-One 構成の OpenStack を構築するのですが、VM の要件は下記のようになっています。

  • OS:Ubuntu 22.04 LTS
  • CPU:4コア以上のamd64 processor CPU
  • メモリ:16 GB 以上
  • ストレージ:50 GB 以上ルートディレクトリに使用可能領域がある SSD

この要件を参考に、筆者は下記の内容で VM を作成しました。

  • OS:Ubuntu 22.04.4 Server
  • 割当リソース
    • CPU:VCPU 8 コア
    • メモリ:24 GB
    • ストレージ:256 GB
  • ユーザー名:ubuntu
  • ホスト名:microstack01
  • ネットワーク:内部スイッチを使用
    • 筆者の環境ではホストと同じネットワークを使用するためにブリッジネットワークを設定すると、原因は不明ですが下記の「Bootstrap the cloud」の項にてタイムアウトが発生してしまいました。

OpenStack のデプロイ

ここからは先ほど作成した VM 上で https://microstack.run/docs/single-node の 「Deploy the cloud」の手順を順に実施します。

Install the openstack snap

まずは下記コマンドを実行して openstack を snap install します。

sudo snap install openstack --channel 2024.1/edge

Prepare the machine

続いてノード上で OpenStack が正常に動作できるように、下記コマンドを実行してノードのセットアップを行うスクリプトを実行します。

sunbeam prepare-node-script | bash -x && newgrp snap_daemon

Bootstrap the cloud

筆者の環境では、この次に

sunbeam configure --accept-defaults --openrc demo-openrc

というコマンドを実行するのですが、下記のようにエラーが出てしまいました。

ubuntu@microstack01:~$ sunbeam cluster bootstrap --accept-defaults
Error: Host FQDN and Hypervisor hostname perceived by libvirt are different, check `hostname -f` and `/etc/hosts` file

ここで、下記の記事を参考に /etc/hosts

 - 127.0.1.1 microstack01
 + 127.0.1.1 microstack01.multipass microstack01

のように修正するとコマンドが通るようになりました。

Configure the cloud and obtain credentials

続いて下記コマンドを実行して demo-openrc ユーザーを有効化します。

sunbeam configure --accept-defaults --openrc demo-openrc

ここで、少し脱線しますが https://microstack.run/docs/dashboard を参考にダッシュボードをデプロイしてみます。下記のコマンドを実行します。

sunbeam dashboard-url

すると、下記のようにダッシュボードの URL が表示されます。

ubuntu@microstack01:~$ sunbeam dashboard-url
http://10.20.21.13:80/openstack-horizon

ポートフォワーディングを使用して Web ブラウザからダッシュボードをアクセスすると下記のログイン画面が表示されます。

スクリーンショット 2024-08-02 001503.png

ログイン情報は sunbeam configure コマンドで作成された demo-rc ファイルに記載されています。

ubuntu@microstack01:~$ cat demo-openrc
# openrc for demo
export OS_AUTH_URL=http://10.20.21.13/openstack-keystone/v3
export OS_USERNAME=demo
export OS_PASSWORD=xxxxxxxx
export OS_USER_DOMAIN_NAME=users
export OS_PROJECT_DOMAIN_NAME=users
export OS_PROJECT_NAME=demo
export OS_AUTH_VERSION=3
export OS_IDENTITY_API_VERSION=3

ログインにはそれぞれ下記の情報を使用します。

  • ユーザー名:OS_USERNAME の値
  • パスワード:OS_PASSWORD の値
  • ドメイン:OS_PROJECT_DOMAIN_NAME の値

正常にログインできた場合、下記のようにダッシュボードが表示されます。

スクリーンショット 2024-07-30 220352.png

Launch a VM

最後にインスタンスを起動します。下記コマンドを実行します。

sunbeam launch ubuntu --name test

こちらのコマンドを実行すると Ubuntu 22.04 の VM インスタンスが作成されます。

正常に起動できた場合、下記のような出力になります。

ubuntu@microstack01:~$ sunbeam launch ubuntu --name test
Launching an OpenStack instance ...
Access instance with `ssh -i /home/ubuntu/snap/openstack/564/sunbeam ubuntu@10.20.20.169`

案内に従って SSH 接続できることを確認できれば OK です。

ubuntu@microstack01:~$ ssh -i /home/ubuntu/snap/openstack/564/sunbeam ubuntu@10.20.20.169
・・・
ubuntu@test:~$ 

あとがき

今回は MicroStack を使用して Hyper-V 上の Ubuntu VM 1台の上に All-in-One 構成の OpenStack を構築できることを確認しました。
筆者は過去に同条件の OpenStack を手動で構築したこともありますが、その時に比べて今回は遥かに少ない手順と時間で構築できたため、 OpenStack を試験的に触ったり OpenStack API の動作検証を行う場合などに MicroStack は便利かもしれません。
実運用を検討する場合はマルチノード構成での構築やネットワーク構成の見直し、カスタム VM イメージの導入等々、やるべきことが多くありますがドキュメントを参考に進めるのが良いと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?