Trial and Error

ITで色々やってることを書いてくチラシの裏です

OpenStack Stein releaseをPackstack(RDO)でvirtualbox上に構築する手順まとめ

はじめに

前回記事のつづき。
今回はvirtualboxで仮想centos導入→その上にopensrackインスト、ログインまでを取り上げる。

モノが来るのにまだ数日かかるので、その間に構築手順を把握/整理する目的で先人の足跡をまとめておく。

※6/3追記
構築完了しました!

手順をまとめる上で特に参考にさせて頂いた資料は以下。


何はともあれ公式。
www.rdoproject.org

仮想環境上に構築した事例としては以下、
qiita.com

all-in-one構成ではなく、多ノード構成事例(controllerノードとcomputeノードを分離)
qiita.com


各種スペック

物理マシン

前回選定したもの。

GPU NVIDIA(R) GeForce RTX(TM) 2070 8GB【DVI-D x1 / HDMI2.0 x1 / DisplayPort1.4 x2 / USB Type-C x1】
CPU インテル(R) Core(TM) i7-8700 プロセッサー (3.20GHz/6コア/12スレッド/12MB)
メモリ 64GB(16GB×4) PC4-21300(DDR4-2666) DDR4 SDRAM
SSD/HDD 320GB Colorful製 SL500 シリーズ / 3TB S-ATA
OS Windows(R) 10 Home 64bit版

仮想マシン

virtualbox上に以下設定で構築

vCPU 4cpu
メモリ 32GB
仮想ディスク 100GB, VDI, 可変
OS CentOS7.6 minimal 64bit
Provider(Public) network*1 10.0.2.0/24 GW:10.0.2.1 NS:8.8.8.8 interface:enp0s3
Management network*2 192.168.56.0/24 GW:192.168.56.1 interface:enp0s8

手順

仮想centos環境の設定

windowsvirtualboxインスト→virtualbox上にcentosインスト」までの手順はノウハウも豊富にあるので割愛。

但しmanagement network設定の際に、プロミスキャスモードを「すべて許可」にする点に注意(openstackインスタンスが外部と通信するために必要)

以下ネットワーク、セキュリティ周りを中心に設定を進める。

立ち上がった仮想centosにログインして、NICの確認。
provider(enp0s3)とmanagement(enp0s8)2つのインターフェースが認識されていることを確認

# ip a


/etc/sysconfig/network-scripts/ifcfg-enp0sxをそれぞれ以下のように編集。

【provider NW(ifcfg-enp0s3)】
外部NWなのでDHCP有効にする。

TYPE=Ethernet
BOOTPROTO=dhcp
NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes


【management NW(ifcfg-enp0s8】
内部NWは固定IPで。
こちらと同様に192.168.56.100をopenstack各サービスのエンドポイントにする。

TYPE=Ethernet
BOOTPROTO=static
NAME=enp0s8
DEVICE=enp0s8
ONBOOT=yes
IPADDR=192.168.56.100
NETMASK=255.255.255.0


firewalldの自動起動停止/起動停止。
外部ネットワークとアクセス可にする。

# systemctl disable firewalld
# systemctl stop firewalld

ネットワーク設定の反映

# systemctl enable network
# systemctl start network


NetworkManagerの自動起動停止/起動停止。
固定IPをネットワークカードに割り振るのでこれも無効にする。

※6/3追記
NetworkManagerを止める前に、ip a叩いてホストオンリーアダプタにIPアドレスが振られているか確認する。
振られていない場合はnmtui等でstaticにアドレスを割り振る→NWプロセス上げ直し→再確認した上でNMを停止。


# systemctl disable NetworkManager
# systemctl stop NetworkManager


SELinux無効化

# setenforce 0
# vi /etc/selinux/config
   SELINUX=disabled


ここで仮想マシンから外部へping飛ばしたり、ターミナルソフトでssh接続できるか一旦確認。

openstackインスト

centosの場合は以下、

# yum install -y centos-release-openstack-stein

yum-config-managerを使用するのでyum-utilsインスト

yum install -y yum-utils

openstack-steinリポジトリを有効化。

# yum-config-manager --enable openstack-stein

パッケージ全体を更新。

# yum update -y

packstackインスト。

# yum install -y openstack-packstack


今回はheat*3の検証を行いたいのでanswer fileを生成して、インストされるかどうか確認。

# packstack --gen-answer-file=answer.txt

また、デフォルトではmanagement intにprovider intのアドレスがアサインされてしまう(10.0.2.15)ので、全て192.168.56.100に置換する。


※6/3追記
IPアドレス以外で、今回answerファイルを書き換えた箇所は以下

# Specify 'y' to install OpenStack Data Processing (sahara). In case
# of sahara installation packstack also installs heat.['y', 'n']
CONFIG_SAHARA_INSTALL=y

# Specify 'y' to install OpenStack Orchestration (heat). ['y', 'n']
CONFIG_HEAT_INSTALL=y

# Specify 'y' to install OpenStack Container Infrastructure
# Management Service (magnum). ['y', 'n']
CONFIG_MAGNUM_INSTALL=y

# Specify 'y' to install OpenStack Database (trove) ['y', 'n']
CONFIG_TROVE_INSTALL=y


openstackインスト。
30-60分程度かかるとのこと。

# packstack --answer-file=answer.txt


※6/3追記
当環境では30分位でインスト完了。

f:id:niaoz:20190604134312p:plain
Neutron L2 agentで警告が出てるのが気になるものの、インスト完了

無事終わったらhorizon*4経由でログイン出来るはず。

http://192.168.56.100/dashboard/

ログイン情報は/root/keystonerc_adminにあり。
f:id:niaoz:20190604133958p:plain

f:id:niaoz:20190604134125p:plain
ログイン後のトップページ(リソース状況)

※6/3追記
無事ここまで辿り着いたらNMを再度有効にする。
(これを忘れると、次回起動時にIPアドレスがホストオンリーアダプタにアサインされない!)

# systemctl enable NetworkManager
# systemctl start NetworkManager

この次

実際にマシンが届いたら構築して追記する予定。
実際の構築でドはまりしませんように…

※6/3追記
次はOpenStack内の認証、セキュリティ、NW諸々の整備とheatの簡単な検証かなー

と、言いたいとこですが…

物理マシンのwin10でcritical process diedというかなりやばい事象が頻発してるので、その対処しないとorz

更新履歴

2019/5/20: 手順公開
2019/6/3: 構築完了により手順追記

*1:外部アクセス用ネットワーク。Virtual BoxのNATネットワークを使用

*2:管理サーバー用ネットワーク。openstackの内部ネットワークとして使用する。Virtual Boxのホストオンリーネットワークを使用。

*3:openstackでのオーケストレーションを提供するコンポーネントAWS CloudFormationに相当

*4:ダッシュボード機能(webインターフェース)を提供するコンポーネント