16
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

OpenStack Kolla(Ocata)環境の構築

はじめに

最近にわかに注目を集めているコンテナ版のOpenStack(OpenStack Kolla)をインストールしてみました。
基本的には公式のインストール手順で行けるのですが、ハマる要素もいくつかあったのでメモとしてまとめました。

2017-11-18追記
Pike版だとデプロイ中にエラーが発生します。こちらの手順の方が成功率が高いです。

OpenStack Kollaとは

NovaやNeutronといったOpenStackの各コンポーネントをDockerコンテナの形態でデプロイするプロジェクトです。
通常のデプロイ手順だと、OpenStackのバージョンアップ等で再インストールする場合にホストのOS再インストールから必要になりますが、Dockerコンテナの形態だとホストOSの再イントールを必要とせず、コンテナのイメージを入れ替えるだけでバージョンアップができる点で便利と言えます(試したことはありませんが)。

・参考にしたURL:
  公式ドキュメント(Quick Start)
  https://docs.openstack.org/developer/kolla-ansible/quickstart.html

  OpenStack Kolla を Macbook Air にインストールしてみた
  http://qiita.com/radedance/items/ba656f69fad407097efc

環境構成

MACのVirtualBox上に作成したCentOS7.3のVMに、AllInOne構成で構築しました。
VMは以下の条件で作成しました。
 ・VM名:Kolla_Ocata
 ・CPU数:2CPU
 ・メモリ:8GB(最低条件として8GB必要)
 ・仮想ハードディスク:100GB(最低条件として40GB必要)
 ・ネットワーク:以下の2つを作成(最低条件として2つ必要)
   (1)「ブリッジアダプター」・・・ダッシュボードアクセス用
   (2)「内部ネットワーク」・・・Publicネットワーク用

Kolla_Network4.png

ちょっとわかりにくいですが、OpenStackのダッシュボードへは自宅LANの192.168.0.159へ、OpenStack Novaが生成するインスタンスにはPublicネットワーク上のFloating IPへ接続するようにします。

構築メモ

1. VMにCentOS7.3をインストール

余計なものは入れず、最小限のインストールを行う。
インストーラ上では主に以下の設定を行った。
 ・SECURITY POLICY:Apply security policyをオフ
 ・ソフトウェアの選択は「最小限のインストール」(何もチェックを付けない)
 ・ネットワークとホスト名
   ・イーサネット(enp0s3)をオン、方式=手動、192.168.0.159を設定(ダッシュボードアクセス用)
   ・イーサネット(enp0s8)をオン、方式=手動、IPアドレス設定なし(Publicネットワーク用)
 ・ホスト名:kolla

インストール完了後、ファイアウォールの無効化と英語ロケール設定を行う。

$ sudo systemctl disable firewalld
$ sudo systemctl stop firewalld

$ sudo echo "LANG=en_US.utf-8" > /etc/environment
$ sudo echo "LC_ALL=en_US.utf-8" >> /etc/environment
$ sudo reboot

2. インストール前準備

以降はVirtualBoxのVMにSSHログインし、rootアカウントで実施する。

2.1 gitのインストール

# cd /root
# yum install -y git

2.2 EPELとPIPのインストール

# yum install -y epel-release
# yum install -y python-pip
# pip install -U pip
# yum install -y python-devel libffi-devel gcc openssl-devel

2.3 Ansibleのインストールとアップグレード

# yum install -y ansible
# pip install -U ansible

バージョンが2.0以上であることを確認する。

# ansible --version
ansible 2.3.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
  python version = 2.7.5 (default, Nov  6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]

2.4 Dockerのインストール

# curl -sSL https://get.docker.io | bash
# docker --version
Docker version 17.04.0-ce, build 4845c56

2.5 Dockerをsystemdに登録

# mkdir -p /etc/systemd/system/docker.service.d
# tee /etc/systemd/system/docker.service.d/kolla.conf <<-'EOF'
[Service]
MountFlags=shared
EOF

Dockerを再起動する。

# systemctl daemon-reload
# systemctl enable docker
# systemctl restart docker

2.6 Docker Pythonのインストールとアップグレード

# yum install -y python-docker-py
# pip install -U docker-py

2.7 NTPのインストール

# yum install -y ntp
# systemctl enable ntpd.service
# systemctl start ntpd.service
# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*sv01.azsx.net   10.84.87.146     2 u    2   64    1    6.992   -0.183   1.114
 chobi.paina.net 131.113.192.40   2 u    1   64    1    5.951    0.167   0.791
 mmm21.wni.co.jp 172.16.20.210    3 u    2   64    1    6.948   -1.208   0.422
 x.ns.gin.ntt.ne 249.224.99.213   2 u    1   64    1   16.135    2.059   1.075

2.8 libvirtdが動いていたら止める

# systemctl stop libvirtd.service
# systemctl disable libvirtd.service

3. Kollaのインストール

ここから、Kolla関連の構築を行います。今回はイメージのビルドは行わず、公開されているイメージを利用する方法で実施します。

3.1 kolla-ansibleのインストール

2017年5月時点におけるkolla-ansibleの最新版は4.0.1だが、4.0.1に対応するkolla-toolboxが存在しないため(後述のdocker pullでエラーになる)、4.0.0を指定した。

# pip install kolla-ansible\==4.0.0
# cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/
# cp /usr/share/kolla-ansible/ansible/inventory/* .

3.2 コンフィグ編集

# vi /etc/kolla/globals.yml

・「Kolla options」のすぐ下に、HA設定を無効化する設定を追加する。
 (デフォルトではHA設定が有効になっているが、追加のIPアドレスを必要とするためHA設定を無効化する)

enable_haproxy: "no"

・「kolla_internal_vip_address」に、ダッシュボードアクセス用のIPアドレスを指定する。

kolla_internal_vip_address: "192.168.0.159"

・「network_interface」のコメントアウトを外し、ダッシュボードアクセス用のインターフェース名を指定する。

network_interface: "enp0s3"

・「neutron_external_interface」にはPublicネットワーク用のインターフェース名を指定する。

neutron_external_interface: "enp0s8"

・一緒に入れたいコンポーネントのコメントアウトを外し、yesを設定する。
 今回はMagnumとMistralを一緒に入れてみました(お好みで)。

enable_magnum: "yes"
enable_mistral: "yes"

3.3 パスワードファイル作成

# kolla-genpwd

/etc/kolla/passwords.ymlが作成される。

3.4 kolla.confの編集

# vi /etc/systemd/system/docker.service.d/kolla.conf

以下のように編集して保存する。

[Service]
MountFlags=shared
ExecStart=
ExecStart=/usr/bin/docker daemon

Dockerを再起動する。

# systemctl daemon-reload
# systemctl restart docker

3.5 DockerイメージのPull

# kolla-ansible pull

以下のコマンドで、ダウンロードしたイメージの一覧を確認できる。

# docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
kolla/centos-binary-neutron-server              4.0.0               8dedaf87d819        7 weeks ago         727MB
kolla/centos-binary-nova-compute                4.0.0               35da27fc5586        7 weeks ago         1.23GB
kolla/centos-binary-neutron-openvswitch-agent   4.0.0               d276dcdfcbb6        7 weeks ago         727MB
kolla/centos-binary-neutron-metadata-agent      4.0.0               e1c0bf5f7745        7 weeks ago         703MB
kolla/centos-binary-heat-api                    4.0.0               66332a0e6ad4        7 weeks ago         644MB
kolla/centos-binary-neutron-dhcp-agent          4.0.0               445442cd0f01        7 weeks ago         703MB
kolla/centos-binary-neutron-l3-agent            4.0.0               445442cd0f01        7 weeks ago         703MB
kolla/centos-binary-heat-api-cfn                4.0.0               ce92766d3ff1        7 weeks ago         644MB
kolla/centos-binary-nova-ssh                    4.0.0               3b0f5591ecc8        7 weeks ago         723MB
kolla/centos-binary-nova-placement-api          4.0.0               8a16c227e835        7 weeks ago         755MB
kolla/centos-binary-nova-conductor              4.0.0               65a844b9889e        7 weeks ago         703MB
kolla/centos-binary-nova-api                    4.0.0               d90b06229654        7 weeks ago         755MB
kolla/centos-binary-nova-consoleauth            4.0.0               487d0b6926d3        7 weeks ago         704MB
kolla/centos-binary-nova-scheduler              4.0.0               92bdcfc854ac        7 weeks ago         703MB
kolla/centos-binary-nova-novncproxy             4.0.0               7f246ab0d8f5        7 weeks ago         704MB
kolla/centos-binary-mistral-api                 4.0.0               dea0beefd398        7 weeks ago         747MB
kolla/centos-binary-kolla-toolbox               4.0.0               d771b993a59b        7 weeks ago         730MB
kolla/centos-binary-keystone                    4.0.0               9b0c48681973        7 weeks ago         677MB
kolla/centos-binary-magnum-conductor            4.0.0               013fa86c2b71        7 weeks ago         804MB
kolla/centos-binary-glance-registry             4.0.0               68da81d330c4        7 weeks ago         757MB
kolla/centos-binary-horizon                     4.0.0               dc5a666631eb        7 weeks ago         863MB
kolla/centos-binary-cron                        4.0.0               74a89fe112f0        7 weeks ago         418MB
kolla/centos-binary-openvswitch-db-server       4.0.0               37f21379cad8        7 weeks ago         440MB
kolla/centos-binary-heat-engine                 4.0.0               ab9138c4719c        7 weeks ago         644MB
kolla/centos-binary-glance-api                  4.0.0               bc61de7fba03        7 weeks ago         816MB
kolla/centos-binary-mistral-executor            4.0.0               692e80061a81        7 weeks ago         747MB
kolla/centos-binary-mistral-engine              4.0.0               b958be6864c7        7 weeks ago         747MB
kolla/centos-binary-magnum-api                  4.0.0               3ab836582293        7 weeks ago         762MB
kolla/centos-binary-fluentd                     4.0.0               5b98e39f1285        7 weeks ago         720MB
kolla/centos-binary-nova-libvirt                4.0.0               b21c5bacfbcf        7 weeks ago         966MB
kolla/centos-binary-openvswitch-vswitchd        4.0.0               b047dd6e83cd        7 weeks ago         440MB
kolla/centos-binary-memcached                   4.0.0               927246be7bd2        7 weeks ago         418MB
kolla/centos-binary-rabbitmq                    4.0.0               c9e9af5a39b9        7 weeks ago         477MB
kolla/centos-binary-mariadb                     4.0.0               7c9305397257        7 weeks ago         808MB

3.6 Novaの設定

# egrep -c '(vmx|svm)' /proc/cpuinfo
0

上記で0が返った場合は以下を設定する(VirtualBoxのVMの場合は0が返るはず)。

# cat << EOF > /etc/kolla/config/nova/nova-compute.conf
[libvirt]
virt_type = qemu
cpu_mode = none
EOF

3.7 デプロイ

# kolla-ansible prechecks -i all-in-one

プリチェックでエラーにならなければデプロイする。

# kolla-ansible deploy -i all-in-one

デプロイ完了後、以下を実行する。

# kolla-ansible post-deploy

3.8 OpenStack環境の初期設定

OpenStack Clientをインストールする。

# pip install python-openstackclient

続けて以下を実行する。
(途中で聞かれるパスフレーズは何も入力せずエンターキー押下しても問題ないです)

# . /etc/kolla/admin-openrc.sh
# cd /usr/share/kolla-ansible
# ./init-runonce

初期設定完了後、以下を実行してログインパスワードを確認する。

# env | grep OS_
OS_USER_DOMAIN_NAME=default
OS_PROJECT_NAME=admin
OS_IDENTITY_API_VERSION=3
OS_PASSWORD=djHvbaN8ns8gqFm4MUqHAc5X6vD6PEt8u8AZil6Z
OS_AUTH_URL=http://192.168.0.159:35357/v3
OS_USERNAME=admin
OS_TENANT_NAME=admin
OS_INTERFACE=internal
OS_PROJECT_DOMAIN_NAME=default

OS_PASSWORDの値が、ダッシュボードのログインパスワードとなる。

4. 動作確認

4.1 ダッシュボードにログイン

ブラウザでダッシュボード(http://192.168.0.159 )を開き、adminでログインする。

login.PNG

4.2 テスト用インスタンス生成

プロジェクト→コンピュート→インスタンスを選択し、「インスタンスの起動」をクリック。
以下の設定を行い、「インスタンスの起動」をクリックしてインスタンスを作成する。
 ・詳細タブのインスタンス名:Server1
 ・ソースタブのイメージ:cirrosを選択
 ・フレーバータブ:m1.tinyを選択
 ・ネットワークタブ:demo-netを選択

インスタンス作成後、Floating IPもインスタンスに設定する。

以下のようにテスト用にインスタンスを2個作成しました。

instance.PNG

4.3 セキュリティーグループ設定

プロジェクト→ネットワーク→セキュリティーグループを選択し、defaultのセキュリティグループに以下のルールを追加。
 ・ルール:すべてのICMP、方向:送信

4.4 Publicネットワーク設定

構築直後はPublicネットワークへのアクセス用のブリッジが未設定のため、ホストOS上で以下を設定する。

# ip addr add 10.0.2.1/24 dev br-ex
# ip link set br-ex up
# ip route add 10.0.2.0/24 dev br-ex

しばらくすると、ホストOS上からインスタンスのFloating IPへのpingが通るようになる。

# ping 10.0.2.157
PING 10.0.2.157 (10.0.2.157) 56(84) bytes of data.
64 bytes from 10.0.2.157: icmp_seq=1 ttl=63 time=2.20 ms
64 bytes from 10.0.2.157: icmp_seq=2 ttl=63 time=0.540 ms
64 bytes from 10.0.2.157: icmp_seq=3 ttl=63 time=0.565 ms
64 bytes from 10.0.2.157: icmp_seq=4 ttl=63 time=0.583 ms

これで一通り使える環境が整いました。
別の機会に、イメージビルドして構築する手順も試してみたいと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
16
Help us understand the problem. What are the problem?