【失敗しない】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

インターフェース：

```text:/etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br-ex
```

```text:/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にしておくと断然楽っす

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435280/44df9ab2-a24e-1075-91a8-24966c77126c.png)


### サービス

NetworkManager停止/無効化

```
# systemctl stop NetworkManager
# systemctl disable NetworkManager
```

Firewalld停止/無効化

```
# systemctl stop firewalld
# systemctl disable firewalld
```

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

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

### その他

hostsを追記

```text:/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.
```

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