このエントリーをはてなブックマークに追加

1.3.1. OpenStackの利用

OpenStackを利用するための設定を行っていきます。
コマンドで行っていますがHorizonからも行えます。

1.3.1.1. テナントとユーザの作成

環境変数を読み込んでテナントとユーザを作成します。
ここからは設計思想にもよるので適宜変更して作成してください。
ユーザ テナント ロール
admin01 tenant01 admin
user01 tenant01 Member

上記内容で作成します。

$ TENANT_NAME=tenant01
$ TENANT_ADMIN=admin01
$ TENANT_ADMIN_PASS=admin01
$ TENANT_USER=user01
$ TENANT_USER_PASS=user01
$ STACK_USER=stack
$ . /home/$STACK_USER/keystonerc
$ keystone tenant-create --name $TENANT_NAME
$ keystone user-create --name $TENANT_ADMIN --pass $TENANT_ADMIN_PASS
$ keystone user-create --name $TENANT_USER --pass $TENANT_USER_PASS
$ keystone user-role-add --user $TENANT_ADMIN --role admin --tenant $TENANT_NAME
$ keystone user-role-add --user $TENANT_USER --role Member --tenant $TENANT_NAME

作成したものを確認します。

$ keystone tenant-list
$ keystone user-list
$ keystone role-list

1.3.1.2. ネットワークの作成

まずテナント用の内部ネットワークを作成します。
作成したadmin01ユーザでHorizonを確認しながら作成していくとわかりやすいかもしれません。
$ . /home/$STACK_USER/keystonerc
$ TENANT_NAME=tenant01
$ TENANT_NETWORK=private01
$ tenant=$(keystone tenant-list|awk "/$TENANT_NAME/ {print \$2}")
$ network_name=$TENANT_NETWORK
$ quantum net-create \
    --tenant-id $tenant $network_name

作成したネットワークにサブネットを作成します。

$ TENANT_NAME=tenant01
$ TENANT_NAME_SERVER=8.8.8.8
$ TENANT_SUBNET=10.10.10.0/24
$ network_name=$TENANT_NETWORK
$ subnet_name=${network_name}-subnet
$ subnet=$TENANT_SUBNET
$ nameserver=$TENANT_NAME_SERVER
$ quantum subnet-create \
   --tenant-id $tenant \
   --name $subnet_name \
   --dns-nameserver $nameserver $network_name $subnet

テナント用のルータを作成します。

$ TENANT_NAME=tenant01
$ quantum router-create --tenant-id $tenant ${TENANT_NAME}-router

L3エージェントのルータとしてテナント用のルータを登録します。

$ TENANT_NAME=tenant01
$ l3_agent_id=$(quantum agent-list | grep L3 | awk '{print $2}')
$ quantum l3-agent-router-add $l3_agent_id ${TENANT_NAME}-router

ルータにテナント用として作成したサブネットを紐付けます。

$ TENANT_NAME=tenant01
$ network_name=$TENANT_NETWORK
$ subnet_name=${network_name}-subnet
$ quantum router-interface-add ${TENANT_NAME}-router $subnet_name

外部へ接続するためのネットワークを作成します。

$ quantum net-create \
    --tenant-id $tenant ext-network \
    --router:external=True
外部接続ネットワークのサブネットを作成します。
外部接続用のゲートウェイやネットワークの範囲は適宜変更してください。
$ GATEWAY=192.168.10.1
$ EXT_NETWORK=192.168.10.0/24
$ IP_POOL_START=192.168.10.200
$ IP_POOL_END=192.168.10.250
$ TENANT_NAME=tenant01
$ tenant=$(keystone tenant-list|awk "/$TENANT_NAME/ {print \$2}")
$ quantum subnet-create      \
     --tenant-id $tenant     \
     --gateway $GATEWAY      \
     --disable-dhcp          \
     --allocation-pool start=$IP_POOL_START,end=$IP_POOL_END ext-network $EXT_NETWORK

ルータの外部接続用ゲートウェイに作成した外部ネットワークを紐付けます。

$ quantum router-gateway-set ${TENANT_NAME}-router ext-network

1.3.1.3. 環境変数ファイルの作成

tenant01用の環境変数ファイルを作成します。

$ STACK_USER=stack
$ TENANT_NAME=tenant01
$ TENANT_ADMIN=admin01
$ TENANT_ADMIN_PASS=admin01
$ NOVA_CONTOLLER_HOSTNAME=stack01
$ cd /home/$STACK_USER
$ cat << KEYSTONERC | sudo tee keystonerc01 > /dev/null
export OS_TENANT_NAME=$TENANT_NAME
export OS_USERNAME=$TENANT_ADMIN
export OS_PASSWORD=$TENANT_ADMIN_PASS
export OS_AUTH_URL=http://$NOVA_CONTOLLER_HOSTNAME:5000/v2.0/
KEYSTONERC

$ sudo chown $STACK_USER:$STACK_USER /home/$STACK_USER/keystonerc01

1.3.1.4. セキュリティグループの設定

作成した環境変数ファイルを読み込ませて設定します。
ICMPとSSHだけ接続できるようにしています。
$ . /home/$STACK_USER/keystonerc01
$ nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
$ nova secgroup-add-rule default  tcp 22 22 0.0.0.0/0

作成したセキュリティグループのルールを確認します。

$ nova secgroup-list-rules default

1.3.1.5. キーペアの作成

SSHのパス無し認証で仮想マシンに接続するための鍵を作成します。

$ STACK_USER=stack
$ cd /home/$STACK_USER
$ nova keypair-add mykey > mykey
$ chown $STACK_USER:$STACK_USER mykey
$ chmod 600 mykey

作成したキーペアを確認します。

$ nova keypair-list

1.3.1.6. 仮想マシンのブート

起動したい仮想マシンの情報を全て確認して仮想マシンを起動します。

$ nova flavor-list
$ nova keypairt-list
$ nova secgroup-list
$ nova net-list
$ nova image-list
$ nova boot                    \
     --flavor 1                \
     --key_name mykey          \
     --security-groups default \
     --image 00379141-ff91-48b8-abc0-4cde6fe36b81 \
     --nic net-id=8d10481d-8a86-4638-801d-1cb012de5e27 ubuntu01
仮想マシンの状態を確認します。
$ nova list
内部IPの場合はネームスペース内に仮想マシンがあるためそのままでは接続出来ません。
ネームスペース内のSSHで接続することも出来ますが仮想ルータをゲートウェイにしてもログインできますし楽です。
$ ip netns exec qdhcp-8d10481d-8a86-4638-801d-1cb012de5e27 ssh -i /home/stack/mykey ubuntu@10.10.10.4
仮想マシンのゲートウェイIPはquantumのコマンドで確認しておきます。
$ quantum net-list
外部接続用のIPアドレスを持ったものをゲートウェイにして内部ネットワークに接続するようにします。
$ route add -net 10.10.10.0/24 gw 192.168.10.200
パス無し認証でのログインは以下のように行います。
#For Ubuntu ユーザrootでもログインできます。
$ ssh -i /home/stack/mykey ubuntu@10.10.10.2

#For Fedora
$ ssh -i /home/stack/mykey root@10.10.10.2

#For Cirros
$ ssh -i /home/stack/mykey cirros@10.10.10.2