devstackを利用したOpenStackの構築 - CentOS7版
CentOS 7にdevstackでOpenStackをインストールしてみたので、手順をメモしておく。
構成
VMware Fusionの上に以下のスペックの仮想マシンを作成する。
- VMware Fusion Professional 7.1.1 (2498930)
- cpu: 1
- mem: 4096MB
- hdd: 30GB
- nic0: vmnet10,192.168.100.240/24
- nic1: vmnet11,172.16.100.240/24
インストール対象コンポーネント
- cinder
- heat
- horizon
- keystone
- neutron
- nova
事前準備
ホスト名の変更や/etc/hostsへの自身のIPアドレスの登録など、基本的な設定を行う。また、VMware Fusion上の仮想マシンのNIC名は長すぎて、VLAN & LinuxBridgeの組み合わせのようなケースでは、ipコマンドがインターフェイスを作成するときにエラーとなるので、昔ながらのethNとして利用できるよう、grubの設定を変更しておく。
ホスト名設定(/etc/hostname)
devstack
hostsファイルへの登録(/etc/hosts)
192.168.100.240 devstack
172.16.100.240 devstack
/etc/sysconfig/selinux
「いしかわさんごめんなさい いしかわさんごめんなさい いしかわさんごめんなさい」3回詠唱してから無効化する。
SELINUX=disabled
NetworkManagerを停止する
NetworkManagerを停止して、無効化しておく。
# systemctl stop NetworkManager
# systemctl disable NetworkManager
/etc/sysconfig/network-scripts/ifcfg-eth[01]を作成する
構成にあわせてIPアドレスを設定する
NIC名を従来のethNに戻す(/etc/sysconfig/grub)
- /etc/sysconfig/grub の GRUB_CMDLINE_LINUX に biosdevname=0 net.ifnames=0 を追記する
- grub2-mkconfig -o /boot/grub2/grub コマンドで変更を反映する
- システムを再起動する
必要となるパッケージを追加する
個別に必要となるパッケージ群をインストールしておく。Development Toolsはパッケージグループであるため、yum groupinstallでインストールする。
iptablesのクリア
iptablesをクリアした状態で保存しておく。(いらないかも)
# iptables -F
# service iptables save
devstackを利用したOpenStackのインストール
stackユーザを作成してsudoを許可する
ユーザを作成する
# adduser stack
# passwd stack
New password: ********
Retype new password: ********
sudoを許可する
# echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
devstackを取得する
公式サイトのリポジトリから、devstackをチェックアウトする。以降の作業はstackユーザで実施する
$ git clone https://git.openstack.org/openstack-dev/devstack
$ cd devstack
local.confを作成する
$HOME/devstack/local.confを作成する
##
## local.conf for devstack
##
[[local|localrc]]
ADMIN_PASSWORD=changeme
MYSQL_PASSWORD=changeme
RABBIT_PASSWORD=changeme
SERVICE_PASSWORD=changeme
SERVICE_TOKEN=changeme
## Log settings
LOGDIR=$DEST/logs
SCREEN_LOGDIR=$LOGDIR
SCREEN_HARDSTATUS="%{= rw} %H %{= wk} %L=%-w%{= bw}%30L> %n%f %t*%{= wk}%+Lw%-17< %-=%{= gk} %y/%m /%d %c"
LOGFILE=$LOGDIR/devstack.log
## Milestone of each components
VERSION=master
CINDER_BRANCH=$VERSION
GLANCE_BRANCH=$VERSION
HORIZON_BRANCH=$VERSION
KEYSTONE_BRANCH=$VERSION
NOVA_BRANCH=$VERSION
NEUTRON_BRANCH=$VERSION
SWIFT_BRANCH=$VERSION
## Keystone
KEYSTONE_TOKEN_FORMAT=UUID
## Glance
IMAGE_URLS=http://download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-uec.tar.gz
## Cinder
VOLUME_BACKING_FILE_SIZE=8192M
## Neutron
## To use nova-network, comment out the following
## for VM on VMware Fusion
PRIVATE_NETWORK_NAME=net1
PUBLIC_NETWORK_NAME=ext_net
PUBLIC_NETWORK_GATEWAY=192.168.100.2
FLOATING_RANGE=192.168.100.0/24
Q_PLUGIN=ml2
Q_FLOATING_ALLOCATION_POOL="start=192.168.100.129,end=192.168.100.190"
disable_service n-net
enable_service neutron
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-lbaas
enable_service q-fwaas
enable_service q-vpn
## Heat
enable_service heat h-api h-api-cfn h-api-cw h-eng
#disable_service heat h-api h-api-cfn h-api-cw h-eng
## Ceilometer
#enable_service ceilometer-acompute ceilometer-acentral ceilometer-collector ceilometer-api
disable_service ceilometer-acompute ceilometer-acentral ceilometer-collector ceilometer-api
CEILOMETER_BACKEND=mongo
## Swift
SWIFT_HASH=e2ce2896-d961-4eba-b649-62ae2835f137
#enable_service s-proxy s-object s-container s-account
disable_service s-proxy s-object s-container s-account
## Database backend
enable_service mysql
#enable_service postgresql
##
## [EOF]
##
OpenStackをインストールする
iptablesで母艦からのhorizon及び各APIへのアクセスを許可するスクリプト(open_filter.sh)を作成して実行しておく。
#!/bin/sh
export DEVSTACK_SERVER=192.168.100.240
sudo iptables -A INPUT -p tcp --dport http -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport http -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 5000 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 6080 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 6080 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 8000 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8003 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 8003 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8004 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 8004 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8773 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 8773 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8774 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 8774 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8775 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 8775 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8776 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 8776 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9191 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 9191 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9292 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 9292 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9696 -j ACCEPT
sudo iptables -I FORWARD 4 -i eth0 -m state --state NEW -m tcp -p tcp -d $DEVSTACK_SERVER --dport 9696 -j ACCEPT
#
# [EOF]
#
stack.shを実行して、OpenStackをインストールする。stack.sh実行後にscreenでOpenStackの各コンポーネントのサービスが起動するのはubuntu版と同様。
$ cd $HOME/devstack
$ ./stack.sh
再起動時に備えてmariadbとhttpdサービスを有効化しておく。
$ sudo systemctl enable mariadb
$ sudo systemctl enable rabbitmq-server
$ sudo systemctl enable httpd
$ sudo systemctl enable openvswitch
リブート後のサービス再開
再起動後にOpenStackの各コンポーネントを起動する方法は以下の通り、cinder-volume用のボリュームバックエンドをlosetupしてからrejoin-stack.shを実行する。あらかじめ、open_filer.shを実行しておくのを忘れずに。
$ sh $HOME/open_filter.sh
$ sudo losetup -f /opt/stack/data/stack-volumes-lvmdriver-1-backing-file
$ cd $HOME/devstack
$ ./rejoin-stack.sh