openstack
SoftLayer

SoftLayerの無料ベアメタルでOpenStackの学習をする(2) - サーバー環境の確認とDevStack環境の用意

More than 3 years have passed since last update.

前回はこちら - 次回はこちら



これはなに

「OpenStackクラウドインテグレーション オープンソースクラウドによるサービス構築入門」の実習をSoftLayerの無料ベアメタルで行う記録である。

OpenStackクラウドインテグレーション オープンソースクラウドによるサービス構築入門


サーバー環境の確認

前回はSoftLayerにベアメタルのオーダーをした。今回は、オーダー後、2時間ちょっとで「Your SoftLayer Bare Metal Server (test.os.local) has been provisioned」というメールが来た。「test.os.local」が今回サーバーにつけた名前。ポータルから確認して、サーバー名の右側に時計のアイコンが消えていれば、プロビジョニングは完了している。

02-01.png

アニバーサリーデート(月締め日)を越えてサーバーを維持すると、2ヶ月目以降は1日使うだけでも1ヶ月分の料金がかかる。私のような小心者はここでActionからCancelしてしまう。月額の仮想サーバーは、即時キャンセルとアニバーサリーデート・キャンセルが選べるが、月額ベアメタルはアニバーサリーデート・キャンセルの予約のみ。これで、アニバーサリーデートに自動キャンセルされ、来月は料金がかからない。もし、予算がつくとか、来月も使いたいという場合は、キャンセルのキャンセルができる。

デバイス名をクリックして詳細を確認すると、HWの詳細やrootのパスワードが確認できる。root?ubuntuなのに? はい。SoftLayerのubuntuは、rootでのログインが可能になっている。


sshで入って、中身を確認する。

CPUはXeon 1270 3.40GHzをオーダーしたけれど、ひとつ上の3.50GHz($10高い)になっている。

root@test:~# cat /proc/cpuinfo

~~~
model name : Intel(R) Xeon(R) CPU E3-1270 v3 @ 3.50GHz
~~~

メモリーはオーダーどおり32GB。

root@test:~# cat /proc/meminfo

MemTotal: 32908248 kB
~~~

DISKは500GBのオーダーに対して1TBのものがついている。SoftLayerでは、在庫がない場合、無料でグレードアップしてくれることが多いらしい。

root@test:~# fdisk -l /dev/sda

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
~~~

環境に問題なさそうなので、作業を始めよう。


第1章 OpenStackの概要

読むだけの章で、作業なし。


第2章 クイックスタート

作業環境を構築する章。「2.1 HP Helion Public Cloud」「2.2 SUSE Cloud」「2.3 RDOによる環境構築」に続き「2.4 DecStackによる環境構築」。今回は、DevStackでやるので、2.4へ移動。


2.4 DecStackによる環境構築

2.4.1は環境全体像の説明、2.4.2はubuntuの導入。今回は済んでいる。


2.4.3 ホストLinuxの環境設定

書籍は、ubuntu DesktopなのでGUIからTerminalを開いているけれど、今回はサーバーなので操作は基本的にsshで行う。79ページで「sudo apt-get」をしているけれど、もともとrootでログインしいるので、sudoはつけなくて「apt-get」でOK。つけてももちろん問題ない。open-sshサーバーは導入・起動済みなので作業は不要。


2.4.4 ホストLinuxの環境設定

この本では、GitHub上のサポートサイト https://github.com/josug-book1-materials/に設定ファイルや構築スクリプトを用意していて、入力が面倒な人(私)や入力ミスが多い人(私)に備えている。そのため「git clone」して、設定されているスクリプトを流せば、基本的に問題なく作業ができるようになっている。

当項のGitHubのディレクトリーはこちら。

https://github.com/josug-book1-materials/ubuntu-virtinst

まず、openstack.xmlを元にKVMの仮想ネットワークを設定する。192.168.100.0/24が設定される。

次に、KVMのVMを3台立てる。用意されている作成スクリプトと自動導入用のpreseed設定ファイルは下記のとおり。

仮想マシン
ホスト名
IPアドレス
作成スクリプト
preseed.cfg

コントローラーノード
stack01
192.168.100.10
virtinst-stack01.sh
preseed.cfg

コンピュートノード#1
stack02
192.168.100.11
virtinst-stack02.sh
preseed.cfg

コンピュートノード#2
stack03
192.168.100.12
virtinst-stack03.sh
preseed.cfg

VMの作成スクリプトを確認すると、ftp.riken.go.jpからhttpでubuntuを取得している。時間がかかりそうなのと、依存関係はないはずなので、本では順番に作成しているが、sshを3セッションはって平行して3台立ててしまう。

IPアドレスの設定は、preseed.cfgに指定されている。

メモリーやDISKのサイズを変更するなら、作成スクリプトのパラメーターを変更するが、今回はメモリー32GB、DISK 1TBなので、そのまま実行する。

stack01のみ「--network」が2回指定され、仮想NICが2枚ついている。preseedで構成されなかったeth1の設定を/etc/network/interfacesに追加しrebootする。

stack02/stack03には「--disk」の指定が2回ある。追加ディスクはCinder用である。


2.4.5 DevStackのインストールと設定

ubuntuを導入したVMにDevStackを導入する。当項のGitHubのディレクトリーはこちら。

https://github.com/josug-book1-materials/quick-devstack

まず、コントローラーノード stack01の導入をする。

./stack01/setup.sh を流す。下記があるので、今回の環境はjunoということらしい。

git clone -b stable/juno git://git.openstack.org/openstack-dev/devstack.git $DEVSTACK_DIR

./stack01/setup.sh は構成情報の local.confextras.d/99-demo.sh を用意する。

local.conf を見ると、起動させるサービスとかauth_urlとかの情報が入っている。

git://git.openstack.org/openstack-dev/devstack.git から持ってきたstack.shを実行して、DevStackをstack01に導入する。

次にコンピュートノード stack02/03の導入をする。

コンピュートノードの導入は、コントローラーノードの導入に依存するので、stack01の導入完了を待つのが安全である(エラーになっても、再実行すれば適当なところからやってくれるはずだから、という考え方もある)。

./stack02/setup.sh も同様に、構成情報の local.confextras.d/99-demo.sh を用意する。local.conf を見ると、起動させるサービスが、stack01用よりかなり少ないなど、中身がずいぶん違う。stack02はアベイラビリティゾーンaz1用なので、az1の情報しかない。

./stack03/setup.sh も同様に local.confextras.d/99-demo.sh を用意する。local.conf を見ると、stack02用とほぼ同じだが、stack03はアベイラビリティゾーンaz2用なので、az2の情報しかない。

各々で、git://git.openstack.org/openstack-dev/devstack.git から持ってきた、stack.shを実行して、DevStackを導入する。stack02/03は互いに独立なので、同時に導入しても問題ない(と思う)。

3台へのDevStackの導入が終わったら、stack01で post-stack を実行して、環境を整える。

実行しすると、25行目の「neutron net-create Ext-Net --router:external=True」でエラーになった。

ubuntu@stack01:~/quick-devstack$ neutron net-create Ext-Net --router:external=True

usage: neutron net-create [-h] [-f {html,json,shell,table,value,yaml}]
[-c COLUMN] [--max-width <integer>]
[--prefix PREFIX] [--request-format {json,xml}]
[--tenant-id TENANT_ID] [--admin-state-down]
[--shared] [--router:external]
[--provider:network_type <network_type>]
[--provider:physical_network <physical_network_name>]
[--provider:segmentation_id <segmentation_id>]
NAME
neutron net-create: error: argument --router:external: ignored explicit argument u'True'

「--router:external」に明示的に「=True」がついているのが嫌らしい。junoのinstall-guideのneutronのところを見ると「--router:external True」と「=」が無い。

$ neutron net-create ext-net --router:external True \

--provider:physical_network external --provider:network_type flat

これで実行すると「Invalid values_specs True」とエラー。

ubuntu@stack01:~/quick-devstack$ neutron net-create Ext-Net --router:external True

Invalid values_specs True

havanaのガイドに「--」を指定する方法が書いてあったので、

# neutron net-create ext-net -- --router:external=True SPECIAL_OPTIONS

--」をつけたところ成功。「router:external」も「True」になっている。


ubuntu@stack01:~/quick-devstack$ neutron net-create Ext-Net -- --router:external=True
Created a new network:
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | True |
| id | 339243b9-a885-4cf2-9652-b5ebdc5f33a9 |
| name | Ext-Net |
| provider:network_type | vxlan |
| provider:physical_network | |
| provider:segmentation_id | 1002 |
| router:external | True |
| shared | False |
| status | ACTIVE |
| subnets | |
| tenant_id | 66c635f0be9646e6856bfa8319a1bf1d |
+---------------------------+--------------------------------------+

それ以外は問題なし。gitしたスクリプトを単純に流すのもいいけれと、設定ファイルもあるので、gitはしておいて、スクリプトは1行づつコピペでコマンド、パラメーター、出力を確認しながら、実行するのがいいと思う。何をやっているか、少しは想像できるようになる。


2.4.6 DevStackのインストールと設定

この項は、ここまで作った環境の確認。「コマンド XXXX-list」を、nova、cinder、neutron に対して発行して、問題ないか確認する。


2.4.7 作業用端末とCentOS6イメージの準備

この本では「新人エンジニアがOpenStack上のクラウドにアプリケーション環境を構築する」というストーリー仕立てになっている。ホストLinuxは、このエンジニアのデスクトップ環境用に設定する。

当項のGitHubのディレクトリーは引き続きこちら。

https://github.com/josug-book1-materials/quick-devstack

install_cli.shでクライアントツールを導入し、再ログオンする。これでnovaとかに対するサブコマンドにTAB補完が利くようになる。

記載どおり、環境設定ファイルopenrcを用意し、sourceコマンドで読ませる。内容はこちらのサブセット。

今回は、novaのゲストOSにはCentOS6が使われる。ガイドに従い、CentOS6のイメージを作成し、Glanceにアップロードする。

KVMゲストのディスクを操作するlibguestfs-toolsとapache2を導入する。apache2は、CentOS6のイメージをGlanceにアップロードするときに、イメージを提供するhttpサーバーの役割を果たす。



sudo apt-get -y install libguestfs-tools apache2



CentOS6の導入とイメージ化はbuild_image.shを使う。使われるks設定はこちら

「System halted.」が表示されたら[Ctrl]+[]]を押す。qcow2形式への変換が自動的に行われ、apache2で公開される。

「glance image-create」でインポートして「glance image-list」で「active」になっていることを確認する。

今回のサーバーは公開されているので、速やかにapache2を停止する。

root@test:~# service apache2 stop

* Stopping web server apache2
*


2.5 OpenStack用仮想マシンイメージの作成

ここは「2.4.7 作業用端末とCentOS6イメージの準備」とかでやった、イメージ作成の解説。特に、作業はない。


今回は、ベアメタルの環境を確認して、DevStackの環境を構築した。


前回はこちら - 次回はこちら