h26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:openstack入門

44
ver1.0 2014/7/26 Etsuji Nakai Twitter @enakai00openstack Open source software to build public and private clouds. OpenStack入門

Upload: etsuji-nakai

Post on 15-Jan-2015

2.864 views

Category:

Technology


4 download

DESCRIPTION

H26第1回 沖縄オープンラボラトリ・ハンズオンセミナーで使用した資料です。 http://www.e-side.co.jp/openlab/wg/140729.html

TRANSCRIPT

Page 1: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

ver1.0 2014/7/26Etsuji Nakai

(Twitter @enakai00)

openstackOpen source software to build public and private clouds.

OpenStack入門

Page 2: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

2

目次

■ OpenStackのこれまで

■ OpenStackの機能概要

■ セキュリティ機能とストレージ機能

■ プロジェクト管理機能

■ OpenStackの特徴と主要コンポーネント

■ コンポーネントのAPI操作

注意:本テキストで扱うOpenStackは、RDO(Havana)がベースとなります。

Page 3: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

3

OpenStackのこれまで

Page 4: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

4

OpenStackとは?

■ OpenStackは、Amazon EC2/S3相当のクラウドインフラを構築するためのオープンソースソフトウェアです。

- マルチテナント型のIaaS (Infrastructure as a Service) 環境を提供します。

- 類似のオープンソースには、CloudStack、Eucalyptusなどがあります。

■ 2010年末に「米RackSpace社」と「NASA」が共同で、OpenStackプロジェクトを立ちあげて、開発をスタートしました。

- RackSpaceが自社開発で利用していた「Swift」(S3相当の機能を提供)とNASAが作りかけていた「Nova」(EC2相当の機能を提供)をオープンソース化して提供して、それらをベースにコミュニティモデルでの開発を開始しました。

単なる仮想化管理ツールではなく、「パブリッククラウドと同等の機能」を

実現することがOpenStackの目的

Page 5: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

5

これまでの開発状況■ これまで、年に2〜3回程度のメジャーバージョンアップが行われています。

■ 当初は、RackSpace社が開発を主導していましたが、2012年にOpenStackの開発を支える公式の非営利団体である「OpenStack Foudation」が設立されました。

2011 2012 2013 2014

Austin2010/10/21

Bexar2011/02/03

Cactus2011/04/15

Diablo2011/09/22

Essex2012/04/05

Folsom2012/09/27

Grizzly2013/04/04

Havana2013/10/17

「最低限動くもの」を目指して地道に開発

EC2/S3相当機能がほぼ完成

OpenStack Foudation設立

Icehouse2014/04/17

Page 6: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

6

(参考) OpenStack Foundationの設立

http://sourceforge.jp/magazine/12/04/13/0359223

Page 7: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

7

OpenStack Foundation Platinum Members

https://www.openstack.org/join(2014/01の情報)

Page 8: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

8

OpenStack開発への貢献企業

http://activity.openstack.org/dash/releases/index.html?data_dir=data/havana

開発者の所属企業別のOpenStack Havana変更数

開発者の所属企業別のOpenStack Havana問題解決数

Page 9: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

9

OpenStackディストリビューション

■ コミュニティで開発されたOpenStackのソースコードを元にして、独自のインストーラを組み合わせて簡単にインストールできるようにパッケージ化された「OpenStackディストリビューション」があります。

- 複数の企業/団体から、いくつかのディストリビューションが提供されています。

■ 開発者向けのOpenStackディストリビューション

- DevStack : 最新のソースコードをダウンロードしてOpenStack環境を構成するシェルスクリプト群が提供されています。

■ その他の無償で利用できるOpenStackディストリビューション

- Debian Linux、openSUSE、Ubuntu Linux : OpenStackパッケージを標準で同梱

- RDO : Red Hatが提供するRHEL / Fedoraで利用可能なディストリビューション

Page 10: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

10

RDOの特徴

OpenStack Foundation

■ 主な活動内容

- RHEL/Fedora用のRPMパッケージを提供● http://repos.fedorapeople.org/repos/openstack/

- Puppetベースのインストーラ「Packstack」を提供

- QAフォーラムを運営(Red Hatの開発者が回答してくれることもあります。)

OpenStackを創る人々のコミュニティ RHEL/FedoraでOpenStackを

使う人々のコミュニティ

http://openstack.redhat.com

Page 11: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

11

OpenStackの機能概要

Page 12: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

12

OpenStackが提供する環境■ OpenStackのユーザは、WebコンソールやREST APIを用いて、次のようなコンピューティングリソースを利用します。

- 仮想ネットワーク

- 仮想マシンインスタンス

- ブロックボリューム

■ 各ユーザは特定の「プロジェクト」に所属します。

- プロジェクト内でリソースを共有します。

- プロジェクト全体でのリソース使用量の上限設定、リソース使用状況のレポーティングなどが可能です。

データ領域 ブロックボリューム

仮想ルータ

仮想スイッチ

外部ネットワーク

プロジェクト環境

OpenStackユーザ

OS領域 仮想マシンインスタンス

Page 13: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

13

OpenStackの仮想ネットワークモデル■ プロジェクトごとに仮想ルータを用いて、プライベートなネットワークを構成します。

- 仮想ルータの背後に任意の数の仮想スイッチを作成して、接続します。

- それぞれの仮想スイッチは、プライベートIPの独立したサブネットを持ちます。

■ 仮想マシンインスタンス起動時に、接続する仮想スイッチを選択します。

- DHCPでプライベートIPアドレスが割り当てられます。

- 同じプロジェクトの仮想マシンインスタンス間は、プライベートIPで通信できます。

仮想スイッチ192.168.101.0/24

プロジェクトA仮想ルータ

外部ネットワーク

プロジェクトB仮想ルータ

仮想スイッチ192.168.102.0/24

Page 14: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

14

プライベートIPとフローティングIP■ 外部ネットワークと通信する際は、仮想マシンインスタンスに「フローティングIP」を割り当てます。

- 外部ネットワークのサブネット上で、フローティングIPとして利用可能なIPアドレスをプールしておきます。

- 仮想ルータ上で、フローティングIPとプライベートIPのNATが行われます。

- フローティングIPを割り当てない場合でも、仮想マシンインスタンスから外部ネットワークへの接続は可能です。(仮想ルータのIPアドレスを代表IPとして、マスカレード接続します。)

Webサーバー DBサーバー

プライベートIP プライベートIP

フローティングIP

外部ネットワークからはフローティングIPで接続

インスタンス同士はプライベートIPで接続

Page 15: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

15

仮想マシンインスタンスの起動■ 仮想マシンインスタンスを起動する際は、次の項目を指定します。

- インスタンスタイプ

- テンプレートイメージ (*)

- 接続する仮想ネットワーク

- セキュリティグループ

- キーペア

外部ネットワーク

OS領域テンプレート

イメージ

複製

複数ネットワーク接続も可能

セキュリティグループ

形式 説明

raw フラットなイメージファイル

AMI/AKI/ARI Amazon EC2が利用する形式

qcow2 Linux KVMが利用する形式

VDI VirtualBoxが利用する形式

VMDK VMwareが利用する形式

VHD Hyper-Vが利用する形式

テンプレートとしてインポート可能なイメージ形式

Page 16: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

16

テンプレートイメージの準備方法 (1)■ Oz(仮想マシンイメージの作成に特化したOSインストールツール)で作成する

- OpenStack用イメージ作成のデファクトツール

- https://github.com/clalancette/oz/wiki

■ ディストリビューション標準のテンプレートイメージを利用

- FedoraのOpenStack対応イメージ

- http://fedoraproject.org/en/get-fedora-options#clouds

Page 17: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

17

テンプレートイメージの準備方法 (2)■ Red Hat Enterprise Linux (RHEL)では、RHEL6.4より、OpenStackで利用可能なテン

プレートイメージが提供されています。

- これをダウンロードして、OpenStackに登録することで、すぐにRHELの仮想マシンを起動することができます。

Page 18: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

18

セキュリティ機能とストレージ機能

Page 19: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

19

セキュリティグループ■ 仮想マシンインスタンスの受信パケットを「セキュリティグループ」でフィルタリング

します。

- セキュリティグループを作成して、「プロトコル、宛先ポート、送信元IP」などの条件で受信を許可するパケットを指定します。

HTTPの受信許可

Pingの受信許可

セキュリティグループ「default」の仮想マシンからは任意の受信許可

- 仮想マシンインスタンス起動時に適用するセキュリティグループを指定します。

SSHの受信許可

送信は自由に可能

Page 20: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

20

キーペアによるSSHログイン認証■ 事前に公開鍵を登録しておき、仮想マシンインスタンス起動時にゲストOSに埋め込み

ます。

- 公開鍵の登録は、ユーザ個別に行います。複数ユーザでキーペアを共有する形にはなりません。

ユーザ情報データベース

仮想マシンインスタンス

②公開鍵をゲストOSに埋め込み

秘密鍵

公開鍵

①公開鍵を事前に登録

③秘密鍵で認証

Page 21: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

21

インスタンスタイプとディスク領域の関係■ デフォルトで用意されるインスタンスタイプは次のようになります。

- ルートディスクは、テンプレートイメージを複製した後に指定のサイズまで拡張されます。

■ 管理者ユーザは任意のインスタンスタイプを定義することができます。

- 一時ディスクとスワップディスクを与えると、ゲストOSからは下図のように認識されます。

- これらのディスク領域は、仮想マシンインスタンスを停止するとすべて破棄されます。(永続保存が必要なユーザデータは、ブロックボリュームに保存します。)

インスタンスタイプ 仮想CPU メモリルート

ディスク一時

ディスクスワップディスク

m1.tiny 1 512MB 1GB 0 0

m1.small 1 2GB 20GB 0 0

m1.medium 2 4GB 40GB 0 0

m1.large 4 4GB 80GB 0 0

m1.xlarge 8 8GB 160GB 0 0

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTvda 252:0 0 20G 0 disk └─vda1 252:1 0 20G 0 part /vdb 252:16 0 5G 0 disk /mntvdc 252:32 0 1G 0 disk [SWAP] スワップディスク

ルートディスク一時ディスク

Page 22: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

22

仮想マシンインスタンスのスナップショット■ 仮想マシンインスタンスの「スナップショット」により、ルートディスクを複製して保存することができます。

OS領域

テンプレートイメージ

テンプレートイメージから仮想マシンインスタンス起動

インスタンスのスナップショット

OS領域

ルートディスクを複製してスナップショットを作成

スナップショットから仮想マシンインスタンス起動

Page 23: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

23

ブロックボリュームの使い方■ ブロックボリュームは、仮想マシンインスタンスを停止してもそのまま残るので、永続

的なデータ保存領域として使います。

データ領域

③スナップショット作成

④スナップショットを複製して新たなブロックボリュームを作成

②仮想マシンインスタンスに接続してデータ領域として使用

データ領域

他の仮想マシンインスタンスに再接続可能(同時接続は不可)

①新規ブロックボリュームを作成

OS領域 OS領域

Page 24: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

24

ブロックボリュームの使い方

OS領域

仮想マシンインスタンスに接続してゲストOS起動

テンプレートイメージを複製してブロックボリュームを作成

OS領域テンプレート

イメージ

OS領域

スナップショット作成

OS領域

複製

■ ブロックボリュームにゲストOSをインストールして、ブロックボリュームから仮想マシンインスタンスを起動することも可能です。

- 仮想マシンインスタンスを停止しても、OS領域への変更が破棄されずに残ります。

- スナップショットを作成しておき、仮想マシンインスタンスを起動するタイミングで、スナップショットから新しいブロックボリュームを用意することも可能です。

Page 25: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

25

新規プロジェクト / ユーザの作成

Page 26: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

26

プロジェクト単位のリソース使用レポート

現在の使用量 指定期間の累計

Page 27: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

27

プロジェクトのリソース使用量の上限

Page 28: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

28

OpenStackの特徴と主要コンポーネント

Page 29: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

29

OpenStackの主要コンポーネント■ OpenStackでは、機能別にソフトウェアをモジュール化して開発が進められています。

- Swift : オブジェクトストレージ

● ファイル単位で出し入れするだけの単純なファイルストア

- Nova : 仮想マシンの配置決定と起動・停止処理

- Glance : 仮想マシンイメージの管理

● バックエンドにSwift、その他のストレージを使用

- Cinder : ブロックボリュームの提供

● サンプル実装では、Linux LVM + iSCSIソフトウェアターゲットを使用● 外部のストレージ装置をバックエンドにすることも可能

- Keystone : 統合認証機能

- Neutron : 仮想ネットワーク管理機能(Quantumから改名)

● 仮想ネットワークの作成を外部のプラグインモジュール(SDN製品)に移譲● 標準提供のプラグインでは、Linux bridge、もしくは、Open vSwitchを使用

- Horizon : GUIコンソールのサンプル実装

Page 30: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

30

コンポーネント間の連携処理■ Webコンソールで操作をすると、REST API経由で各モジュールに指示が飛びます。ま

た、クライアントは、各モジュールのREST APIを直接操作することも可能です。

- これにより、プログラムコードからの呼び出しによる環境操作の自動化が可能になります。

仮想マシンイメージ

NovaCompute

NovaCompute

Glance Horizon Neutron

管理ネットワーク

LUN

仮想ネットワーク作成

仮想マシン起動

ブロックボリューム提供(iSCSI)

認証サーバ

テンプレートイメージ保存

MySQL

NetworkNode

NovaCompute

Cinder

Keystone

Swift

メッセージキュー

パブリックネットワーク

クライアントPC

Webコンソールアクセステンプレートイメージ検索

テンプレートダウンロード

QPID

データベース

LUNLUN

Nova

Page 31: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

31

OpenStackの特徴

■ APIで操作する「Programmable Infrastructure」の提供

- 既存のGUI・ワークフローに縛られたくないユーザ層の獲得

- プログラムによるインフラ環境の自動構築・変更に対応

■ スケーラビリティを意識した疎結合アーキテクチャ

- コンピューティングノードの追加が容易/コントローラの負荷分散が可能

- システム設計、運用・管理にはこれまでとは違うノウハウが必要

■ Driver/Pluginによる外部コンポーネントとの連携

- 既存インフラと連携・統合するための作りこみが可能

- サードパーティ製品連携のエコシステム

ここがポイント

Page 32: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

32

http://www.slideshare.net/gmccance/cern-data-centre-evolution

システムアーキテクチャのパラダイムシフト

Page 33: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

33

コンポーネントのAPI操作

Page 34: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

34

コンポーネントのAPI操作のパターン■ コンポーネントのAPIを操作する際は、2種類のパターンがあります。

- ユーザがダッシュボード経由で各コンポーネントのAPIを操作、もしくは、直接にAPIを操作

- あるコンポーネントが他のコンポーネントに処理を依頼するためにAPIを操作

データベースMySQL

メッセージングQPID

共有データ保存

エージェント通信のメッセージ中継

Horizon(ダッシュボード)

Keystone(ユーザ認証)

Neutron(仮想ネットワーク)

Cinder(ブロックボリューム)

Nova(仮想マシン)

Glance(テンプレート)

テンプレートイメージのダウンロード

ブロックボリュームの接続

仮想ネットワークへの接続

APIアクセス Webブラウザアクセス

Page 35: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

35

API操作のユーザ認証■ コンポーネントのAPIを操作する際は、ユーザ認証が必要となります。

- ユーザ、もしくは、コンポーネントは、KeystoneからAPI操作を許可する「トークン」を取得した後に、操作対象コンポーネントのAPIにリクエストを送信します。(各コンポーネントは、自分自身を表す「ユーザ」がKeystoneに事前に登録されています。)

- Keystoneからトークンを取得する際に、操作対象コンポーネントのAPIのURLを併せて取得します。したがって、ユーザは、KeystoneのAPIのURLだけを知っている必要があります。

Horizon(ダッシュボード)

Keystone(ユーザ認証)

Neutron(仮想ネットワーク)

Cinder(ブロックボリューム)

Nova(仮想マシン)

Glance(テンプレート)

Page 36: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

36

Keystoneのコマンド操作例 (1)■ OpenStack標準のコマンドラインツールは、環境変数でユーザ/パスワード/操作対象テ

ナント/Keystone APIのベースURLを指定します。

- Keystone APIは、管理ユーザ用と一般ユーザ用でURL(ポート番号)が異なります。

- 引数でユーザ等を指定した場合は、そちらが優先されます。

- 次はデフォルトの管理ユーザ「admin」でKeystoneを操作する例です。

# cat keystonerc_admin export OS_USERNAME=adminexport OS_TENANT_NAME=adminexport OS_PASSWORD=714f1ab569a64a3bexport OS_AUTH_URL=http://172.16.1.11:35357/v2.0/export PS1='[\u@\h \W(keystone_admin)]\$ '

# . keystonerc_admin# keystone user-list+----------------------------------+------------+---------+-------------------+| id | name | enabled | email |+----------------------------------+------------+---------+-------------------+| 589a800d70534655bfade5504958afd6 | admin | True | [email protected] || 3c45a1f5a88d4c1d8fb07b51ed72cd55 | cinder | True | cinder@localhost || f23d88041e5245ee8cc8b0a5c3ec3f6c | demo_admin | True | || 44be5165fdf64bd5907d07aa1aaa5dab | demo_user | True | || cd75770810634ed3a09d92b61aacf0a7 | glance | True | glance@localhost || a38561ed906e48468cf1759918735c53 | nova | True | nova@localhost || 157c8846521846e0abdd16895dc8f024 | neutron | True | neutron@localhost |+----------------------------------+------------+---------+-------------------+

管理ユーザの場合はポート番号35357

Page 37: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

37

Keystoneのコマンド操作例 (3)■ 各コマンドラインツールは、「helpサブコマンド」でサブコマンドの一覧や各サブコマ

ンドの詳細が確認できます。

# keystone help ← サブコマンドの一覧# keystone help user-list ← サブコマンド「user-list」の詳細説明

Page 38: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

38

仮想マシンインスタンスの起動■ NovaのAPIに仮想マシンインスタンスの起動を指示すると、Glance / Netronと連携し

て、インスタンスの起動と仮想ネットワーク接続の処理が行われます。

- Novaは、Glance APIを通じて、テンプレートイメージをコンピュートノードにコピーします。

- 同じく、Neutron APIを通じて、仮想マシンインスタンスを仮想ネットワークに接続します。

Horizon(ダッシュボード)

Keystone(ユーザ認証)

Neutron(仮想ネットワーク)

Cinder(ブロックボリューム)

Nova(仮想マシン)

Glance(テンプレート)

テンプレートイメージのダウンロード

仮想ネットワークへの接続

Page 39: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

39

仮想マシンインスタンスの起動 (1)■ 次は、novaコマンドで仮想マシンインスタンスの起動に必要な情報を確認しています。

# . keystonerc_demo_user# nova flavor-list+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | extra_specs |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+| 1 | m1.tiny | 512 | 0 | 0 | | 1 | 1.0 | True | {} || 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True | {} || 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True | {} || 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True | {} || 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True | {} |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+

# nova keypair-list+-------+-------------------------------------------------+| Name | Fingerprint |+-------+-------------------------------------------------+| mykey | 31:8c:0e:43:67:40:f6:17:a3:f8:3f:d5:73:8e:d0:30 |+-------+-------------------------------------------------+

# nova image-list+--------------------------------------+----------+--------+--------+| ID | Name | Status | Server |+--------------------------------------+----------+--------+--------+| 702d0c4e-b06c-4c15-85e5-9bb612eb6414 | Fedora19 | ACTIVE | |+--------------------------------------+----------+--------+--------+

# nova secgroup-list+---------+-------------+| Name | Description |+---------+-------------+| default | default |+---------+-------------+

# nova net-list+--------------------------------------+-------------+------+| ID | Label | CIDR |+--------------------------------------+-------------+------+| 843a1586-6082-4e9f-950f-d44daa83358c | private01 | None || d3c763f0-ebf0-4717-b3fc-cda69bcd1957 | private02 | None || d8040897-44b0-46eb-9c51-149dfe351bbe | ext-network | None |+--------------------------------------+-------------+------+

NovaからGlance APIを呼び出して情報を取得しています。

NovaからNeutron APIを呼び出して情報を取得しています。

Page 40: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

40

仮想マシンインスタンスの起動 (2)■ 次は、確認した情報を元に、仮想マシンインスタンスを起動しています。

# nova boot --flavor m1.small --image Fedora19 --key-name mykey \ --security-groups default --nic net-id=843a1586-6082-4e9f-950f-d44daa83358c vm01+-----------------------------+--------------------------------------+| Property | Value |+-----------------------------+--------------------------------------+| status | BUILD || updated | 2013-11-22T06:22:52Z || OS-EXT-STS:task_state | scheduling || key_name | mykey || image | Fedora19 || hostId | || OS-EXT-STS:vm_state | building || flavor | m1.small || id | f40c9b76-3891-4a5f-a62c-87021ba277ce || security_groups | [{u'name': u'default'}] || user_id | 2e57cd295e3f4659b151dd80f3a73468 || name | vm01 || adminPass | 5sUFyKhgovV6 || tenant_id | 555b49dc8b6e4d92aa74103bfb656e70 || created | 2013-11-22T06:22:51Z || OS-DCF:diskConfig | MANUAL || metadata | {} |(中略)+-----------------------------+--------------------------------------+

# nova list+--------------------------------------+------+--------+-------------------------+| ID | Name | Status | Networks |+--------------------------------------+------+--------+-------------------------+| f40c9b76-3891-4a5f-a62c-87021ba277ce | vm01 | ACTIVE | private01=192.168.101.3 |+--------------------------------------+------+--------+-------------------------+

Page 41: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

41

仮想マシンインスタンスの起動 (3)■ 「カスタマイズスクリプト」を使用する際は、スクリプトを記載したファイルを用意し

て、「--user-data」オプションで指定します。

- 次の例では、カスタマイズスクリプトを指定して仮想マシンインスタンスを起動した後、フローティングIPを割り当てて、実際にログインしています。

# cat hello.txt #!/bin/shecho 'Hello, World!' > /etc/motd

# nova boot --flavor m1.small --image Fedora19 --key-name mykey \ --security-groups default --nic net-id=843a1586-6082-4e9f-950f-d44daa83358c \ --user-data hello.txt vm01

# nova floating-ip-list+--------------+-------------+----------+-------------+| Ip | Instance Id | Fixed Ip | Pool |+--------------+-------------+----------+-------------+| 172.16.1.101 | None | None | ext-network || 172.16.1.102 | None | None | ext-network || 172.16.1.103 | None | None | ext-network || 172.16.1.104 | None | None | ext-network || 172.16.1.105 | None | None | ext-network |+--------------+-------------+----------+-------------+

# nova add-floating-ip vm01 172.16.1.101

# ssh -i ~/mykey.pem [email protected] authenticity of host '172.16.1.101 (172.16.1.101)' can't be established.RSA key fingerprint is b7:24:54:63:1f:02:33:4f:81:a7:47:90:c1:1b:78:5a.Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.16.1.101' (RSA) to the list of known hosts.Hello, World![fedora@vm01 ~]$

Page 42: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

42

ブロックボリュームの作成と接続■ CinderのAPIを通して、ブロックボリュームの作成・削除・スナップショット作成など

が可能です。

- 仮想マシンインスタンスにブロックボリュームを接続する際は、NovaのAPIに指示を出すと、 NovaがCinderのAPIを経由して連携処理を行います。

Horizon(ダッシュボード)

Keystone(ユーザ認証)

Neutron(仮想ネットワーク)

Cinder(ブロックボリューム)

Nova(仮想マシン)

Glance(テンプレート)

ブロックボリュームの接続

Page 43: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

43

ブロックボリュームの作成と接続■ 次は5GBのボリュームを作成して、仮想マシンインスタンスに接続/取り外しを行う例で

す。

# cinder create --display-name volume01 5

# cinder list+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+| 78b4d23b-3b57-4a38-9f6e-10e5048170ef | available | volume01 | 5 | None | false | |+--------------------------------------+-----------+--------------+------+-------------+----------+-------------+

# nova volume-attach vm01 78b4d23b-3b57-4a38-9f6e-10e5048170ef+----------+--------------------------------------+| Property | Value |+----------+--------------------------------------+| device | /dev/vdb || serverId | f40c9b76-3891-4a5f-a62c-87021ba277ce || id | 78b4d23b-3b57-4a38-9f6e-10e5048170ef || volumeId | 78b4d23b-3b57-4a38-9f6e-10e5048170ef |+----------+--------------------------------------+

# nova volume-detach vm01 78b4d23b-3b57-4a38-9f6e-10e5048170ef

Page 44: H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門

openstackOpen source software to build public and private clouds.