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

3.2.8. OpenStackの利用

ここまで来ている方は、OpenStackのインストールは済んでいるはずなのでOpenStackを利用しましょう。
環境変数の設定、ネットワーク、フローティングIP、キーペア、セキュリティグループの作成を行います。
それが済めばHorizonを利用して仮想マシンを起動します。

3.2.8.1. 環境変数の設定

OpenStackを利用する際に必要になりますので設定します。
また、euca2oolsのコマンドも利用できるようにそちらの環境変数も設定します。
ユーザはstackとしていますが利用するユーザ、ホストにあわせて下さい。

3.2.8.1.1. OpenStackAPI利用のための環境変数ファイルを作成

OpenStackのAPIを利用する場合に必要な環境変数設定ファイルを作成します。
また、テナントが違う場合やユーザが違う場合は別途作成が必要になります。
# cat << KEYSTONERC | tee /home/stack/keystonerc > /dev/null
export OS_NO_CACHE=True
export ADMIN_TOKEN=ADMIN
export OS_USERNAME=admin
export OS_PASSWORD=secrete
export OS_TENANT_NAME=demo
export OS_AUTH_URL=http://stack01:35357/v2.0/
KEYSTONERC
# chown stack:stack /home/stack/keystonerc
これは環境変数が固定されるので問題ない方のみおこなって下さい。
ログイン後にいちいち環境変数を読みこませるのが面倒なのでbashrcに設定してしまいます。
# cat << NOVARC | tee -a /etc/bashrc > /dev/null
. /home/stack/keystonerc
NOVARC

3.2.8.2. 内部ネットワークの作成

仮想マシンが利用する内部ネットワークの作成を行います。
ユーザはrootで行う必要があります。
仮想マシン間や仮想マシンから外部への接続に利用するためのネットワークです。
コマンドのヘルプが壊れているので細かい設定内容がまだわかりません。
10.0.0.0を外部通信で利用しているのであればnova.confも含めて変更して下さい。
# nova-manage network create \
--label nova_network1        \
--fixed_range_v4=10.0.0.0/25 \
--bridge_interface=eth0      \
--multi_host=T
2013-03-12 16:26:48.616 13102 INFO nova.network.driver [-] Loading network driver 'nova.network.linux_net'
# nova-manage network list
id      IPv4                    IPv6            start address   DNS1            DNS2            VlanID          project         uuid
1       10.0.0.0/25             None            10.0.0.2        8.8.4.4         None            None            None            233ac749-6deb-41d1-9f0b-d0d389152273

3.2.8.3. フローティングIPの作成

仮想マシンへ外部から接続する為に利用するフローティングIPの作成を行います。
ユーザはrootで行う必要があります。
外部へ接続するためのネットワークからレンジを設定して下さい。
# nova-manage floating create --ip_range=192.168.10.112/28
# nova-manage floating list
None    192.168.10.113  None    nova    br100
None    192.168.10.114  None    nova    br100
None    192.168.10.115  None    nova    br100
None    192.168.10.116  None    nova    br100
None    192.168.10.117  None    nova    br100
None    192.168.10.118  None    nova    br100
None    192.168.10.119  None    nova    br100
None    192.168.10.120  None    nova    br100
None    192.168.10.121  None    nova    br100
None    192.168.10.122  None    nova    br100
None    192.168.10.123  None    nova    br100
None    192.168.10.124  None    nova    br100
None    192.168.10.125  None    nova    br100
None    192.168.10.126  None    nova    br100

3.2.8.4. キーペアの作成

仮想マシンへSSHでログインするためのキーペアを作成します。
独自イメージでパスワードを予め設定してあるなどしてあれば必要ないでしょう。
本項目以降で Please input your password for the keyring が出力されるようになっているのですがどうやれば聞かれないのかまだわかっていません。
なのでパスワードを適当に同じ物を連続で入力して下さい。
分かり次第手順書は修正します。
# cd /home/stack
# nova keypair-add mykey > mykey
# chown stack:stack mykey
# chmod 600 mykey
# nova keypair-list
+-------+-------------------------------------------------+
| Name  | Fingerprint                                     |
+-------+-------------------------------------------------+
| mykey | a0:24:51:51:13:6c:a5:59:43:9c:36:c5:d7:a5:af:8e |
+-------+-------------------------------------------------+

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

セキュリティグループはdefaultを利用しています。
icmpとSSHだけ許可しています。
但し、内部通信のセキュリティではなくフローティングIPへのセキュリティになります。
# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp        | -1        | -1      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+
# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
| tcp         | 22        | 22      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+
# nova secgroup-list
+---------+-------------+
| Name    | Description |
+---------+-------------+
| default | default     |
+---------+-------------+
# nova secgroup-list-rules default
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range  | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp        | -1        | -1      | 0.0.0.0/0 |              |
| tcp         | 22        | 22      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+

3.2.8.6. Dashboardの利用

まずはDashboardにログインしてみましょう。
URLはOpenStackをインストールしたIPアドレスを入れればOKです。

3.2.8.6.1. ログイン

ユーザ名、パスワードはKeystoneで設定したものを入力します。 デフォルトの場合はユーザ名admin、パスワードはsecreteです。

../_images/ログイン13.png

3.2.8.6.2. プロジェクトの選択及びインスタンス画面への遷移

タブのProjectを押下しadminに変更します。
また、その下のメニューのInstance & Volumesを押下します。
../_images/Instance_and_Volumes14.png

3.2.8.6.3. イメージ選択画面への遷移

メニューのImages & Snapshotsを押下します。
右側にGlanceで登録したイメージが表示されていますのでアクションボタン(Launch)を押下します。
../_images/Images_and_Snapshots13.png

3.2.8.6.4. 仮想マシンの起動

仮想マシン名、CPUやメモリの大きさ、キーペア、仮想マシンを起動する数を選択してイメージを起動しましょう。
../_images/Launch_Instances13.png

3.2.8.6.5. 仮想マシンの起動確認

自動的にメニューのInstance & Volumesに遷移しますのでステータスがActiveになるのを待ちます。
Activeになれば無事仮想マシンを操作することが可能になりますが起動中少し時間がかかります。
../_images/Instance_and_Volumes213.png

3.2.8.6.6. 仮想マシンへのログイン

Edit InstanceのメニューからVNC Consoleを選択します。
手順どおりであればFedora16のイメージはユーザ名ec2-user、パスワードは無しです。
グレイの部分を押さないとキーボード入力がうまくいきませんので注意して下さい。
../_images/Instance_vnc_console13.png

3.2.8.6.7. コマンドでインスタンスをブート

コマンドでもインスタンスは起動できます。
イメージとフレーバーを確認してブートします。
# nova image-list
# nova flavor-list
# nova boot --flavor 1 --image ff8c00de-258d-4ada-b606-d41165d80d14 f17_001 --key_name mykey
+-------------------------------------+--------------------------------------+
| Property                            | Value                                |
+-------------------------------------+--------------------------------------+
| OS-EXT-STS:task_state               | scheduling                           |
| image                               | f17-jeos                             |
| OS-EXT-STS:vm_state                 | building                             |
| OS-EXT-SRV-ATTR:instance_name       | instance-00000001                    |
| flavor                              | m1.tiny                              |
| id                                  | 25ad1ef6-db2d-45ce-8023-68aa64d67dfb |
| security_groups                     | [{u'name': u'default'}]              |
| user_id                             | e98e29acc9d44d51af3eaeafce756753     |
| OS-DCF:diskConfig                   | MANUAL                               |
| accessIPv4                          |                                      |
| accessIPv6                          |                                      |
| progress                            | 0                                    |
| OS-EXT-STS:power_state              | 0                                    |
| OS-EXT-AZ:availability_zone         | None                                 |
| config_drive                        |                                      |
| status                              | BUILD                                |
| updated                             | 2013-03-12T08:21:55Z                 |
| hostId                              |                                      |
| OS-EXT-SRV-ATTR:host                | None                                 |
| key_name                            | mykey                                |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                 |
| name                                | f17_001                              |
| adminPass                           | ZBtyMMeL3eGL                         |
| tenant_id                           | 3a152c8b925640ce9bedeb818f7ea13e     |
| created                             | 2013-03-12T08:21:55Z                 |
| metadata                            | {}                                   |
+-------------------------------------+--------------------------------------+

インスタンスが稼働したか確認します。

# nova list

+--------------------------------------+---------+--------+------------------------+
| ID                                   | Name    | Status | Networks               |
+--------------------------------------+---------+--------+------------------------+
| 25ad1ef6-db2d-45ce-8023-68aa64d67dfb | f17_001 | ACTIVE | nova_network1=10.0.0.2 |
+--------------------------------------+---------+--------+------------------------+

インスタンスへログインしてみます。

# ssh -i /home/stack/mykey root@10.0.0.2

3.2.8.6.8. ユーザーデータを利用してインスタンス起動時に設定を行う

Fedoraによって用意されているイメージやUbuntuのイメージなどは予めcloud-initというパッケージがインストールされています。
このパッケージを利用してGithubに置いてあるスクリプトなども動かしたりすることが可能です。
ChefやPuppetのクライアントをインストールして組み合わせるのも便利でしょう。
まず、サーバのどこかに設定を書いたテキストを用意します。
中身は例えばGithubに置いてあるスクリプトを書いておきます。
# vi setting-1.txt
#include
https://gist.github.com/hagix9/5157718/raw/1c35f6b57b1afcbcce70b85d842d7c5157ec6837/gistfile1.sh
Githubに置いておいたスクリプトは以下の様な大したことのないものです。
#!/bin/bash
#For CentOS
echo "Hello OpenStack World. This is User-Data Test" | tee /root/hello.txt
後は、オプション --user_data で先程のテキストを指定してインスタンスを作成すればスクリプト通りのものが出来上がっているはずです。
# nova boot --flavor 1 --image ff8c00de-258d-4ada-b606-d41165d80d14 f17_001 --key_name mykey  --user_data setting-1.txt
上記はコマンドラインですがHorizonでも勿論cloud-initのテキストは指定可能です。
詳しい設定方法やサンプルなどはCanonicalにおいてあります。
インスタンスの起動までは以上です。
全ての操作がDashboardで出来るわけではありませんが
ボリュームのアタッチやデタッチ、仮想マシンのスナップショット、ボリュームのスナップショットなど他にもありますがGUIで色々設定できます。
Swift、QuantumもKeystoneの設定を行えばDashboardでの操作が可能になります。