CentOS7にOpenStack(JUNO)をインストールする


本記事は、[OpenStack Advent Calendar 2014](:http://www.adventar.org/calendars569)のつもりが、早出ししてしまったので
実はそのままという手抜きです（ごめんなさい

---

先日OpenStackのJリリース、JUNOがリリースされました。
CentOS7に、RDO(JUNO)をインストールします


## OSの準備
今回は、NICが２つ付いたマシンで行いました。
ただし、そのNICは同一のネットワークにつながっていて、特にvlanとかも設定していません。

CentOS7を最小構成でインストールしておきます

## インストール前準備
今回もRDO(packstack)を使ってインストールします

```bash
yum install -y https://rdo.fedorapeople.org/rdo-release.rpm
yum install -y openstack-packstack
```

packstackのオールインワンオプションは使わずにインストールします
junoになって試していませんが、オールインワンだとVM用のネットワークが外に出れません

まず、定義ファイルと生成し、編集します

```bash
packstack --gen-answer=juno
```

インストールしたい・したくないパッケージを適当に選択します
ntpサーバの設定も忘れずに。


```vim
#55行目付近
CONFIG_NTP_SERVERS=192.168.1.1
```

また、今回はシングルオールインワンの構成ですが、テナントと外部ネットとneutronの間での設定のため、インストール時にml2ドライバを指定しておきます
デフォルトのままだと、vxlanしか指定されていないので、ここにflatを追加します

```vim
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat
```

cinder-volumesのバックエンドにlvmを指定している場合
'cinder-volumes'という名前のLVM領域(VG)が必要です



## インストール

packstackを使ってOpenStackをインストールします

```bash
packstack --answer-file=juno
```

しばし待つ

エラーも出ずに終われば完了

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

注意１：ntpがインストールされているとエラーになるので、入れている人は抜きましょう
注意２：mondogbあたりのエラーが取れなかったらceilometerのインストールをオフにすると解決（昨日減るけど）

そして、問題のNetworkManager

```
 * Warning: NetworkManager is active on 192.168.111.192. OpenStack networking currently does not work on systems that have the Network Manager service enabled.
```

ご丁寧にも警告出してくれちゃっいます。

今回はこの警告は放置したまま、NetworkManager全開で参ります

## インストール後の設定

ネットワークブリッジの設定をします

neutronの外部ネットとの接続IF：br-exを物理デバイスにマッピングします

```/etc/sysconfig/network-scripts/ifcfg-enp3s5
TYPE=Ethernet
NAME=enp3s5 #適当
ONBOOT=yes
NM_CONTROLLED=yes
TYPE=OVSPort
OVS_BRIDGE=br-ex
```

仮想ブリッジbr-exは以下のような設定

```/etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
STP=no
NAME=br-ex
BOOTPROTO=none
IPADDR0=xxx.xxx.xxx.xxx
PREFIX0=24
NM_CONTROLLED=yes
IPV6INIT=no
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
```

次に、openvswitchの起動が、NetworkManagerの後になるように、openvswitchのsystemdファイルを修正します

```/usr/lib/systemd/system/openvswitch.service
[Unit]
Description=Open vSwitch
After=syslog.target network.target openvswitch-nonetwork.service NetworkManager.service
Requires=openvswitch-nonetwork.service

[Service]
Type=oneshot
ExecStart=/bin/true
ExecStop=/bin/true
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
```

Afterの指定の最後に[NetworkManager.service]を追記します

再起動します

再起動後、ネットワークの状態を確認します

```
#ovs-vsctr show

Bridge br-ex
    Port br-ex
        Interface br-ex
            type: internal
```


br-exブリッジに、物理デバイスが追加されていなければ、物理デバイスを追加します

```
ovs-vsctr add-port br-ex <物理デバイス名>
```


再度、確認します

```
#ovs-vsctr show

Bridge br-ex
    Port br-ex
        Interface br-ex
            type: internal
    Port "<物理名>"
        Interface "物理名"
```

次に、neutron側で外部ネットワークを定義します

作り方は割愛します。
定義上はこのような形になります

```
[root@mx130 ~(keystone_admin)]# neutron net-show 36a2cb93-2178-4b2d-9fb0-4460fc212135
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | 36a2cb93-2178-4b2d-9fb0-4460fc212135 |
| name                      | external                             |
| provider:network_type     | flat                                 |
| provider:physical_network | br-ex                                |
| provider:segmentation_id  |                                      |
| router:external           | True                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   | b3221700-f5d9-4069-9fd8-c5d1774c6bf7 |
| tenant_id                 | 7b2c0e9435804cf896cde2ae5dacc59e     |
+---------------------------+--------------------------------------+
```

次にテナントネットワーク、およびルータを作成します。
こちらは特別変わったことはないので、従来通りに作れば問題ありません。


あとは、VM作ってFIP付けてログインできれば問題なし

systemdになって、起動順序によってopenvswitchがそのままだとうまく動作しない問題が解決できれば、
あとは従来通り特に問題はないですね

Enjoy your openstack life!