Openstackのインストール(Icehouse)

==============================

## 環境

- CentOS 6.5
- 物理サーバ(NIC2枚)


## Overview

Openstackを社内プライベートクラウドとして構築したのでインストールのメモを残します。
検証も兼ねているのでオールインワン構成です。

### 構築後イメージ

![image](http://drive.google.com/uc?export=view&id=0Bxo2POZfV6bbczlIcUs1VEtfSEU)
## Requirements

- サーバ (Xeon 32CPU, mem 128G, HDD 120G, public用NIC, private用NIC)。

出来ればベアメタルがいいです。仮想環境上だとNeutron等ネットワーク周りで躓く可能性が高いです。

## Installation

インストールにはRedhatが提供している[RDO Packstack](https://openstack.redhat.com/Quickstart)を使います。
日々更新されていてblackbox的な部分もあるのでこれをそのまま本番環境に適用出来るか分かりませんが検証、評価用途ならこれで十分です。

- disable SELinux

```bash
# Permissive
setenforce 0
```

- カーネルパラメータの変更

```/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
```

- カーネルパラメータ読み込み

```bash
sysctl -p
```

- packstackのインストール

```
yum update
yum install https://rdo.fedorapeople.org/rdo-release.rpm
yum install openstack-packstack python-netaddr
```

- 設定を反映させるためマシンの再起動

```
shutdown -r now
```

- 公開鍵ログイン設定

packstackは対象ホストにssh経由でインストールを実行するのでパスワード入力なしでログイン出来る用にする必要がある。

```bash
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
```

- packstackの実行

```bash
packstack --allinone --install-hosts=192.168.33.10
```

- 外部向けOVSブリッジインターフェースの設定

```/etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=xxx.xxx.xxx.xxx
NETMASK=255.255.255.192
```

`xxx.xxx.xxx.xxx`にはパブリックネットワーク用NICのIPアドレスを設定する。

```/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
ONBOOT=yes
```

- ネットワークの再起動

```
service network restart
```

- その他依存パッケージのインストール

```bash
yum install libguestfs-tools
```

- novaの`virt_type`が`kvm`になっていることを確認。

```/etc/nova/nova.conf
virt_type=kvm
```

- ssetsebool

```bash
setsebool -P virt_use_execmem on
```

- libvirtdの再起動

```
service libvirtd restart
```

- openstackの起動

```bash
openstack-service start
openstack-service status
```

- adminパスワードの確認

```bash
cat /root/keystonerc_admin | grep OS_PASSWORD | awk -F "=" '{print $2}'
```

- dashboardが許可するホスト名の設定

```/etc/openstack-dashboard/local_settings 
# 以下のホスト名のみ受け付ける
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'xxx.xxx.xxx.xxx', 'openstack.exaple.com']
```

- apache再起動

```
service httpd restart
```

- ログイン

http://openstack.example.com/dashboard
先程確認したadminユーザのパスワードでログインする。

## Troubleshooting

### packstackのインストールが途中で止まる

一度設定を削除し再度インストールし直しましょう。
ただでさえコンポーネントの数が多いので下手にいじくるよりは一度クリーンインストールした方が早いです。

- MySQL関連のエラーが出る場合

```
# MySQLをアンインストールし、データディレクトリごと削除
yum remove mysql mysql-server
rm -fR /var/lib/mysql
```

- swift関連のエラーが出る場合

```
Failed to call refresh: Could not find command 'restorecon'
```

とエラーが出る場合は

`/usr/share/openstack-puppet/modules/swift/manifests/storage/mount.pp:68`
の
`path        => ['/usr/sbin', '/bin'],`
を
`path        => ['/usr/sbin', '/sbin'],`
に書き換える

参照: [Bug 1109079 – Packstack installation fail: restorecon not found](https://bugzilla.redhat.com/show_bug.cgi?id=1109079)

- ceilometer関連のエラーが出る場合

`rm -fR /var/log/ceilometer/ceilometer-dbsync.log`

- 他よく分からないエラーが出る場合

php関係がエラーの原因になっている可能性もあるのでアンインストールしておく。

```bash
yum remove php php-*
```