OpenStack on Eucalyptus / OpenStack Advent Calendar 2014 3日目

OpenStacker の皆さんこんにちは、日本 Eucalyptus ユーザ会です。

これは OpenStack Advent Calendar 2014 の3日目のエントリです。昨日は @coprolite さんのエントリ「初めてのOpenStack」というエントリでした。正直、初めてのかたでも気軽に参加してくれる OpenStack Advent Calendar が羨ましいです。もちろん当ユーザ会が主催する Eucalyptus Advent Calendar 2014 も初めてのかた大歓迎です。そして当ユーザ会が他のユーザ会の Advent Calendar に参加するという試みも初めてです。うん、初々しいですね。

で、今日は Eucalyptus のインスタンスに OpenStack 環境を作ってみようという話です。

と言っても「OpenStack on Eucalyptus」というネタは何ら新しい試みではなく、過去にも「Eucalyptusではじめるプライベートクラウド構築」の著者である志田氏が国立情報学研究所にて「edubase Cloudで学ぶクラウド入門 ~OpenStackを作ってみよう~その1」という講義の中で OpenStack on Eucalyptus をやっています。

とは言え、あれから Eucalyptus も OpenStack も歳を重ねましたので、ついでに御互いを重ねてもいいじゃないかという意味不明な理由と、あとは 2012 年の Eucalyptus Advent Calendar 2012 JP に @irix_jp さんが投稿してくださった「オプスタでもユーカリしたい」に対するアンサー投稿として書きます。

あ、ちなみにこのエントリをアシストしてくださる「ぷた」と「す~」にお越し頂きました。

どうぞ!一言挨拶を!

……。

え?あぁ、はい、「キャラ設定も何もないのに、挨拶なんてできない」って?なるほどなるほど。わかりました、では先に進めましょう。

ということで、早速 Eucalyptus の上に OpenStack を乗せてみました。(ドヤァ

…すみません、ぷたさんから「そんな OpenStacker を怒らせるようなネタするな」ってツッコまれました。ちゃんとやります。

まずは土台になる Eucalyptus 環境ですが、Eucalyptus Advent Calendar 2014 の2日目の @giraffeforestg さんのエントリ「Eucalyptus 4 を 楽しんでみる を参考にして構築しましたので、Eucalyptus の環境作りはそちらを参照してください。:)

で、この上に Ubuntu のインスタンスを起動させます。ちなみに Ubuntu のマシンイメージは Eucalyptus の公式マシンイメージ から取得しました。

で、取得した圧縮イメージを以下のように解凍して Eucalyptus に登録します。

unxz ubuntu.raw.xz 
# source eucarc 
# euca-install-image -b ubuntu-12.04.4 -r x86_64 -i ubuntu.raw -n ubuntu-12.04.4 --virtualization-type hvm

起動したインスタンスに接続し、devstack を取得します。

ちなみに、本当ならインスタンスのネットワーク設定を変更して DHCP から Statick な設定にしたい気持ちでたっぷりなんですが、それをやると今度は Eucalyptus のネットワークコンポーネントがインスタンスのために iptables で張った設定と異ってしまうため、DHCP で IP を取得する設定のまま進めています。

# apt-get install git
# git clone https://git.openstack.org/openstack-dev/devstack
# cd devstack
# git checkout stable/juno

そして 元木さん謹製の local.conf を流用して環境を作ります。

# wget https://gist.githubusercontent.com/amotoki/b5ca4affd768177ed911/raw/ab186a67b50279acf9f63849e5a6b74ae104663c/local.conf
(ちょいちょいと local.conf を適宜変更し、stack.sh を実行ます)
# ./stack.sh 
You are running this script as root.
Cut it out.
Really.
If you need an account to run DevStack, do this (as root, heh) to create a non-root account:
/root/devstack/tools/create-stack-user.sh

おっと、root ユーザで叩いたら怒られましたので、非 root ユーザを作って実行します。

# /root/devstack/tools/create-stack-user.sh
Creating a group called stack
Creating a user called stack
Giving stack user passwordless sudo privileges
# mv devstack /opt/stack/
# chown stack. -R /opt/stack/devstack
# su - stack
$ cd devstack/
$ ./stack.sh 

すると…今回のこの環境は Linux Mint 上の KVM ゲストに Eucalyptus 環境を作成し、そのインスタンス上で devstack を動かすという状況なのですが、さすがに nested vm 上での devstack は余程パワーのあるマシンでもない限りなかなか処理が終わらないようです…orz

ということで、既に 12/04 00:00 を過ぎてしまいましたが、今後 devstack の進捗があればまた更新させて頂きます。