LoginSignup
9

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-03-12

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


これはなに

「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の環境を構築した。


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

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
9