日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

本書の概要
以下の OpenStack ドキュメントをベースとしたインストール設定手順をまとめたものである。
http://docs.openstack.org/grizzly/basic-install/apt/content/basic-install_intro.html
ベースの手順からは大きな変更は加えていないため、和訳手順書のように使用することが可能だが、細
かな解説については記述していないため、注意すること。
また、手順書内で正しくない記述がある部分に関しては、本書内では修正している。

使用サーバー
・	
 サーバーは以下 3 台の物理サーバーを用意する
・	
 OS は Ubuntu 12.04 LTS(あらかじめ最新バージョンにすること)を使用
Ø

kernel は 3.2.0-54(3.2.0 系の最新)を使用する

・	
 ネットワークは以下の通り構成した
Ø

eth0: Openstack 内でだけ使用するネットワーク(VLAN を切り、孤立したネットワークと
した)

Ø

eth1: インターネットにアクセス可能なローカルネットワーク(LAN など。ゲートウェイと
DNS もこちらに設定)

□コントローラーノード
ホスト名: ooctr.local.virtualtech.jp
IP アドレス:
・	
 eth0: 10.10.10.35/255.255.255.0
・	
 eth1: 172.17.15.35/255.255.255.0

□ネットワークノード
ホスト名: oonet.local.virtualtech.jp
IP アドレス:
・	
 eth0: 10.10.10.34/255.255.255.0
・	
 eth1: 172.17.15.34/255.255.255.0

1 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

□コンピュートノード
ホスト名: oocom.local.virtualtech.jp
IP アドレス:
・	
 eth0: 10.10.10.36/255.255.255.0
・	
 eth1: DHCP(構築後は無効で良い)

共通の構築手順
・	
 Ubuntu をインストールする
・	
 IP アドレスを設定する
・	
 hosts ファイルを追記する
10.10.10.34

ooctr.local.virtualtech.jp

ooctr

10.10.10.35

oonet.local.virtualtech.jp

oonet

10.10.10.36

oocom.local.virtualtech.jp

oocom

※	
 なお、127.0.1.1 は削除しないこと(rabbitmq-server のインストールに失敗するため)
・	
 以下のパッケージをインストールする
# apt-get install -y ubuntu-cloud-keyring
・	
 /etc/apt/sources.list.d/cloud-archive.list を編集し、以下の内容を記述する
deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main
・	
 OS を最新の状態にアップデートする
# apt-get update && apt-get upgrade
・	
 NTP をインストールする
# apt-get install -y ntp

コントローラーノードの構築
/etc/sysctl.conf の設定
・	
 以下の設定を記述する
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
・	
 設定を反映する
# sysctl -e -p /etc/sysctl.conf

2 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

MySQL の構築
・	
 MySQL サーバーをインストールする。プロンプトが表示されたら MySQL の root ユーザーのパス
ワードを設定する
# apt-get install -y python-mysqldb mysql-server
・	
 MySQL の接続許可のアドレスを書き換える
# sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
・	
 MySQL を再起動する
# service mysql restart
・	
 データベースを作成する
# mysql -u root -p <<EOF
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' 
IDENTIFIED BY 'password';
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' 
IDENTIFIED BY 'password';
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' 
IDENTIFIED BY 'password';
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' 
IDENTIFIED BY 'password';
CREATE DATABASE quantum;
GRANT ALL PRIVILEGES ON quantum.* TO 'quantum'@'localhost' 
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON quantum.* TO 'quantum'@'10.10.10.34' 
IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON quantum.* TO 'quantum'@'10.10.10.36' 
IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EOF

3 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

RabbitMQ のインストール
・	
 RabbitMQ をインストールする
# apt-get install -y rabbitmq-server
・	
 RabbitMQ のゲストパスワードを変更する
# rabbitmqctl change_password guest password

←password の文字を適宜変更

Keystone のインストール
・	
 keystone をインストールする
# apt-get install -y keystone python-keystone python-keystoneclient
・	
 /etc/keystone/keystone.conf を編集する
[DEFAULT]
admin_token = password
debug = True
verbose = True

[sql]
connection = mysql://keystone:password@localhost/keystone
・	
 Keystone を再起動して、データベースにテーブルを作成する
# service keystone restart
# keystone-manage db_sync
・	
 openrc ファイルを作成する
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=password
export OS_AUTH_URL="http://localhost:5000/v2.0/"
export OS_SERVICE_ENDPOINT="http://localhost:35357/v2.0"
export OS_SERVICE_TOKEN=password
・	
 openrc を読み込む
$ source /openrc
※ログインした際に自動で読み込むようにするには、以下のコマンドを実行する
$ echo "source /openrc" >> /.bashrc

4 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

・	
 以下のシェルスクリプトを作成して実行する
#!/bin/bash

# Modify these variables as needed
ADMIN_PASSWORD=${ADMIN_PASSWORD:-password}
SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
DEMO_PASSWORD=${DEMO_PASSWORD:-$ADMIN_PASSWORD}
export OS_SERVICE_TOKEN="password"
export OS_SERVICE_ENDPOINT="http://localhost:35357/v2.0"
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
#
MYSQL_USER=keystone
MYSQL_DATABASE=keystone
MYSQL_HOST=localhost
MYSQL_PASSWORD=password
#
KEYSTONE_REGION=RegionOne
KEYSTONE_HOST=10.10.10.35

# Shortcut function to get a newly generated ID
function get_field() {
while read data; do
if [ "$1" -lt 0 ]; then
field="($(NF$1))"
else
field="$$(($1 + 1))"
fi
echo "$data" ¦ awk -F'[ t]*¦[ t]*' "{print $field}"
done
}

# Tenants

5 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

ADMIN_TENANT=$(keystone tenant-create --name=admin ¦ grep " id " ¦ get_field 2)
DEMO_TENANT=$(keystone tenant-create --name=demo ¦ grep " id " ¦ get_field 2)
SERVICE_TENANT=$(keystone tenant-create --name=$SERVICE_TENANT_NAME ¦ grep
" id " ¦ get_field 2)

# Users
ADMIN_USER=$(keystone user-create --name=admin --pass="$ADMIN_PASSWORD"
--email=admin@domain.com ¦ grep " id " ¦ get_field 2)
DEMO_USER=$(keystone

user-create

--name=demo

--pass="$DEMO_PASSWORD"

--email=demo@domain.com --tenant-id=$DEMO_TENANT ¦ grep " id " ¦ get_field 2)
NOVA_USER=$(keystone

user-create

--name=nova

--pass="$SERVICE_PASSWORD"

--tenant-id $SERVICE_TENANT --email=nova@domain.com ¦ grep " id " ¦ get_field 2)
GLANCE_USER=$(keystone user-create --name=glance --pass="$SERVICE_PASSWORD"
--tenant-id $SERVICE_TENANT --email=glance@domain.com ¦ grep " id " ¦ get_field 2)
QUANTUM_USER=$(keystone

user-create

--pass="$SERVICE_PASSWORD"

--tenant-id

--name=quantum
$SERVICE_TENANT

--email=quantum@domain.com ¦ grep " id " ¦ get_field 2)
CINDER_USER=$(keystone user-create --name=cinder --pass="$SERVICE_PASSWORD"
--tenant-id $SERVICE_TENANT --email=cinder@domain.com ¦ grep " id " ¦ get_field 2)

# Roles
ADMIN_ROLE=$(keystone role-create --name=admin ¦ grep " id " ¦ get_field 2)
MEMBER_ROLE=$(keystone role-create --name=Member ¦ grep " id " ¦ get_field 2)

# Add Roles to Users in Tenants
keystone user-role-add --user-id $ADMIN_USER --role-id $ADMIN_ROLE --tenant-id
$ADMIN_TENANT
keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $NOVA_USER --role-id
$ADMIN_ROLE
keystone

user-role-add

--tenant-id

$SERVICE_TENANT

--user-id

$GLANCE_USER

--role-id $ADMIN_ROLE
keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $QUANTUM_USER

6 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

--role-id $ADMIN_ROLE
keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $CINDER_USER --role-id
$ADMIN_ROLE
keystone user-role-add --tenant-id $DEMO_TENANT --user-id $DEMO_USER --role-id
$MEMBER_ROLE

# Create services
COMPUTE_SERVICE=$(keystone

service-create

--name

nova

--type

compute

--description 'OpenStack Compute Service' ¦ grep " id " ¦ get_field 2)
VOLUME_SERVICE=$(keystone service-create --name cinder --type volume --description
'OpenStack Volume Service' ¦ grep " id " ¦ get_field 2)
IMAGE_SERVICE=$(keystone service-create --name glance --type image --description
'OpenStack Image Service' ¦ grep " id " ¦ get_field 2)
IDENTITY_SERVICE=$(keystone

service-create

--name

keystone

--type

identity

--description 'OpenStack Identity' ¦ grep " id " ¦ get_field 2)
EC2_SERVICE=$(keystone

service-create

--name

ec2

--type

ec2

--description

'OpenStack EC2 service' ¦ grep " id " ¦ get_field 2)
NETWORK_SERVICE=$(keystone

service-create

--name

quantum

--type

network

--description 'OpenStack Networking service' ¦ grep " id " ¦ get_field 2)

# Create endpoints
keystone

endpoint-create

$COMPUTE_SERVICE
--adminurl

--publicurl

--region

$KEYSTONE_REGION

--service-id

'http://'"$KEYSTONE_HOST"':8774/v2/$(tenant_id)s'

'http://'"$KEYSTONE_HOST"':8774/v2/$(tenant_id)s'

--internalurl

'http://'"$KEYSTONE_HOST"':8774/v2/$(tenant_id)s'
keystone

endpoint-create

$VOLUME_SERVICE
--adminurl

--publicurl

--region

$KEYSTONE_REGION

--service-id

'http://'"$KEYSTONE_HOST"':8776/v1/$(tenant_id)s'

'http://'"$KEYSTONE_HOST"':8776/v1/$(tenant_id)s'

--internalurl

'http://'"$KEYSTONE_HOST"':8776/v1/$(tenant_id)s'
keystone endpoint-create --region $KEYSTONE_REGION --service-id $IMAGE_SERVICE
--publicurl

'http://'"$KEYSTONE_HOST"':9292'

--adminurl

'http://'"$KEYSTONE_HOST"':9292' --internalurl 'http://'"$KEYSTONE_HOST"':9292'

7 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)
keystone

endpoint-create

$IDENTITY_SERVICE

--publicurl

2013/10/04 作成
--region

$KEYSTONE_REGION

'http://'"$KEYSTONE_HOST"':5000/v2.0'

'http://'"$KEYSTONE_HOST"':35357/v2.0'

--service-id
--adminurl
--internalurl

'http://'"$KEYSTONE_HOST"':5000/v2.0'
keystone endpoint-create --region $KEYSTONE_REGION --service-id $EC2_SERVICE
--publicurl

'http://'"$KEYSTONE_HOST"':8773/services/Cloud'

'http://'"$KEYSTONE_HOST"':8773/services/Admin'

--adminurl
--internalurl

'http://'"$KEYSTONE_HOST"':8773/services/Cloud'
keystone

endpoint-create

$NETWORK_SERVICE

--publicurl

--region

$KEYSTONE_REGION

'http://'"$KEYSTONE_HOST"':9696/'

--service-id
--adminurl

'http://'"$KEYSTONE_HOST"':9696/' --internalurl 'http://'"$KEYSTONE_HOST"':9696/'

TIPS
もし実行に失敗した場合、以下の手順でやり直しできる
# mysql -u root -p -e "drop database keystone"
# mysql -u root -p -e "create database keystone"
# mysql -u root -p -e "grant all privileges on keystone.* TO 'keystone'@'localhost'
identified by 'password'"
# keystone-manage db_sync
最後に、先述のシェルスクリプトを実行する

8 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

Glance のインストール
・	
 Glance をインストールする
# apt-get install -y glance
・	
 /etc/glance/glance-api.conf と /etc/glance/glance-registry.conf をそれぞれ以下のとおり編
集する
[DEFAULT]
sql_connection = mysql://glance:password@localhost/glance
[keystone_authtoken]
admin_tenant_name = service
admin_user = glance
admin_password = password
[paste_deploy]
flavor=keystone
・	
 以下のファイルを入手して所定位置に配置する
# wget https://raw.github.com/openstack/glance/master/etc/schema-image.json
# mv schema-image.json /etc/glance
・	
 Glance を再起動する
# service glance-api restart && service glance-registry restart
※ /var/log/glance/*.log を 参 照 し て 、 エ ラ ー が 無 い こ と を 確 認 す る
・	
 Glance のデータベースにテーブルを作る
# glance-manage db_sync
・	
 OS イメージを取得して、Glance に登録する
Ubuntu 12.04 LTS の場合
$ wget http://uec-images.ubuntu.com/precise/current/precise-server-cloudimg-amd6
4-disk1.img
$ glance image-create --is-public true --disk-format qcow2 --container-format bare
--name "Ubuntu" < precise-server-cloudimg-amd64-disk1.img
Cirros の場合
$ wget http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img
$ glance image-create --is-public true --disk-format qcow2 --container-format bare
--name "CirrOS 0.3.1" < cirros-0.3.1-x86_64-disk.img

9 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

・	
 Glance にイメージが登録されているか確認するには、以下のコマンドを実行する
$ glance image-list

Nova のインストール
・	
 以下のパッケージをインストールする
# apt-get install -y nova-api nova-cert nova-common nova-conductor nova-scheduler
python-nova python-novaclient nova-consoleauth novnc nova-novncproxy
・	
 /etc/nova/api-paste.ini を編集する
admin_tenant_name = service
admin_user = nova
admin_password = password
・	
 /etc/nova/nova.conf を編集する
[DEFAULT]

sql_connection=mysql://nova:password@localhost/nova
my_ip=10.10.10.35
rabbit_password=password
auth_strategy=keystone

# Networking
network_api_class=nova.network.quantumv2.api.API
quantum_url=http://10.10.10.35:9696
quantum_auth_strategy=keystone
quantum_admin_tenant_name=service
quantum_admin_username=quantum
quantum_admin_password=password
quantum_admin_auth_url=http://10.10.10.35:35357/v2.0
libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver
linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver

# Security Groups
firewall_driver=nova.virt.firewall.NoopFirewallDriver

10 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

security_group_api=quantum

# Metadata
quantum_metadata_proxy_shared_secret=password
service_quantum_metadata_proxy=true
metadata_listen = 10.10.10.35
metadata_listen_port = 8775

# Cinder
volume_api_class=nova.volume.cinder.API

# Glance
glance_api_servers=10.10.10.35:9292
image_service=nova.image.glance.GlanceImageService

# novnc
novnc_enable=true
novncproxy_port=6080
novncproxy_host=10.0.0.35
vncserver_listen=0.0.0.0

TIPS
novncproxy_host=10.0.0.35
このパラメータが Openstack Dashboard 内で使用される URL となる。
もし、外部向けネットワーク(172.17.15.35)にしたい場合は変更する。
また、後述のコンピュートノードの nova.conf にある novncproxy_base_url パラメータもあわ
せて書き換える。

・	
 Nova のデータベースにテーブルを作成する
# nova-manage db sync

11 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

・	
 Nova を再起動する
# service nova-api restart && service nova-cert restart && service nova-consoleauth
restart && service nova-scheduler restart && service nova-novncproxy restart
・	
 /var/log/nova/*.log を 参 照 し て 、 エ ラ ー が 無 い こ と を 確 認 す る

Cinder のインストール
・	
 Cinder をインストールする
# apt-get install -y open-iscsi python-cinderclient linux-headers-`uname -r` cinder-api
cinder-scheduler cinder-volume
※	
 Openstack のドキュメントでは iscsitarget もインストールしているが、その後の設定では tgt が
指定されており、混在となるため Cinder の構築に失敗する。よって、本書では iscsitarget をイン
ストールせずに tgt を使用する。
・	
 iSCSI サービスを起動する
# service tgt start && service open-iscsi start
・	
 /etc/cinder/cinder.conf を編集する
[DEFAULT]
sql_connection = mysql://cinder:password@localhost/cinder
rabbit_password = password
・	
 /etc/cinder/api-paste.ini を編集する
admin_tenant_name = service
admin_user = cinder
admin_password = password
・	
 LVM 物理ボリュームと論理ボリュームを作成する
# pvcreate /dev/sdb
# vgcreate cinder-volumes /dev/sdb
・	
 Cinder のデータベースとテーブルを作成する
# cinder-manage db sync
・	
 サービスを再起動する
#

service

cinder-api

restart

&&

service

cinder-volume restart

12 / 22

cinder-scheduler

restart

&&

service
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

Quantum のインストール
・	
 Quantum をインストールする
# apt-get install -y quantum-server
・	
 /etc/quantum/quantum.conf を編集する
[DEFAULT]
verbose = True
rabbit_password = password
[keystone_authtoken]
admin_tenant_name = service
admin_user = quantum
admin_password = password
・	
 /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini を編集する
[DATABASE]
sql_connection = mysql://quantum:password@localhost/quantum
[OVS]
tenant_network_type = gre
tunnel_id_ranges = 1:1000
enable_tunneling = True
local_ip = 10.10.10.35
[SECURITYGROUP]
firewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
・	
 OVS プラグインを有効にする
# ln -s /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini /etc/quantum/plugi
n.ini
・	
 Quantum サービスを再起動する
# service quantum-server restart

Horizon のインストール
・	
 以下のパッケージをインストールする
# apt-get install -y openstack-dashboard memcached python-memcache
※	
 以下のコマンドを実行すると Ubuntu 標準テーマを除くことができる。必須ではないが推奨される
# apt-get remove --purge openstack-dashboard-ubuntu-theme

13 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

ネットワークノードの設定
/etc/sysctl.conf の設定
・	
 以下の設定を記述する
net.ipv4.ip_forward = 1
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
・	
 設定を反映する
# sysctl -e -p /etc/sysctl.conf

Open vSwitch の構築
・	
 パッケージをインストールする
# apt-get install -y quantum-plugin-openvswitch-agent quantum-dhcp-agent quantum-l3
-agent
・	
 Open vSwitch サービスを起動する
# service openvswitch-switch start
・	
 ネットワークブリッジを作成する
# ovs-vsctl add-br br-ex
# ovs-vsctl add-port br-ex eth1
# ovs-vsctl add-br br-int
・	
 /etc/network/interfaces を編集する
(a) eth1 の設定を br-ex に変更する
auto br-ex
iface br-ex inet static
address 172.17.15.34
netmask 255.255.255.0
gateway 172.17.15.1

14 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

(b) eth1 の設定を以下の通り記述
auto eth1
iface eth1 inet manual
up ip address add 0/0 dev $IFACE
up ip link set $IFACE up
down ip link set $IFACE down
・	
 /etc/network/if-pre-up.d/firewall に以下の設定を記述する
/sbin/iptables -A FORWARD -i eth1 -o br-ex -s 10.10.10.0/24 -m conntrack --ctstate
NEW -j ACCEPT
/sbin/iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A POSTROUTING -s 10.10.10.0/24 -t nat -j MASQUERADE
・	
 /etc/network/if-pre-up.d/firewall のパーミッションを変更する
# chmod 755 /etc/network/if-pre-up.d/firewall
・	
 OS を再起動する
・	
 /etc/quantum/quantum.conf を編集する
[DEFAULT]
verbose = True
rabbit_password = password
rabbit_host = 10.10.10.35
[keystone_authtoken]
auth_host = 10.10.10.35
admin_tenant_name = service
admin_user = quantum
admin_password = password

15 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

・	
 /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini を編集する
[database]
sql_connection = mysql://quantum:password@10.10.10.35/quantum
[ovs]
tenant_network_type = gre
tunnel_id_ranges = 1:1000
enable_tunneling = True
local_ip = 10.10.10.34
[securitygroup]
firewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
・	
 /etc/quantum/dhcp_agent.ini を編集する
[DEFAULT]
enable_isolated_metadata = True
enable_metadata_network = True
・	
 /etc/quantum/metadata_agent.ini を編集する
[DEFAULT]
auth_url = http://10.10.10.35:35357/v2.0
auth_region = RegionOne
admin_tenant_name = service
admin_user = quantum
admin_password = password
nova_metadata_ip = 10.10.10.35
metadata_proxy_shared_secret = password

・	
 サービスを再起動する
# service quantum-plugin-openvswitch-agent restart && service quantum-dhcp-agent
restart && service quantum-metadata-agent restart && service quantum-l3-agent
restart
・	
 /var/log/quantum/*.log を 参 照 し て エ ラ ー が 無 い こ と を 確 認 す る

16 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

openrc の作成
・	
 ユーザーのホームディレクトリに openrc ファイルを作成する
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=password
export OS_AUTH_URL="http://10.10.10.35:5000/v2.0/"
export SERVICE_ENDPOINT="http://10.10.10.35:35357/v2.0"
export SERVICE_TOKEN=password
・	
 以下のコマンドを実行して読み込む
$ source /openrc
※	
 echo "source /openrc" >> /.bashrc を実行すると、ログイン時に自動的に読み込む

仮想ネットワークの作成
・	
 以下のシェルスクリプトを作成する
#!/bin/bash
TENANT_NAME="demo"
TENANT_NETWORK_NAME="demo-net"
TENANT_SUBNET_NAME="${TENANT_NETWORK_NAME}-subnet"
TENANT_ROUTER_NAME="demo-router"
FIXED_RANGE="10.5.5.0/24"
NETWORK_GATEWAY="10.5.5.1"
TENANT_ID=$(keystone tenant-list ¦ grep " $TENANT_NAME " ¦ awk '{print $2}')

TENANT_NET_ID=$(quantum net-create --tenant_id $TENANT_ID $TENANT_NETWORK
_NAME --provider:network_type gre

--provider:segmentation_id 1 ¦ grep " id " ¦ awk

'{print $4}')
TENANT_SUBNET_ID=$(quantum subnet-create --tenant_id $TENANT_ID --ip_version 4
--name

$TENANT_SUBNET_NAME

$TENANT_NET_ID

$FIXED_RANGE

--gateway

$NETWORK_GATEWAY --dns_nameservers list=true 8.8.8.8 ¦ grep " id " ¦ awk '{print $4}')
ROUTER_ID=$(quantum

router-create

--tenant_id

$TENANT_ROUTER_NAME ¦ grep " id " ¦ awk '{print $4}')
quantum router-interface-add $ROUTER_ID $TENANT_SUBNET_ID

17 / 22

$TENANT_ID
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

L3 ネットワークの構築
・	
 外部むけネットワーク作成する
# quantum net-create public --router:external=True
・	
 外部向けネットワークのサブネットを作成する
# quantum subnet-create --ip_version 4 --gateway 172.17.15.1 public 172.17.15.0/24
--allocation-pool

start=172.17.15.200,end=172.17.15.250

public-subnet
・	
 デモルーターのゲートウェイをパブリックネットワークに設定する
# quantum router-gateway-set demo-router public

コンピュートノードの構築
/etc/sysctl.conf の設定
・	
 以下の設定を記述する
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
・	
 設定を反映する
# sysctl -e -p /etc/sysctl.conf

Nova-Compute の構築
・	
 Nova-Compute をインストールする
# apt-get install -y nova-compute-kvm
・	
 /etc/nova/api-paste.ini を編集する
[filter:authtoken]
auth_host = 10.10.10.35
admin_tenant_name = service
admin_user = nova
admin_password = password

18 / 22

--disable-dhcp

--name
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

・	
 /etc/nova/nova.conf を編集する
[DEFAULT]
# General
verbose=True
my_ip=10.10.10.36
rabbit_host=10.10.10.35
rabbit_password=password
auth_strategy=keystone
ec2_host=10.10.10.35
ec2_url=http://10.10.10.35:8773/services/Cloud

# Networking
libvirt_use_virtio_for_bridges=True
network_api_class=nova.network.quantumv2.api.API
quantum_url=http://10.10.10.35:9696
quantum_auth_strategy=keystone
quantum_admin_tenant_name=service
quantum_admin_username=quantum
quantum_admin_password=password
quantum_admin_auth_url=http://10.10.10.35:35357/v2.0

# Security Groups
firewall_driver=nova.virt.firewall.NoopFirewallDriver
security_group_api=quantum

# Compute
compute_driver=libvirt.LibvirtDriver
connection_type=libvirt

# Cinder
volume_api_class=nova.volume.cinder.API

19 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

# Glance
glance_api_servers=10.10.10.35:9292
image_service=nova.image.glance.GlanceImageService

# novnc
vnc_enabled=true
vncserver_proxyclient_address=10.10.10.36
novncproxy_base_url=http://10.10.10.35:6080/vnc_auto.html
vncserver_listen=0.0.0.0

TIPS
novncproxy_base_url=http://10.0.0.35:6080/vnc_auto.html
このパラメータが Openstack Dashboard で使用される URL となる。
もし、172.17.15.35 にしたい場合は変更する。
また、コントローラーノードの nova.conf にある novncproxy_host パラメータもあわせて書き
換える。

・	
 サービスを再起動する
# service nova-compute restart

Open vSwitch の設定
・	
 パッケージをインストールする
# apt-get install -y openvswitch-switch

TIPS
kernel 3.8 系の環境で構築した場合、openvswitch-switch が依存するパッケージ openvswitch
-datapath-dkms のインストールに失敗する。代替パッケージの openvswitch-datapath-ltsraring-dkms をインストールする。
# apt-get install openvswitch-datapath-lts-raring-dkms
インストールの際に、openvswitch -datapath-dkms パッケージは削除される。
(参照) https://bugs.launchpad.net/ubuntu/+source/openvswitch/+bug/1213021

20 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

・	
 サービスを起動する
# service openvswitch-switch start
・	
 内部ネットワーク用ブリッジを作成する
# ovs-vsctl add-br br-int

Quantum の設定
・	
 Quantum をインストールする
# apt-get install -y quantum-plugin-openvswitch-agent
・	
 /etc/quantum/quantum.conf を編集する
[DEFAULT]
rabbit_host = 10.10.10.35
rabbit_password = password
verbose = True
・	
 /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini を編集する
[DATABASE]
sql_connection = mysql://quantum:password@10.10.10.35/quantum
[OVS]
tenant_network_type = gre
tunnel_id_ranges = 1:1000
local_ip = 10.10.10.36
enable_tunneling = True
[SECURITYGROUP]
firewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

・	
 サービスを再起動する
service quantum-plugin-openvswitch-agent restart
・	
 /var/log/quantum/openvswitch-agent.log を 開 い て エ ラ ー が 無 い こ と を 確 認 す る

21 / 22
日本仮想化技術株式会社

Openstack 構築手順書
(Grizzly 版)

2013/10/04 作成

トラブルシューティング
うまく動作しない時に確認すると良いコマンド
・	
 nova の稼働状況を確認する
$ nova-manage service list
・	
 glance に登録されているイメージを確認
$ glance image-list
・	
 quantum の状況を確認する
$ quantum agent-list

22 / 22

OpenStack Grizzly構築手順書

  • 1.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 本書の概要 以下の OpenStack ドキュメントをベースとしたインストール設定手順をまとめたものである。 http://docs.openstack.org/grizzly/basic-install/apt/content/basic-install_intro.html ベースの手順からは大きな変更は加えていないため、和訳手順書のように使用することが可能だが、細 かな解説については記述していないため、注意すること。 また、手順書内で正しくない記述がある部分に関しては、本書内では修正している。 使用サーバー ・ サーバーは以下 3 台の物理サーバーを用意する ・ OS は Ubuntu 12.04 LTS(あらかじめ最新バージョンにすること)を使用 Ø kernel は 3.2.0-54(3.2.0 系の最新)を使用する ・ ネットワークは以下の通り構成した Ø eth0: Openstack 内でだけ使用するネットワーク(VLAN を切り、孤立したネットワークと した) Ø eth1: インターネットにアクセス可能なローカルネットワーク(LAN など。ゲートウェイと DNS もこちらに設定) □コントローラーノード ホスト名: ooctr.local.virtualtech.jp IP アドレス: ・ eth0: 10.10.10.35/255.255.255.0 ・ eth1: 172.17.15.35/255.255.255.0 □ネットワークノード ホスト名: oonet.local.virtualtech.jp IP アドレス: ・ eth0: 10.10.10.34/255.255.255.0 ・ eth1: 172.17.15.34/255.255.255.0 1 / 22
  • 2.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 □コンピュートノード ホスト名: oocom.local.virtualtech.jp IP アドレス: ・ eth0: 10.10.10.36/255.255.255.0 ・ eth1: DHCP(構築後は無効で良い) 共通の構築手順 ・ Ubuntu をインストールする ・ IP アドレスを設定する ・ hosts ファイルを追記する 10.10.10.34 ooctr.local.virtualtech.jp ooctr 10.10.10.35 oonet.local.virtualtech.jp oonet 10.10.10.36 oocom.local.virtualtech.jp oocom ※ なお、127.0.1.1 は削除しないこと(rabbitmq-server のインストールに失敗するため) ・ 以下のパッケージをインストールする # apt-get install -y ubuntu-cloud-keyring ・ /etc/apt/sources.list.d/cloud-archive.list を編集し、以下の内容を記述する deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main ・ OS を最新の状態にアップデートする # apt-get update && apt-get upgrade ・ NTP をインストールする # apt-get install -y ntp コントローラーノードの構築 /etc/sysctl.conf の設定 ・ 以下の設定を記述する net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 ・ 設定を反映する # sysctl -e -p /etc/sysctl.conf 2 / 22
  • 3.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 MySQL の構築 ・ MySQL サーバーをインストールする。プロンプトが表示されたら MySQL の root ユーザーのパス ワードを設定する # apt-get install -y python-mysqldb mysql-server ・ MySQL の接続許可のアドレスを書き換える # sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf ・ MySQL を再起動する # service mysql restart ・ データベースを作成する # mysql -u root -p <<EOF CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'password'; CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'password'; CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'password'; CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'password'; CREATE DATABASE quantum; GRANT ALL PRIVILEGES ON quantum.* TO 'quantum'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON quantum.* TO 'quantum'@'10.10.10.34' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON quantum.* TO 'quantum'@'10.10.10.36' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; EOF 3 / 22
  • 4.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 RabbitMQ のインストール ・ RabbitMQ をインストールする # apt-get install -y rabbitmq-server ・ RabbitMQ のゲストパスワードを変更する # rabbitmqctl change_password guest password ←password の文字を適宜変更 Keystone のインストール ・ keystone をインストールする # apt-get install -y keystone python-keystone python-keystoneclient ・ /etc/keystone/keystone.conf を編集する [DEFAULT] admin_token = password debug = True verbose = True [sql] connection = mysql://keystone:password@localhost/keystone ・ Keystone を再起動して、データベースにテーブルを作成する # service keystone restart # keystone-manage db_sync ・ openrc ファイルを作成する export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=password export OS_AUTH_URL="http://localhost:5000/v2.0/" export OS_SERVICE_ENDPOINT="http://localhost:35357/v2.0" export OS_SERVICE_TOKEN=password ・ openrc を読み込む $ source /openrc ※ログインした際に自動で読み込むようにするには、以下のコマンドを実行する $ echo "source /openrc" >> /.bashrc 4 / 22
  • 5.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 ・ 以下のシェルスクリプトを作成して実行する #!/bin/bash # Modify these variables as needed ADMIN_PASSWORD=${ADMIN_PASSWORD:-password} SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD} DEMO_PASSWORD=${DEMO_PASSWORD:-$ADMIN_PASSWORD} export OS_SERVICE_TOKEN="password" export OS_SERVICE_ENDPOINT="http://localhost:35357/v2.0" SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service} # MYSQL_USER=keystone MYSQL_DATABASE=keystone MYSQL_HOST=localhost MYSQL_PASSWORD=password # KEYSTONE_REGION=RegionOne KEYSTONE_HOST=10.10.10.35 # Shortcut function to get a newly generated ID function get_field() { while read data; do if [ "$1" -lt 0 ]; then field="($(NF$1))" else field="$$(($1 + 1))" fi echo "$data" ¦ awk -F'[ t]*¦[ t]*' "{print $field}" done } # Tenants 5 / 22
  • 6.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 ADMIN_TENANT=$(keystone tenant-create --name=admin ¦ grep " id " ¦ get_field 2) DEMO_TENANT=$(keystone tenant-create --name=demo ¦ grep " id " ¦ get_field 2) SERVICE_TENANT=$(keystone tenant-create --name=$SERVICE_TENANT_NAME ¦ grep " id " ¦ get_field 2) # Users ADMIN_USER=$(keystone user-create --name=admin --pass="$ADMIN_PASSWORD" --email=admin@domain.com ¦ grep " id " ¦ get_field 2) DEMO_USER=$(keystone user-create --name=demo --pass="$DEMO_PASSWORD" --email=demo@domain.com --tenant-id=$DEMO_TENANT ¦ grep " id " ¦ get_field 2) NOVA_USER=$(keystone user-create --name=nova --pass="$SERVICE_PASSWORD" --tenant-id $SERVICE_TENANT --email=nova@domain.com ¦ grep " id " ¦ get_field 2) GLANCE_USER=$(keystone user-create --name=glance --pass="$SERVICE_PASSWORD" --tenant-id $SERVICE_TENANT --email=glance@domain.com ¦ grep " id " ¦ get_field 2) QUANTUM_USER=$(keystone user-create --pass="$SERVICE_PASSWORD" --tenant-id --name=quantum $SERVICE_TENANT --email=quantum@domain.com ¦ grep " id " ¦ get_field 2) CINDER_USER=$(keystone user-create --name=cinder --pass="$SERVICE_PASSWORD" --tenant-id $SERVICE_TENANT --email=cinder@domain.com ¦ grep " id " ¦ get_field 2) # Roles ADMIN_ROLE=$(keystone role-create --name=admin ¦ grep " id " ¦ get_field 2) MEMBER_ROLE=$(keystone role-create --name=Member ¦ grep " id " ¦ get_field 2) # Add Roles to Users in Tenants keystone user-role-add --user-id $ADMIN_USER --role-id $ADMIN_ROLE --tenant-id $ADMIN_TENANT keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $NOVA_USER --role-id $ADMIN_ROLE keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $GLANCE_USER --role-id $ADMIN_ROLE keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $QUANTUM_USER 6 / 22
  • 7.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 --role-id $ADMIN_ROLE keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $CINDER_USER --role-id $ADMIN_ROLE keystone user-role-add --tenant-id $DEMO_TENANT --user-id $DEMO_USER --role-id $MEMBER_ROLE # Create services COMPUTE_SERVICE=$(keystone service-create --name nova --type compute --description 'OpenStack Compute Service' ¦ grep " id " ¦ get_field 2) VOLUME_SERVICE=$(keystone service-create --name cinder --type volume --description 'OpenStack Volume Service' ¦ grep " id " ¦ get_field 2) IMAGE_SERVICE=$(keystone service-create --name glance --type image --description 'OpenStack Image Service' ¦ grep " id " ¦ get_field 2) IDENTITY_SERVICE=$(keystone service-create --name keystone --type identity --description 'OpenStack Identity' ¦ grep " id " ¦ get_field 2) EC2_SERVICE=$(keystone service-create --name ec2 --type ec2 --description 'OpenStack EC2 service' ¦ grep " id " ¦ get_field 2) NETWORK_SERVICE=$(keystone service-create --name quantum --type network --description 'OpenStack Networking service' ¦ grep " id " ¦ get_field 2) # Create endpoints keystone endpoint-create $COMPUTE_SERVICE --adminurl --publicurl --region $KEYSTONE_REGION --service-id 'http://'"$KEYSTONE_HOST"':8774/v2/$(tenant_id)s' 'http://'"$KEYSTONE_HOST"':8774/v2/$(tenant_id)s' --internalurl 'http://'"$KEYSTONE_HOST"':8774/v2/$(tenant_id)s' keystone endpoint-create $VOLUME_SERVICE --adminurl --publicurl --region $KEYSTONE_REGION --service-id 'http://'"$KEYSTONE_HOST"':8776/v1/$(tenant_id)s' 'http://'"$KEYSTONE_HOST"':8776/v1/$(tenant_id)s' --internalurl 'http://'"$KEYSTONE_HOST"':8776/v1/$(tenant_id)s' keystone endpoint-create --region $KEYSTONE_REGION --service-id $IMAGE_SERVICE --publicurl 'http://'"$KEYSTONE_HOST"':9292' --adminurl 'http://'"$KEYSTONE_HOST"':9292' --internalurl 'http://'"$KEYSTONE_HOST"':9292' 7 / 22
  • 8.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) keystone endpoint-create $IDENTITY_SERVICE --publicurl 2013/10/04作成 --region $KEYSTONE_REGION 'http://'"$KEYSTONE_HOST"':5000/v2.0' 'http://'"$KEYSTONE_HOST"':35357/v2.0' --service-id --adminurl --internalurl 'http://'"$KEYSTONE_HOST"':5000/v2.0' keystone endpoint-create --region $KEYSTONE_REGION --service-id $EC2_SERVICE --publicurl 'http://'"$KEYSTONE_HOST"':8773/services/Cloud' 'http://'"$KEYSTONE_HOST"':8773/services/Admin' --adminurl --internalurl 'http://'"$KEYSTONE_HOST"':8773/services/Cloud' keystone endpoint-create $NETWORK_SERVICE --publicurl --region $KEYSTONE_REGION 'http://'"$KEYSTONE_HOST"':9696/' --service-id --adminurl 'http://'"$KEYSTONE_HOST"':9696/' --internalurl 'http://'"$KEYSTONE_HOST"':9696/' TIPS もし実行に失敗した場合、以下の手順でやり直しできる # mysql -u root -p -e "drop database keystone" # mysql -u root -p -e "create database keystone" # mysql -u root -p -e "grant all privileges on keystone.* TO 'keystone'@'localhost' identified by 'password'" # keystone-manage db_sync 最後に、先述のシェルスクリプトを実行する 8 / 22
  • 9.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 Glance のインストール ・ Glance をインストールする # apt-get install -y glance ・ /etc/glance/glance-api.conf と /etc/glance/glance-registry.conf をそれぞれ以下のとおり編 集する [DEFAULT] sql_connection = mysql://glance:password@localhost/glance [keystone_authtoken] admin_tenant_name = service admin_user = glance admin_password = password [paste_deploy] flavor=keystone ・ 以下のファイルを入手して所定位置に配置する # wget https://raw.github.com/openstack/glance/master/etc/schema-image.json # mv schema-image.json /etc/glance ・ Glance を再起動する # service glance-api restart && service glance-registry restart ※ /var/log/glance/*.log を 参 照 し て 、 エ ラ ー が 無 い こ と を 確 認 す る ・ Glance のデータベースにテーブルを作る # glance-manage db_sync ・ OS イメージを取得して、Glance に登録する Ubuntu 12.04 LTS の場合 $ wget http://uec-images.ubuntu.com/precise/current/precise-server-cloudimg-amd6 4-disk1.img $ glance image-create --is-public true --disk-format qcow2 --container-format bare --name "Ubuntu" < precise-server-cloudimg-amd64-disk1.img Cirros の場合 $ wget http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img $ glance image-create --is-public true --disk-format qcow2 --container-format bare --name "CirrOS 0.3.1" < cirros-0.3.1-x86_64-disk.img 9 / 22
  • 10.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 ・ Glance にイメージが登録されているか確認するには、以下のコマンドを実行する $ glance image-list Nova のインストール ・ 以下のパッケージをインストールする # apt-get install -y nova-api nova-cert nova-common nova-conductor nova-scheduler python-nova python-novaclient nova-consoleauth novnc nova-novncproxy ・ /etc/nova/api-paste.ini を編集する admin_tenant_name = service admin_user = nova admin_password = password ・ /etc/nova/nova.conf を編集する [DEFAULT] sql_connection=mysql://nova:password@localhost/nova my_ip=10.10.10.35 rabbit_password=password auth_strategy=keystone # Networking network_api_class=nova.network.quantumv2.api.API quantum_url=http://10.10.10.35:9696 quantum_auth_strategy=keystone quantum_admin_tenant_name=service quantum_admin_username=quantum quantum_admin_password=password quantum_admin_auth_url=http://10.10.10.35:35357/v2.0 libvirt_vif_driver=nova.virt.libvirt.vif.LibvirtHybridOVSBridgeDriver linuxnet_interface_driver=nova.network.linux_net.LinuxOVSInterfaceDriver # Security Groups firewall_driver=nova.virt.firewall.NoopFirewallDriver 10 / 22
  • 11.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 security_group_api=quantum # Metadata quantum_metadata_proxy_shared_secret=password service_quantum_metadata_proxy=true metadata_listen = 10.10.10.35 metadata_listen_port = 8775 # Cinder volume_api_class=nova.volume.cinder.API # Glance glance_api_servers=10.10.10.35:9292 image_service=nova.image.glance.GlanceImageService # novnc novnc_enable=true novncproxy_port=6080 novncproxy_host=10.0.0.35 vncserver_listen=0.0.0.0 TIPS novncproxy_host=10.0.0.35 このパラメータが Openstack Dashboard 内で使用される URL となる。 もし、外部向けネットワーク(172.17.15.35)にしたい場合は変更する。 また、後述のコンピュートノードの nova.conf にある novncproxy_base_url パラメータもあわ せて書き換える。 ・ Nova のデータベースにテーブルを作成する # nova-manage db sync 11 / 22
  • 12.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 ・ Nova を再起動する # service nova-api restart && service nova-cert restart && service nova-consoleauth restart && service nova-scheduler restart && service nova-novncproxy restart ・ /var/log/nova/*.log を 参 照 し て 、 エ ラ ー が 無 い こ と を 確 認 す る Cinder のインストール ・ Cinder をインストールする # apt-get install -y open-iscsi python-cinderclient linux-headers-`uname -r` cinder-api cinder-scheduler cinder-volume ※ Openstack のドキュメントでは iscsitarget もインストールしているが、その後の設定では tgt が 指定されており、混在となるため Cinder の構築に失敗する。よって、本書では iscsitarget をイン ストールせずに tgt を使用する。 ・ iSCSI サービスを起動する # service tgt start && service open-iscsi start ・ /etc/cinder/cinder.conf を編集する [DEFAULT] sql_connection = mysql://cinder:password@localhost/cinder rabbit_password = password ・ /etc/cinder/api-paste.ini を編集する admin_tenant_name = service admin_user = cinder admin_password = password ・ LVM 物理ボリュームと論理ボリュームを作成する # pvcreate /dev/sdb # vgcreate cinder-volumes /dev/sdb ・ Cinder のデータベースとテーブルを作成する # cinder-manage db sync ・ サービスを再起動する # service cinder-api restart && service cinder-volume restart 12 / 22 cinder-scheduler restart && service
  • 13.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 Quantum のインストール ・ Quantum をインストールする # apt-get install -y quantum-server ・ /etc/quantum/quantum.conf を編集する [DEFAULT] verbose = True rabbit_password = password [keystone_authtoken] admin_tenant_name = service admin_user = quantum admin_password = password ・ /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini を編集する [DATABASE] sql_connection = mysql://quantum:password@localhost/quantum [OVS] tenant_network_type = gre tunnel_id_ranges = 1:1000 enable_tunneling = True local_ip = 10.10.10.35 [SECURITYGROUP] firewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver ・ OVS プラグインを有効にする # ln -s /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini /etc/quantum/plugi n.ini ・ Quantum サービスを再起動する # service quantum-server restart Horizon のインストール ・ 以下のパッケージをインストールする # apt-get install -y openstack-dashboard memcached python-memcache ※ 以下のコマンドを実行すると Ubuntu 標準テーマを除くことができる。必須ではないが推奨される # apt-get remove --purge openstack-dashboard-ubuntu-theme 13 / 22
  • 14.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 ネットワークノードの設定 /etc/sysctl.conf の設定 ・ 以下の設定を記述する net.ipv4.ip_forward = 1 net.ipv4.conf.all.forwarding = 1 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 ・ 設定を反映する # sysctl -e -p /etc/sysctl.conf Open vSwitch の構築 ・ パッケージをインストールする # apt-get install -y quantum-plugin-openvswitch-agent quantum-dhcp-agent quantum-l3 -agent ・ Open vSwitch サービスを起動する # service openvswitch-switch start ・ ネットワークブリッジを作成する # ovs-vsctl add-br br-ex # ovs-vsctl add-port br-ex eth1 # ovs-vsctl add-br br-int ・ /etc/network/interfaces を編集する (a) eth1 の設定を br-ex に変更する auto br-ex iface br-ex inet static address 172.17.15.34 netmask 255.255.255.0 gateway 172.17.15.1 14 / 22
  • 15.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 (b) eth1 の設定を以下の通り記述 auto eth1 iface eth1 inet manual up ip address add 0/0 dev $IFACE up ip link set $IFACE up down ip link set $IFACE down ・ /etc/network/if-pre-up.d/firewall に以下の設定を記述する /sbin/iptables -A FORWARD -i eth1 -o br-ex -s 10.10.10.0/24 -m conntrack --ctstate NEW -j ACCEPT /sbin/iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT /sbin/iptables -A POSTROUTING -s 10.10.10.0/24 -t nat -j MASQUERADE ・ /etc/network/if-pre-up.d/firewall のパーミッションを変更する # chmod 755 /etc/network/if-pre-up.d/firewall ・ OS を再起動する ・ /etc/quantum/quantum.conf を編集する [DEFAULT] verbose = True rabbit_password = password rabbit_host = 10.10.10.35 [keystone_authtoken] auth_host = 10.10.10.35 admin_tenant_name = service admin_user = quantum admin_password = password 15 / 22
  • 16.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 ・ /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini を編集する [database] sql_connection = mysql://quantum:password@10.10.10.35/quantum [ovs] tenant_network_type = gre tunnel_id_ranges = 1:1000 enable_tunneling = True local_ip = 10.10.10.34 [securitygroup] firewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver ・ /etc/quantum/dhcp_agent.ini を編集する [DEFAULT] enable_isolated_metadata = True enable_metadata_network = True ・ /etc/quantum/metadata_agent.ini を編集する [DEFAULT] auth_url = http://10.10.10.35:35357/v2.0 auth_region = RegionOne admin_tenant_name = service admin_user = quantum admin_password = password nova_metadata_ip = 10.10.10.35 metadata_proxy_shared_secret = password ・ サービスを再起動する # service quantum-plugin-openvswitch-agent restart && service quantum-dhcp-agent restart && service quantum-metadata-agent restart && service quantum-l3-agent restart ・ /var/log/quantum/*.log を 参 照 し て エ ラ ー が 無 い こ と を 確 認 す る 16 / 22
  • 17.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 openrc の作成 ・ ユーザーのホームディレクトリに openrc ファイルを作成する export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=password export OS_AUTH_URL="http://10.10.10.35:5000/v2.0/" export SERVICE_ENDPOINT="http://10.10.10.35:35357/v2.0" export SERVICE_TOKEN=password ・ 以下のコマンドを実行して読み込む $ source /openrc ※ echo "source /openrc" >> /.bashrc を実行すると、ログイン時に自動的に読み込む 仮想ネットワークの作成 ・ 以下のシェルスクリプトを作成する #!/bin/bash TENANT_NAME="demo" TENANT_NETWORK_NAME="demo-net" TENANT_SUBNET_NAME="${TENANT_NETWORK_NAME}-subnet" TENANT_ROUTER_NAME="demo-router" FIXED_RANGE="10.5.5.0/24" NETWORK_GATEWAY="10.5.5.1" TENANT_ID=$(keystone tenant-list ¦ grep " $TENANT_NAME " ¦ awk '{print $2}') TENANT_NET_ID=$(quantum net-create --tenant_id $TENANT_ID $TENANT_NETWORK _NAME --provider:network_type gre --provider:segmentation_id 1 ¦ grep " id " ¦ awk '{print $4}') TENANT_SUBNET_ID=$(quantum subnet-create --tenant_id $TENANT_ID --ip_version 4 --name $TENANT_SUBNET_NAME $TENANT_NET_ID $FIXED_RANGE --gateway $NETWORK_GATEWAY --dns_nameservers list=true 8.8.8.8 ¦ grep " id " ¦ awk '{print $4}') ROUTER_ID=$(quantum router-create --tenant_id $TENANT_ROUTER_NAME ¦ grep " id " ¦ awk '{print $4}') quantum router-interface-add $ROUTER_ID $TENANT_SUBNET_ID 17 / 22 $TENANT_ID
  • 18.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 L3 ネットワークの構築 ・ 外部むけネットワーク作成する # quantum net-create public --router:external=True ・ 外部向けネットワークのサブネットを作成する # quantum subnet-create --ip_version 4 --gateway 172.17.15.1 public 172.17.15.0/24 --allocation-pool start=172.17.15.200,end=172.17.15.250 public-subnet ・ デモルーターのゲートウェイをパブリックネットワークに設定する # quantum router-gateway-set demo-router public コンピュートノードの構築 /etc/sysctl.conf の設定 ・ 以下の設定を記述する net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 ・ 設定を反映する # sysctl -e -p /etc/sysctl.conf Nova-Compute の構築 ・ Nova-Compute をインストールする # apt-get install -y nova-compute-kvm ・ /etc/nova/api-paste.ini を編集する [filter:authtoken] auth_host = 10.10.10.35 admin_tenant_name = service admin_user = nova admin_password = password 18 / 22 --disable-dhcp --name
  • 19.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 ・ /etc/nova/nova.conf を編集する [DEFAULT] # General verbose=True my_ip=10.10.10.36 rabbit_host=10.10.10.35 rabbit_password=password auth_strategy=keystone ec2_host=10.10.10.35 ec2_url=http://10.10.10.35:8773/services/Cloud # Networking libvirt_use_virtio_for_bridges=True network_api_class=nova.network.quantumv2.api.API quantum_url=http://10.10.10.35:9696 quantum_auth_strategy=keystone quantum_admin_tenant_name=service quantum_admin_username=quantum quantum_admin_password=password quantum_admin_auth_url=http://10.10.10.35:35357/v2.0 # Security Groups firewall_driver=nova.virt.firewall.NoopFirewallDriver security_group_api=quantum # Compute compute_driver=libvirt.LibvirtDriver connection_type=libvirt # Cinder volume_api_class=nova.volume.cinder.API 19 / 22
  • 20.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 # Glance glance_api_servers=10.10.10.35:9292 image_service=nova.image.glance.GlanceImageService # novnc vnc_enabled=true vncserver_proxyclient_address=10.10.10.36 novncproxy_base_url=http://10.10.10.35:6080/vnc_auto.html vncserver_listen=0.0.0.0 TIPS novncproxy_base_url=http://10.0.0.35:6080/vnc_auto.html このパラメータが Openstack Dashboard で使用される URL となる。 もし、172.17.15.35 にしたい場合は変更する。 また、コントローラーノードの nova.conf にある novncproxy_host パラメータもあわせて書き 換える。 ・ サービスを再起動する # service nova-compute restart Open vSwitch の設定 ・ パッケージをインストールする # apt-get install -y openvswitch-switch TIPS kernel 3.8 系の環境で構築した場合、openvswitch-switch が依存するパッケージ openvswitch -datapath-dkms のインストールに失敗する。代替パッケージの openvswitch-datapath-ltsraring-dkms をインストールする。 # apt-get install openvswitch-datapath-lts-raring-dkms インストールの際に、openvswitch -datapath-dkms パッケージは削除される。 (参照) https://bugs.launchpad.net/ubuntu/+source/openvswitch/+bug/1213021 20 / 22
  • 21.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 ・ サービスを起動する # service openvswitch-switch start ・ 内部ネットワーク用ブリッジを作成する # ovs-vsctl add-br br-int Quantum の設定 ・ Quantum をインストールする # apt-get install -y quantum-plugin-openvswitch-agent ・ /etc/quantum/quantum.conf を編集する [DEFAULT] rabbit_host = 10.10.10.35 rabbit_password = password verbose = True ・ /etc/quantum/plugins/openvswitch/ovs_quantum_plugin.ini を編集する [DATABASE] sql_connection = mysql://quantum:password@10.10.10.35/quantum [OVS] tenant_network_type = gre tunnel_id_ranges = 1:1000 local_ip = 10.10.10.36 enable_tunneling = True [SECURITYGROUP] firewall_driver = quantum.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver ・ サービスを再起動する service quantum-plugin-openvswitch-agent restart ・ /var/log/quantum/openvswitch-agent.log を 開 い て エ ラ ー が 無 い こ と を 確 認 す る 21 / 22
  • 22.
    日本仮想化技術株式会社 Openstack 構築手順書 (Grizzly 版) 2013/10/04作成 トラブルシューティング うまく動作しない時に確認すると良いコマンド ・ nova の稼働状況を確認する $ nova-manage service list ・ glance に登録されているイメージを確認 $ glance image-list ・ quantum の状況を確認する $ quantum agent-list 22 / 22