OpenStack Newton環境の構築(Packstack使用)


はじめに

PackstackによるOpenStackのお手軽インストールを試したらいろいろハマりました。ようやく成功率の高い手順を編み出せたので、ハマった部分も補足しつつメモとしてまとめます。

2017.1.11 説明を少々追加

目指すOpenStack構成

  • VirtualBoxで作成したCentOS7.2のVMにOpenStackを構築
  • OpenStackはPackstackでAllInOneインストール
  • VirtualBoxのVMは自宅LANにブリッジ接続
  • 自宅LAN=OpenStackのPublicネットワーク(OpenStack上で作成するインスタンスにFloating IPを設定すれば、PublicネットワークからSSH接続可能)

使用したPC

  • 本体:Mac Mini(2014年モデル)
  • CPU:2.8GHz Intel Core i5
  • メモリ:16GB
  • OS:macOS Sierra 10.12.2
  • VirtualBox:バージョン5.1.12

構築メモ

1. VirtualBoxでVM作成

以下のVMを作成し起動させる。

  • 名前:PackStack_Newton
  • メモリ:8192MB
  • 仮想ハードディスク:100GB(可変サイズ)
  • CPU数:2CPU
  • CDROM:CentOS-7-x86_64-DVD-1511.iso
  • ネットワーク:ブリッジアダプターを選択、プロミスキャスモードは「すべて許可」を選択すること

2. CentOS7.2のインストール

インストーラ上で以下のようにしてインストールを行う。開発ツール等を入れてしまうとPackstackの構築が失敗する可能性大のため最小限のインストールを行う。

  • SECURITY POLICY:Apply security policyをオフ
  • ソフトウェアの選択は「最小限のインストール」(何もチェックを付けない)
  • ネットワークとホスト名
    • イーサネット(enp0s3)をオンにする
    • ホスト名:packstack
    • 設定をクリック
      • 全般の「この接続が利用可能になったときは自動的に接続する」にチェック
      • IPv4のセッティングでは下図の手動設定を行う

インストール中にROOTパスワードとユーザー作成(管理者設定)も行う。

3. Packstackインストール

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

3.1 事前準備

3.1.1 NTP設定

# yum -y install ntp
# systemctl start ntpd
# systemctl enable ntpd

3.1.2 ファイアウォールやNetworkManagerの無効化

# systemctl disable firewalld
# systemctl stop firewalld
# systemctl disable NetworkManager
# systemctl stop NetworkManager
# systemctl enable network
# systemctl start network
# setenforce 0

3.1.3 英語ロケール設定

# echo "LANG=en_US.utf-8" > /etc/environment
# echo "LC_ALL=en_US.utf-8" >> /etc/environment

リブートで反映させる。

# reboot

3.2 Packstackインストール

# yum install -y centos-release-openstack-newton
# yum update -y
# yum install -y openstack-packstack

Packstackのコンフィグとなるanswerファイルを事前作成する。
自宅LANがPublicネットワークとなるよう、--os-neutron-ovs-bridge-interfacesオにVMのインターフェース名(ここではenp0s3)を指定しておく。
その他にもさまざまな設定が可能だが、--provision-demo-floatrangeでPublicネットワークのアドレスを指定するとPackstackのインストールが途中で失敗するため指定しないこと。

# packstack --gen-answer-file=/root/answer.txt \
 --default-password=password \
 --os-heat-install=y \
 --ntp-servers=ntp.nict.jp \
 --os-neutron-ovs-bridge-mappings=external:br-ex \
 --os-neutron-ovs-bridge-interfaces=br-ex:enp0s3

answerファイルを指定してPackstackのインストールを開始する(完了するまで1時間以上かかる)。

# packstack --answer-file=/root/answer.txt

以下が出力されればインストール成功。

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

Additional information:
 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.0.159. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://192.168.0.159/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * To use Nagios, browse to http://192.168.0.159/nagios username: nagiosadmin, password: password
 * Because of the kernel update the host 192.168.0.159 requires reboot.
 * The installation log file is available at: /var/tmp/packstack/20170109-183736-RgumXF/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20170109-183736-RgumXF/manifests

4. OpenStackネットワークの再構築

4.1 既存設定を削除

ネットワークを作り直すため、adminアカウントでデフォルトのネットワーク設定を削除する。

# source /root/keystonerc_admin
# neutron router-gateway-clear router1
# neutron router-interface-delete router1 private_subnet
# openstack router delete router1
# openstack network delete private
# openstack network delete public

4.2 Publicネットワークの再作成

adminアカウントでPublicネットワークとサブネットを再作成する。

# openstack network create public --external
# openstack subnet create public_subnet \
 --subnet-range 192.168.0.0/24 \
 --allocation-pool start=192.168.0.162,end=192.168.0.180 \
 --gateway 192.168.0.1 \
 --no-dhcp \
 --network public

4.3 Privateネットワークの再作成

demoアカウントでPrivateネットワークとサブネットを再作成する。

# source /root/keystonerc_demo
# openstack network create private
# openstack subnet create private_subnet \
 --subnet-range 10.0.0.0/24 \
 --allocation-pool start=10.0.0.2,end=10.0.0.254 \
 --gateway 10.0.0.1 \
 --network private

4.4 ルーターの再作成

demoアカウントでルーターを再作成し、ゲートウェイとPrivateネットワークのサブネットをルーターに関連付ける。

# openstack router create router1
# neutron router-gateway-set router1 public
# neutron router-interface-add router1 private_subnet

5. インスタンスを生成して疎通確認

5.1 セキュリティグループの編集

インスタンスへのpingとsshが通るよう、セキュリティグループに許可ルールを追加する。

  • ダッシュボードにdemoアカウント(パスワードはpassword)でログイン
  • プロジェクト→コンピュート→アクセスとセキュリティーを選択
  • セキュリティグループタブを選択→defaultのルールの管理
  • ルールの追加より以下4つのルールを追加
    • ルール=ALL ICMP、方向=受信
    • ルール=ALL ICMP、方向=送信
    • ルール=ALL TCP、方向=受信
    • ルール=ALL TCP、方向=送信

ルール追加後、セキュリティグループは以下となる。

5.2 インスタンスの生成

  • ダッシュボードにdemoアカウント(パスワードはpassword)でログイン
  • プロジェクト→コンピュート→インスタンスを選択
  • インスタンスの起動をクリックし、以下を設定してインスタンスの起動ボタンをクリック
    • 詳細タブ:インスタンス名にServer1
    • ソースタブ:ブートソースからイメージを選び、cirrosを選択
    • フレーバータブ:m1.tinyを選択
    • ネットワークタブ:privateが選択されていることを確認

以下のようにインスタンスが生成、起動される。

インスタンスのステータスが稼働中になったら、Floating IPの割り当てを行う。

5.3 ping疎通確認

FloatingIPに対してpingを実施し、レスポンスが正常に返ってくることを確認する。

# ping 192.168.0.169
PING 192.168.0.169 (192.168.0.169) 56(84) bytes of data.
64 bytes from 192.168.0.169: icmp_seq=1 ttl=63 time=2.83 ms
64 bytes from 192.168.0.169: icmp_seq=2 ttl=63 time=1.89 ms
64 bytes from 192.168.0.169: icmp_seq=3 ttl=63 time=0.717 ms