仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

microstackを使ってOpenStackをAll-in-One構成で使ってみた

microstackはOpenStackをsnapパッケージを使って、ラップトップやx86サーバーなどに展開することができるツールです。公式サイトが用意されています。公式サイトによると、All-in-One構成からマルチノード構成のOpenStack環境をセットアップできるようです。OpenStackもとうとう、ここまできてしまいました。

microstack.run

ちなみに一番利用されているのはUbuntuのようですが、他のディストリビューションでも利用できるようです(→snapcraftのページ)。

今回はAll-in-One構成のセットアップ方法について取り上げますが、マルチノードもいつか試してみようと思います。

まずは触ってみる

インストールに最低限必要な環境について

わたしが使った限り、最低限必要なハードウェアは次のとおりです。

  • 8Core以上のCPU(16Core以上が望ましい)
  • 16GB以上のメモリー(32GBメモリー以上が望ましい)
  • できるだけ速い、容量の大きいディスク(SSDが望ましい)
  • 1つ以上のNIC(Externalをきちんと設定する場合は2つ以上のNICで別VLANを用意)
  • Linux(今回はUbuntu Server 18.04.3を標準インストールしたものを利用)

インストール方法について

次を実行することで、用意されているmicrostackのバージョンを確認できます。 現在インストールできるのはOpenStack SteinとRockyです。

snap info microstack
...
channels:
  stable:          –
  candidate:       stein 2019-10-23 (171) 400MB classic
  beta:            stein 2019-10-23 (171) 400MB classic
  edge:            stein 2019-11-27 (192) 409MB classic
  rocky/stable:    –
  rocky/candidate: –
  rocky/beta:      –
  rocky/edge:      rocky 2019-12-06 (195) 398MB classic
...

今後stableリリースが提供される可能性はありますが、現状は candidate が一番安定版に近いバージョンです。今回はこれをインストールしてみます。

sudo snap install microstack --classic --candidate

セットアップ方法について

microstackはインストール後、イメージ、フレーバー、セキュリティグループなどのセットアップが必要です。これを行うためのコマンドとして microstack.initが用意されています。コマンドを実行したあと指示に従って設定してください。とりあえず、すべてデフォルト設定のまま設定して動かすこともできます。

sudo microstack.init

【同日追記】

セットアップ後は microstack.openstack コマンドを使ってAPIとやり取りしますが、次のコマンドを実行すると microstack. を省略できます。

sudo snap alias microstack.openstack openstack

インスタンスを起動

CirrOSを起動してみましょう。次のコマンドを実行して、インスタンス起動に必要な情報を入手します。

microstack.openstack flavor list
microstack.openstack network list
microstack.openstack image list
microstack.openstack keypair list

その上で、次のように実行してください。

microstack.openstack server create --flavor m1.tiny --nic net-id=test --image cirros --key-name microstack microstack-cirros

Flating IPアドレスの割当とアクセス

さて、このままだとインスタンスにアクセスできませんので、インスタンスにFlating IPアドレスを割り当てましょう。次のコマンドを実行してFlating IPアドレスの割り当てに必要な情報を入手します。

microstack.openstack network list
(ネットワークを確認)

microstack.openstack floating ip create external
(グローバル側ネットワークはexternalなのでこのネットワークからFloating IPを発行)

microstack.openstack floating ip list
(発行したIPアドレスを確認)

microstack.openstack server list
(インスタンスを確認)

microstack.openstack server add floating ip INSTANCE_NAME_OR_ID  FLOATING_IP_ADDRESS
(インスタンスにFlating IPアドレスを割り当て)

INSTANCE_NAME_OR_IDとFLOATING_IP_ADDRESSは実際のものに置き換えてください。INSTANCE_NAME_OR_IDはインスタンス名か長いインスタンスIDのいずれかを指定すればOKです。

あとは次のように、SSHプロトコルによるリモートアクセスをするだけです。

ssh -i ~/.ssh/id_microstack cirros@FLOATING_IP_ADDRESS

Ubuntuインスタンスを動かしてみる

Ubuntuイメージのダウンロード

最新のイメージをwgetで取得しましょう。

wget https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img

Ubuntuイメージを追加

ダウンロードしたイメージを登録します。

microstack.openstack image create --disk-format qcow2 --container-format bare \
  --public --file ./ubuntu-18.04-server-cloudimg-amd64.img ubuntu

Ubuntuイメージ実行用のフレーバーの定義

Ubuntuイメージを起動するためのフレーバーを定義してみます。実は microstack.init の実行でいくつかフレーバーが作られており、これを使うこともできますが、一応コマンドの練習ということで。UbuntuをOpenStackで使う場合は、1CPU、1GBのメモリー、4GBのストレージが最低要件です。とりあえずこの構成で作ってみます。

microstack.openstack flavor create --ram 1024 --disk 4 --vcpus 1 --public m1.core

Ubuntuインスタンスにアクセス

あとはCirrOSと同様なので、コマンドの列挙だけにとどめます。

microstack.openstack server create --flavor m1.core --nic net-id=test --image ubuntu --key-name microstack microstack-ubuntu
(インスタンスを起動)

microstack.openstack floating ip create external
(Flating IPアドレスを発行)
microstack.openstack server list
(インスタンス一覧を確認)
microstack.openstack floating ip list
(Flating IPアドレスを確認)
microstack.openstack server add floating ip INSTANCE_NAME_OR_ID FLOATING_IP_ADDRESS
(インスタンスにFlating IPアドレスを割り当て)
ssh -i ~/.ssh/id_microstack ubuntu@FLOATING_IP_ADDRESS
(UbuntuインスタンスにSSHアクセス)

以上、microstackを使えば簡単にOpenStackをセットアップして使うことができます。プライベートクラウドどころか、パーソナルクラウドがすぐ手に入れられます。大体1時間程度で触り始められます。すごいですね!

動かしたマシンのスペック

手元では、こんな環境で動かしてみました。

  • 32ocre 64GBメモリー SAS SSD 200GB
  • 16Core 64GBメモリー SAS HDD 600GB