[DevStack - an OpenStack Community Production] (http://docs.openstack.org/developer/devstack/)
注意点
- ipv6は無効化しない(v6用のモジュールがエラーを返すのでインストールに失敗する)。
- たとえstableなbranchでも上手くいかないことがあるが気にしない。
- たとえBigTentでも必ずしもDevStackに全てが対応できているわけではない。
- 心を折らない。
構成
- ホストOSにCentOS 7.2
- ゲストOS(DevStackのインストール先)にUbuntu 14.04
┌───────────────────┐
│ │
│ Ubuntu (guest) │
│ with devstack │
│ │
├───────────────────┴──────────────────┐
│ │
│ CentOS (host) │
│ │
└──────────────────────────────────────┘
[ホストOSの設定] (http://qiita.com/tomo_n/items/4bab2a3c16812e89fa27)
ゲスト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のインストール] (http://qiita.com/rintarou/items/bef523c7c8f11097e577)
# パッケージのインストール
$ sudo apt-get install openssh-server
[gitのインストール] (https://git-scm.com/book/ja/v1/使い始める-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のリモートデスクトップ環境の構築] (http://wp.developapp.net/?p=4310) (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がおすすめ)をインストール・起動する。
[コンソール接続の設定] (http://knqyf263.hatenablog.com/entry/2014/01/13/200509) (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 .
- [local.confの編集] (http://docs.openstack.org/developer/devstack/guides/neutron.html)
# 設定ファイルの変更
$ 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の設定値
[参考] (http://stackoverflow.com/questions/35273485/problems-with-devstack-configuration-with-ceilometer)