【失敗しない】openstackのインストール(All-in-one構成)


OpenStackのインストールがうまくいかないそこのあなた

OpenStackのインストール手順は書籍/サイト/ブログなど色々なところで紹介されているかと思います。同じようにしてインストールしてみても、まあ失敗しますよね。。。

私も、今まで幾度となくOpenStackのインストールを試しましたが、きれいにインストールできたことは一度もありません。

packstackなどのインストーラーを使ってうまくいかない場合はOpenStackおよびインストーラーのバージョンにあると思います。バージョンを指定しないとその時点の最新バージョンがインストールされてしまうため、過去の異なるバージョンで成功した手順が使えなくなるケースが多いです
手順さえ守っていただけたら誰でも再現できるインストール手順をまとめます!

インストールするOpenStack

  • バージョン : Stein
  • インストーラー : packstack (バージョン: 14.0.0-1)
  • 構成 : All in one構成

そのうちマルチノード構成もできたらと思っています

環境

サーバ(仮想マシン)設定

今回はNested KVM上にCentOS7のVMをデプロイし、そこにOpenStackをインストールします。
ベアメタルサーバ(物理サーバ)にOpenStackをインストールする場合は、HWが原因でインストールが失敗したりすることがよくあります。仮想マシンにはこれがないためインストールの再現性を確保することができます。

インストール設定

  • OS : CentOS(7.6.1810)
  • 言語:English
  • タイムゾーン:Asia/Tokyo
  • パッケージ: core(最小限のパッケージのみインストール)
  • その他: とくに指定はない

言語はEnglishがおススメです。。

OS基本設定

ネットワーク設定

ホスト名: OpenStackAllinone

インターフェース:

/etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br-ex
/etc/sysconfig/network-scripts/ifcfg-br-ex
TYPE=Bridge
BOOTPROTO=none
DEFROUTE=yes
NAME=br-ex
DEVICE=br-ex
ONBOOT=yes
IPADDR=10.0.0.82
PREFIX=24
PEEERDNS=no
GATEWAY=10.0.0.24

※1 ブリッジの作成にはbridge-utilsが必要です。
yum -y install bridge-utilsで事前にインストールしておきましょう

※2 ブリッジの名前はbr-exにしておくと断然楽っす

サービス

NetworkManager停止/無効化

# systemctl stop NetworkManager
# systemctl disable NetworkManager

Firewalld停止/無効化

# systemctl stop firewalld
# systemctl disable firewalld

SELinux無効化(設定変更後に再起動が必要)

/etc/selinux/config
SELINUX=disabled  # この行を修正

その他

hostsを追記

/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.0.0.82   OpenstackAllinone #追記

OpenStackのインストール

レポジトリの登録

yum install -y https://rdoproject.org/repos/rdo-release.rpm epel-release 

レポジトリの最新化

yum update -y

openstack steinのインストール

yum install -y centos-release-openstack-stein

steinを指定してインストールする

openstack packstackのインストール

yum install -y openstack-packstack-14.0.0-1.el7.noarch

バージョン:14.0.0-1を指定する

packstackひな形ファイルの生成

# packstack --gen-answer-file=/root/answer.txt --default-password=password --os-heat-install=y --os-heat-cfn-install=y --os-neutron-l2-agent=openvswitch

データベース同期のタイムアウトを無効化

デフォルトでは300秒でタイムアウトするようになっています。
このタイムアウトが原因でインストールエラーするケースがあるため、このタイムアウトを無効化します。

以下の4つのファイル

  • /usr/share/openstack-puppet/modules/nova/manifests/db/online_data_migrations.pp
  • /usr/share/openstack-puppet/modules/nova/manifests/db/sync.pp
  • /usr/share/openstack-puppet/modules/nova/manifests/db/sync_api.pp
  • /usr/share/openstack-puppet/modules/neutron/manifests/db/sync.pp

デフォルトで
$db_sync_timeout = 300,
となっているところを
$db_sync_timeout = 0,
に変更する

OpenStackのセットアップ

# packstack --answer-file answer.txt --timeout=0 --debug

数10分かかります

これでインストールは完了するはずっす!!

**** Installation completed successfully ******

Additional information:
 * Time synchronization installation was skipped. Please note that unsynchronized time on  r some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 10.0.0.81. To us  source the file.
 * To access the OpenStack Dashboard browse to http://10.0.0.81/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory
 * Because of the kernel update the host 10.0.0.81 requires reboot.
 * The installation log file is available at: /var/tmp/packstack/20191206-135151-vFozMv/o
 * The generated manifests are available at: /var/tmp/packstack/20191206-135151-vFozMv/ma
 * Note temporary directory /var/tmp/packstack/e098fce212114719ba8b7c9920579160 on host 1  g purposes.

インストール後のセットアップ手順についてはこの記事に追記します!!