LoginSignup
7
9

More than 5 years have passed since last update.

DevStack設定メモ

Last updated at Posted at 2016-06-16

DevStack - an OpenStack Community Production

注意点

  • ipv6は無効化しない(v6用のモジュールがエラーを返すのでインストールに失敗する)。
  • たとえstableなbranchでも上手くいかないことがあるが気にしない。
  • たとえBigTentでも必ずしもDevStackに全てが対応できているわけではない。
  • 心を折らない。

構成

  • ホストOSにCentOS 7.2
  • ゲストOS(DevStackのインストール先)にUbuntu 14.04
┌───────────────────┐
│                   │
│ Ubuntu (guest)    │
│  with devstack    │
│                   │
├───────────────────┴──────────────────┐
│                                      │
│ CentOS (host)                        │
│                                      │
└──────────────────────────────────────┘

ホストOSの設定

ゲストOSの設定

ネットワークに関する設定

  • ネットワークインターフェースの設定
# 設定ファイルの変更
$ vi /etc/network/interfaces
/etc/network/interfaces
# loopbackインターフェースの設定
auto lo
iface lo inet loopback

# eth0インターフェースの設定(IP固定の場合)
auto eth0
iface eth0 inet static
address x.x.x.x
network x.x.x.x
netmask x.x.x.x
broadcast x.x.x.x
gateway x.x.x.x
dns-nameservers x.x.x.x

# eth0インターフェースの設定(DHCPの場合)
auto eth0
iface eth0 inet dhcp

# ルーティングの設定
## サービス起動時にルーティングを追加
up route add -net x.x.x.x netmask y.y.y.y gw z.z.z.z dev eth0
## サービス停止時にルーティングを削除
pre-down route del -net x.x.x.x netmask y.y.y.y gw z.z.z.z dev eth0
# ネットワークサービスの再起動
$ sudo /etc/init.d/networking restart
  • DNSの設定
# 設定ファイルの変更
$ vi /etc/resolvconf/resolv.conf.d/base
/etc/resolvconf/resolv.conf.d/base
nameserver 8.8.8.8
nameserver 8.8.4.4
# DNS設定の反映
$ sudo resolvconf -u

念のためソフトウェアパッケージを最新状態に更新

# パッケージリストを更新
$ sudo apt-get update
# パッケージを更新
$ sudo apt-get upgrade

sshのインストール

# パッケージのインストール
$ sudo apt-get install openssh-server 

gitのインストール

# パッケージのインストール
$ sudo apt-get install git

NTP・タイムゾーンの設定

# パッケージのインストール
$ sudo apt-get install ntp
# ntpサービスを停止
$ sudo /etc/init.d/ntp stop
# 設定ファイルの変更
$ vi /etc/ntp.conf
/etc/ntp.conf
# 例としてNICTのNTPサーバを追加
server ntp.nict.jp
# 手動で時刻同期
$ sudo ntpdate ntp.nict.jp
# ntpサービスを起動
$ sudo /etc/init.d/ntp start
# タイムゾーンを東京に変更
$ sudo mv /etc/localtime /etc/localtime.bak
$ sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

Windows->Ubuntuのリモートデスクトップ環境の構築 (if necessary)

  • Ubuntuのダッシュボードから「desktop sharing」を検索・起動し、「Allow other users to view your desktop」をチェック、他はチェックをはずす。
  • dconf-editorをインストール・起動し、org > gnome > desktop > remote-access > require-encryption のチェックをはずす。
  • WindowsにVNCビューワ(個人的にはUltraVNC Viewerがおすすめ)をインストール・起動する。

コンソール接続の設定 (if necessary)

# 設定ファイルの変更
$ vi /etc/init/ttyS0.conf
/etc/init/ttyS0.conf
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -L 115200 ttyS0 vt102
# ttyS0を起動
$ sudo start ttyS0
# 設定ファイルの変更
$ vi /etc/default/grub
/etc/default/grub
+GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
+GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

DevStackのインストール

# /optディレクトリに移動
$ cd /opt/
# gitリポジトリをマスタからクローン
$ sudo git clone https://git.openstack.org/openstack-dev/devstack.git
# stackユーザを作成
$ sudo devstack/tools/create-stack-user.sh
# devstackディレクトリの所有者を変更
$ sudo chown -R stack:stack devstack
# stackユーザに変更
$ sudo su - stack
# devstackディレクトリに移動
$ cd /opt/devstack
# DevStackの設定ファイルを編集用にコピー
$ cp samples/local.conf .
# 設定ファイルの変更
$ vi local.conf
local.conf
# Sample ``local.conf`` for user-configurable variables in ``stack.sh``
#@@@ local.confはstack.shによって使用されるユーザ定義変数を設定できる。

# NOTE: Copy this file to the root DevStack directory for it to work properly.
#@@@ 注意:このファイルをdevstack直下に配置する必要がある。

# ``local.conf`` is a user-maintained settings file that is sourced from ``stackrc``.
# This gives it the ability to override any variables set in ``stackrc``.
# Also, most of the settings in ``stack.sh`` are written to only be set if no
# value has already been set; this lets ``local.conf`` effectively override the
# default values.
#@@@ local.confはstackrcで定義される変数に関して、ユーザがメンテナンスするための設定ファイルである。
#@@@ つまり、stackrc内の値を上書きする。
#@@@ また、必要とされる値が記述されていなければ、stack.sh内に記述されているデフォルト値が利用される。

# This is a collection of some of the settings we have found to be useful
# in our DevStack development environments. Additional settings are described
# in http://devstack.org/local.conf.html
# These should be considered as samples and are unsupported DevStack code.
#@@@ このファイルはdevstack環境下で使用される設定のいくつかを集約したものである。
#@@@ 追加設定が必要であれば、以下を参照されたい。
#@@@ http://docs.openstack.org/developer/devstack/configuration.html
#@@@ 追加設定はサンプルであり、devstackコードをサポートしたものではない。

# The ``localrc`` section replaces the old ``localrc`` configuration file.
# Note that if ``localrc`` is present it will be used in favor of this section.
#@@@ localrcセクションは従来使用していたlocalrc設定ファイルに置き換わるものである。
#@@@ 注意:localrcファイルが存在しても、localrcセクションが優先して使用される。

[[local|localrc]]

##### Password #####
#-------------------
# If the ``SERVICE_TOKEN`` and ``*_PASSWORD`` variables are not set
# here you will be prompted to enter values for them by ``stack.sh``
# and they will be added to ``local.conf``.
#@@@ SERVICE_TOKENや*_PASSWORDが設定されていなければ、stack.sh実行時に入力を求められる場合もあり、local.confに追記される。

ADMIN_PASSWORD=stack
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
MYSQL_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=111222333444

#FIXED_RANGE=192.168.9.0/24
#FLOATING_RANGE=192.168.20.0/25

# ``HOST_IP`` and ``HOST_IPV6`` should be set manually for best results if
# the NIC configuration of the host is unusual, i.e. ``eth1`` has the default
# route but ``eth0`` is the public interface.  They are auto-detected in
# ``stack.sh`` but often is indeterminate on later runs due to the IP moving
# from an Ethernet interface to a bridge on the host. Setting it here also
# makes it available for ``openrc`` to include when setting ``OS_AUTH_URL``.
# Neither is set by default.
#@@@ HOST_IPやHOST_IPV6はインターフェースの設定が特殊な場合には設定すべきである。
#@@@ つまり、eth1がデフォルトルートだが、eth0がパブリックインターフェースの場合では、stack.sh内でこれらインターフェースは自動認識されるが、それらは不定なものとなり得る。つまり、IPアドレスはEthernetインターフェースではなくホストのブリッジと紐づくため、devstack管理下には必ずしもないからである。
#@@@ HOST_IPの設定はOS_AUTH_URL設定時にopenrcに含めることもできるが、共にデフォルトでは設定されない。

##### IPアドレス #####
#------------------
#@@@ 使用するIPアドレスを明示的に指定する場合(ローカルに閉じた環境であれば不要)
HOST_IP=192.168.9.129
#HOST_IPV6=xx:xx:xx:xx:xx:xx
#SERVICE_HOST=$HOST_IP

##### openrc #####
#-----------------
#@@@ プロジェクト名
OS_PROJECT_NAME=demo
#@@@ ユーザ名
OS_USERNAME=demo
#@@@ パスワード
OS_PASSWORD=password
#@@@ Keystoneエンドポイント
OS_AUTH_URL=http://$SERVICE_HOST:5000/v2.0

##### インストールオプション #####
#---------------------------
# devstackのインストールディレクトリ。デフォルトでは/opt/stack
#DEST=/opt/stack

# stack.sh実行時に都度git cloneを実行するかどうか。デフォルトではローカルリポジトリが存在すれば、recloneを実行しない。
#RECLONE=yes

# pipによるパッケージアップグレード
PIP_UPGRADE=True

# インターネットに接続したくない場合
#OFFLINE=True

##### Service Repos #####
#------------------------
GIT_BASE=https://git.openstack.org
VERSION=master
#VERSION=stable/mitaka

# Keystone
KEYSTONE_REPO=$GIT_BASE/openstack/keystone.git
KEYSTONE_BRANCH=$VERSION

# Horizon
HORIZON_REPO=$GIT_BASE/openstack/horizon.git
HORIZON_BRANCH=$VERSION

# Nova
NOVA_REPO=$GIT_BASE/openstack/nova.git
NOVA_BRANCH=$VERSION

# Neutron
NEUTRON_REPO=$GIT_BASE/openstack/neutron.git
NEUTRON_BRANCH=$VERSION

# Glance
GLANCE_REPO=$GIT_BASE/openstack/glance.git
GLANCE_BRANCH=$VERSION

# Cinder
#CINDER_REPO=$GIT_BASE/openstack/cinder.git
#CINDER_BRANCH=$VERSION

# Ceilometer
CEILOMETER_REPO=$GIT_BASE/openstack/ceilometer.git
CEILOMETER_BRANCH=$VERSION

# Aodh
AODH_REPO=$GIT_BASE/openstack/aodh.git
AODH_BRANCH=$VERSION

# Heat
#HEAT_REPO=$GIT_BASE/openstack/heat.git
#HEAT_BRANCH=$VERSION

# Swift
#SWIFT_REPO=$GIT_BASE/openstack/swift.git
#SWIFT_BRANCH=$VERSION


##### Services #####
#-------------------
#@@@ 不要なサービスを起動せず、早くデプロイするために、全サービスを停止した後、必要なサービスのみを起動
disable_all_services

##### Database Backend #####
#--------------------------
# Enable Database Backend MySQL(Default) or PostgreSQL
enable_service mysql
#enable_service postgresql

##### RPC Backend #####
#----------------------
# Enable RPC Backend RabbitMQ(Default) or Others
enable_service rabbit

##### Keystone - Identity Service #####
#--------------------------------------
enable_service key

# For Region One
#REGION_NAME=RegionOne

# For Region Two or Later
#disable_service horizon
#KEYSTONE_SERVICE_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
#KEYSTONE_AUTH_HOST=<KEYSTONE_IP_ADDRESS_FROM_REGION_ONE>
#REGION_NAME=RegionTwo
#KEYSTONE_REGION_NAME=RegionOne

# Disabling Identity API v2
#ENABLE_IDENTITY_V2=False

##### Horizon - Dashboard Service #####
#--------------------------------------
enable_service horizon

##### Nova - Cloud Computing Fabric Controller #####
# http://docs.openstack.org/developer/devstack/guides/nova.html
#--------------------------------------------------------------
# (必須)nova network serviceの停止
disable_service n-net

###### Neutron - Network Connectivity Service #####
# http://docs.openstack.org/developer/devstack/guides/neutron.html
#-----------------------------------------------------------------
enable_service neutron

# Neutron options
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
#enable_service q-fwaas
#enable_service q-lbaas
#enable_service q-vpn

Q_USE_SECGROUP=True
FLOATING_RANGE=192.168.9.0/24
FIXED_RANGE=10.0.0.0/24
Q_FLOATING_ALLOCATION_POOL=start=192.168.9.200,end=192.168.9.209
PUBLIC_NETWORK_GATEWAY=192.168.9.1
PUBLIC_INTERFACE=eth0
Q_USE_PROVIDERNET_FOR_PUBLIC=True

# Neutron ML2 with LinuxBridge
Q_PLUGIN=ml2
Q_AGENT=linuxbridge
LB_PHYSICAL_INTERFACE=eth0
PUBLIC_PHYSICAL_NETWORK=default
LB_INTERFACE_MAPPINGS=default:eth0

# Neutron ML2 with OpenvSwitch
#Q_PLUGIN=ml2
#Q_AGENT=openvswitch
#OVS_PHYSICAL_BRIDGE=br-ex
#PUBLIC_BRIDGE=br-ex
#OVS_BRIDGE_MAPPINGS=public:br-ex

# VLAN configuration
#Q_PLUGIN=ml2
#ENABLE_TENANT_VLANS=True

# GRE tunnel configuration
#Q_PLUGIN=ml2
#ENABLE_TENANT_TUNNELS=True

# VXLAN tunnel configuration
#Q_PLUGIN=ml2
#Q_ML2_TENANT_NETWORK_TYPE=vxlan

##### Glance - Image Registry Service #####
#------------------------------------------
IMAGE_URLS=http://download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-uec.tar.gz
enable_service g-api
enable_service g-reg

##### Cinder - Block Storage as a Service #####
#----------------------------------------------
#disable_service cinder
#VOLUME_BACKING_FILE_SIZE=8192M

##### Ceilometer - Data Collection Service #####
#-----------------------------------------------
enable_plugin ceilometer $CEILOMETER_REPO $CEILOMETER_BRANCH
enable_service ceilometer-acompute
enable_service ceilometer-acentral
enable_service ceilometer-notification
enable_service ceilometer-collector
enable_service ceilometer-api
#@@@ Aodhをオンにする場合はceilometer-alarmをdisableにする。
#enable_service ceilometer-alarm-notifier
#enable_service ceilometer-alarm-evaluator
#enable_service ceilometer-ipmi

##### Aodh - Alarming Service #####
#----------------------------------
enable_plugin aodh $AODH_REPO $AODH_BRANCH
enable_service aodh-evaluator
enable_service aodh-notifier
enable_service aodh-api

##### Heat - Orchestration Service #####
#-----------------------------
#enable_service heat
#enable_service h-api
#enable_service h-api-cfn
#enable_service h-api-cw
#enable_service h-eng
#HEAT_STANDALONE=True

##### Swift - Object Storage #####
#---------------------------------
#enable_service s-proxy
#enable_service s-object
#enable_service s-container
#enable_service s-account

##### Logging #####
#------------------
LOGFILE=$DEST/logs/stack.sh.log
LOGDIR=$DEST/logs
LOGDAYS=1
LOG_COLOR=False

##### Syslog #####
#-----------------
#SYSLOG=True
#SYSLOG_HOST=$HOST_IP
#SYSLOG_PORT=516
# devstackの実行
## ダウンロードとインストールを実施するため、時間がかかるので注意
$ ./stack.sh

※ここで再起動するとだいたい壊れるので、その場合はアンインストールして最初から

DevStackのアンインストール

# ローカルリポジトリを含め完全削除
$ ./clean.sh

# インストールパッケージのみ削除
$ ./unstack.sh

ダッシュボードにブラウザでアクセス

  • http://xx.xx.xx.xx/dashboard にインターネットブラウザでアクセス
    • ユーザ名:admin、パスワード:ADMIN_PASSWORDの設定値

参考

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9