[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)