DevStackによるOpenStack(All-in-One)構築(外部と通信可の設定)

要件、及び準備

  • Ubuntu 16.04/CentOS 7で検証済み。
  • メモリ8GB以上、ディスク16GB以上。
  • ネットワークインターフェースは二つ。二つのインターフェースが同一の物理ネットワークに接続されている前提。
  • 一つのインターフェースに下記を設定(DHCPでも可)。もう一つのインターフェースには何も設定しない。
    • IPアドレス/サブネットマスク(この例では192.168.1.1/24)
    • デフォルトゲートウェイ(この例では192.168.1.254)
    • DNS(この例では8.8.8.8)

Stackユーザの追加

DevStack実行用のユーザを追加。以後の作業はstackユーザで行う。

$ sudo useradd -s /bin/bash -d /opt/stack -m stack
$ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
$ sudo su - stack

DevStackをダウンロード

$ git clone https://git.openstack.org/openstack-dev/devstack
$ cd devstack

コンフィグファイル(local.conf)を作成

以下の内容でlocal.confファイルを作成。

[[local|localrc]]
# IPv6を無効化
IP_VERSION=4
# ネットワーク準備で振ったIPアドレス
HOST_IP=192.168.1.1
# VMが使用するIPアドレスのレンジ(ネットワーク準備で設定したサブネットに内包されるレンジを指定)
FLOATING_RANGE=192.168.1.1.160/27 
# 二つ目の何も設定していないインターフェースを指定
PUBLIC_INTERFACE=ens224
# cirrosが起動しない場合、qemuを指定
#LIBVIRT_TYPE=qemu
# パスワード
ADMIN_PASSWORD=openstack
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

OpenStackインストール

$ ./stack.sh

途中、Python関連のパッケージが既にインストールされていて消せないというエラーで異常終了した場合、手動でyumコマンドで該当パッケージを消してからpipコマンドで該当パッケージをインストールして、stack.shを再実行。他の要因で異常終了していても、一回はリトライ。何故か通る場合がある。

OpenStackのネットワーク関連の追加設定

OpenStackのパブリックネットワーク(外部との通信用)とプライベートネットワークにデフォルトゲートウェイ/DNSを設定(adminユーザで実行)。

$ . ./openrc admin
$ openstack subnet set --gateway 192.168.1.254 --dns-nameserver 8.8.8.8 public-subnet
$ openstack subnet set --dns-nameserver 8.8.8.8 private-subnet

VMにアクセスするためのセキュリティグループの設定(ping、及びssh接続、demoユーザで実行)。

$ . ./openrc demo
$ openstack security group rule create --proto icmp --dst-port 0 default
$ openstack security group rule create --proto tcp --dst-port 22 default

VM起動

VM起動、及び外部からVMにアクセスするためのIPアドレスをVMに付与(demoユーザで実行)。

$ openstack server create --image cirros-0.3.5-x86_64-disk --flavor cirros256 cirros
$ openstack floating ip create public
$ openstack server add floating ip cirros {openstack floatingコマンドで払い出されたIPアドレス}

パスワードcubswin:)でVMにsshできて…

$ ssh cirros@{openstack floatingコマンドで払い出されたIPアドレス}

VMから外にpingが飛べば成功!

$ ping www.nec.co.jp
PING www.nec.co.jp (104.78.74.58): 56 data bytes
64 bytes from 104.78.74.58: seq=0 ttl=56 time=7.703 ms
64 bytes from 104.78.74.58: seq=1 ttl=56 time=7.961 ms
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.