読者です 読者をやめる 読者になる 読者になる

openstack の policy.json を学ぶ #opcel3

openstack

policy.json とは

各 OpenStack コンポーネントにて、各種操作に必要な権限等を指定するファイル。

例えば、

  • インスタンスの立ち上げは "member" ロールを持っていれば行える
  • プロジェクト(テナント) の作成には "admin" ロールが必要

など、操作とそれに必要なロールを対応付けます。

以下は nova の policy.json

{
    "context_is_admin":  "role:admin",
    "admin_or_owner":  "is_admin:True or project_id:%(project_id)s",
    "default": "rule:admin_or_owner",

    "cells_scheduler_filter:TargetCellFilter": "is_admin:True",

    "compute:create": "",
    "compute:create:attach_network": "",
    "compute:create:attach_volume": "",
    "compute:create:forced_host": "is_admin:True",
    "compute:get_all": "",
    "compute:get_all_tenants": "",
    "compute:start": "rule:admin_or_owner",
    "compute:stop": "rule:admin_or_owner",
    "compute:unlock_override": "rule:admin_api",

    "compute:shelve": "",
    "compute:shelve_offload": "",
    "compute:unshelve": "",
    "compute:resize": "",
    "compute:confirm_resize": "",
    "compute:revert_resize": "",
    "compute:rebuild": "",
    ...略...

大体の場合、"/etc/<コンポーネント>/policy.json" においてあります。

oslo.policy が policy.json を処理します。

書式

ポリシーは一行ずつ <ターゲット>:<ルール>という形で記述されます。

# nova list コマンドで行う、インスタンスの一覧の取得は誰でも行える
"compute:get_all":""

target

上の例で言うところの、"compute:get_all" の部分です。

"compute:create" のように "service:API" の場合もあれば、"add_image" のように "API" のみの場合もあります。

rule

"target" の操作を許可するか、禁止するかどうかなどを記述します。

rule には下記のようなものが入ります。

  • "", [], "@"
    • "target"の操作は常に許可されます
  • "!"
    • "target"の操作は常に禁止されます
  • "role:<ロール名>"
    • 指定されたロールを持つユーザーのみ "target" の操作が許可されます
  • "rule:<ルール名>"
    • ルールの alias を指定する
  • "http:"
    • 判断をリモートサーバーに委譲する.Trueが返ってきた場合に許可されます。
  • "value1 : value2"
  • and, or , not による複数条件の指定

alias

複雑なルール、よく使用するルールなどは alias を設定できる。

# ロールが admin または is_admin フラグが立っている
"admin_required": "role:admin or is_admin:1",

alias のネストも可能。

default

rule に "" を指定した際には、"target" の操作は常に許可される、と上に書きましたが、"default" という alias を記述しておくことで、""を指定した際に "default" alias が適用されるようになります。

"default": "rule:admin_or_owner"

参考にしたページ

OPCEL 対策2

openstack

OpenStack のインストレーションとデプロイメント

以下の項目

  • OpenStack のクライアントアプリケーションをインストールする。

  • OpenStackを手動でインストールすることの利点と欠点を理解している。

  • OpenStackの手動デプロイの一般的な手順を知っている。
  • 開発用およびテスト用OpenStackクラウドのデプロイにRDO または DevStack を使用する。
  • OpenStackのメジャーなディストリビューションの主要機能とデプロイメント方法を理解している。
    • Red Hat Enterprise Linux OpenStack Platform 6 (Foreman, Puppet)
    • Ubuntu OpenStack (Landscape, MAAS, JuJu)
    • SUSE OpenStack Cloud 5 (Crowbar, Chef)
    • Rackspace Private Cloud (Ansible)

      client

主要サービスに対しては以下のコマンドがある。

  • openstack
    • 主要サービス全般の操作をこのコマンド1つで行える
  • cinder
  • nova
  • glance
  • neutron
  • swift
  • heat
  • ceilometer
  • ironic

それぞれ、pip コマンドで簡単にインストール出来る。

手動デプロイ

各 openstack ディストリビューションが提供する方法を使わずに、地道に各コンポーネントをセットアップしていく。面倒くさそう。。

上記は最近出たばかりの liberty のインストールガイド。これを見てみると、おおまかに以下のような順序でセットアップしている。

  1. 環境自体の構築
  2. 共通で使用するソフトウェア等のセットアップ
  3. Keystone 追加
  4. Glance 追加
  5. Nova 追加
  6. Neutron 追加
  7. Horizon 追加
  8. Cinder 追加
  9. Swift 追加
  10. Heat 追加
  11. Ceilometer 追加

RDO

RDO is a community of people using and deploying OpenStack on CentOS, Fedora, and Red Hat Enterprise Linux.

とある。

RDO Manager

OpenStack のインストール、アップデート、オペレーションまでをサポートするツール

OpenStack TripleO をベースにしているらしい。

TripleO は OpenStack が OpenStack を作り出す仕組みで、インストールなどを行う。

Deployment Cloud という OpenStack 環境から、実際にユーザーが利用する Workload Cloud を生み出す仕組み。Ironic, Heat などを利用して、デプロイを行う。

HP の Helion なども TripleO ベースでした。

packstack

RDO の提供するデプロイツールRHELCentOS などに OpenStack をデプロイできる。

以下のコマンドだけで、1台完結の OpenStack 環境ができあがる。

sudo yum update -y
sudo yum install -y https://www.rdoproject.org/repos/rdo-release.rpm
sudo yum install -y openstack-packstack
packstack --allinone

マルチノードなどの設定も行える。その場合は、"answer file" と呼ばれるファイルを編集し、設定を行う。

通常、"answer file" はデプロイ時に出力されるが、下記コマンドでデプロイ前にデフォルトの設定を出力することが可能。

# packstack --gen-answer-file=FILE

"answer file" を編集後、下記コマンドでデプロイを行う。

# packstack --answer-file=FILE

devstack

シェルスクリプトベースのデプロイツール

下記の記事が参考になった。

stack.sh というシェルスクリプトを実行してデプロイを行う。この stack.sh の解説が下記のページに掲載されている。

  • stack.sh

  • local.conf

    • ここに設定を入れ込む。
    • DevStack ディレクトリ直下に配置する必要がある。
  • localrc
    • 以前使用されていた

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

  • Red Hat Enterprise Linux OpenStack Platform
    • version 7 が最新
    • tripleO ベースの director というプロジェクトを使うらしい。
    • デプロイ用の UI が用意されている。
    • 監視とフェールオーバーのサービスを統合
    • 自動でマイグレート等を行う機能もある
  • Ubuntu OpenStack
    • WEB UI からデプロイが行える
      • 監視等の機能もあり
    • MaaS と呼ばれるベアメタルデプロイの機能を利用
      • metal as a Service
    • Juju と呼ばれるオーケストレーションの機能を利用
  • SUSE Openstack Cloud
    • Crowbar と呼ばれるベアメタルデプロイのプラットフォームを使用
  • Rackspace Private Cloud
    • ansible を利用

hoge-manage

DB の設定や関連サービスの列挙、ログの表示などが行える。

nova で VM を立ち上げるノード制御する

nova-scheduler

nova が hypervisor ホストで VM を立ち上げる時、どの hypervisor ホストで立ち上げるかを決めるのは nova-scheduler です。

nova-scheduler は立ち上げるホストを filtering して決めます。

デフォルトでは、以下の様な filter が使用できます。(/etc/nova/nova.conf に設定されている。)

scheduler_default_filters=RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter

新規立ち上げ時以外に、以下の時にホストを決定します。

  • VM をマイグレートするとき
  • nova evacuate コマンドでホストを指定しなかった場合

立ち上げるホストを指定したい

Host aggregate で指定出来そう。

Host aggregate を使用すると、Flavor に指定した metadata を利用して VM を立ち上げるホストを指定出来るみたいです。

Host aggregate を使用するための設定

/etc/nova/nova.conf の "scheduler_default_filters" に "AggregateInstanceExtraSpecsFilter" を追加する。

scheduler_default_filters=AggregateInstanceExtraSpecsFilter,RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter

openstack aggregate create コマンドで aggregate を作成する。

$ openstack aggregate create --zone nova test
+-------------------+----------------------------+
| Field             | Value                      |
+-------------------+----------------------------+
| availability_zone | nova                       |
| created_at        | 2015-11-07T10:36:58.000000 |
| deleted           | False                      |
| deleted_at        | None                       |
| id                | 1                          |
| name              | test                       |
| updated_at        | None                       |
+-------------------+----------------------------+

openstack aggregate add host コマンドで作成した aggregate にホストを追加する

$ openstack aggregate add host 1 compute0 
+-------------------+---------------------------------------------------+
| Field             | Value                                             |
+-------------------+---------------------------------------------------+
| availability_zone | nova                                              |
| created_at        | 2015-11-07T10:36:58.000000                        |
| deleted           | False                                             |
| deleted_at        | None                                              |
| hosts             | [u'compute0']                                     |
| id                | 1                                                 |
| metadata          | {u'test': u'true', u'availability_zone': u'nova'} |
| name              | test                                              |
| updated_at        | None                                              |
+-------------------+---------------------------------------------------+

aggregate に metadata を設定する

$ openstack aggregate set --property test=true 1
+-------------------+---------------------------------------------------+
| Field             | Value                                             |
+-------------------+---------------------------------------------------+
| availability_zone | nova                                              |
| created_at        | 2015-11-07T10:36:58.000000                        |
| deleted           | False                                             |
| deleted_at        | None                                              |
| hosts             | [                                                |
| id                | 1                                                 |
| metadata          | {u'test': u'true', u'availability_zone': u'nova'} |
| name              | test                                              |
| updated_at        | None                                              |
+-------------------+---------------------------------------------------+]

flavor に metadata を設定する

$ nova flavor-key 1 set aggregate_instance_extra_specs:test=true
$ nova flavor-show 1
+----------------------------+-------------------------------------------------+
| Property                   | Value                                           |
+----------------------------+-------------------------------------------------+
| OS-FLV-DISABLED:disabled   | False                                           |
| OS-FLV-EXT-DATA:ephemeral  | 0                                               |
| disk                       | 1                                               |
| extra_specs                | {"aggregate_instance_extra_specs:test": "true"} |
| id                         | 1                                               |
| name                       | m1.tiny                                         |
| os-flavor-access:is_public | True                                            |
| ram                        | 512                                             |
| rxtx_factor                | 1.0                                             |
| swap                       |                                                 |
| vcpus                      | 1                                               |
+----------------------------+-------------------------------------------------+

VM を立ち上げてみる

aggregate の設定をしていない場合。

$ nova show aggregate-test
+--------------------------------------+----------------------------------------------------------+
| Property                             | Value                                                    |
+--------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                   |
| OS-EXT-AZ:availability_zone          | nova                                                     |
| OS-EXT-SRV-ATTR:host                 | compute1                                                 |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | compute1                                                 |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000005                                        |
| OS-EXT-STS:power_state               | 1                                                        |
| OS-EXT-STS:task_state                | -                                                        |
| OS-EXT-STS:vm_state                  | active                                                   |
| OS-SRV-USG:launched_at               | 2015-11-07T10:53:33.000000                               |
| OS-SRV-USG:terminated_at             | -                                                        |
| accessIPv4                           |                                                          |
| accessIPv6                           |                                                          |
| config_drive                         |                                                          |
| created                              | 2015-11-07T10:52:12Z                                     |
| flavor                               | m1.tiny (1)                                              |
| hostId                               | d851fc374eb13a12aa7df7f38f6889196fa0cbfc52808379265c6f72 |
| id                                   | e1b54302-e9a5-42b7-9e5c-a7e5f9cded71                     |
| image                                | cirros (d5bfdf59-fb05-44ae-90fb-62e848feca1b)            |
| key_name                             | -                                                        |
| metadata                             | {                                                       |
| name                                 | aggregate-test                                           |
| os-extended-volumes:volumes_attached | [                                                       |
| pri-net network                      | 172.16.1.4                                               |
| progress                             | 0                                                        |
| security_groups                      | default                                                  |
| status                               | ACTIVE                                                   |
| tenant_id                            | be0aa029aed749169432428147648b68                         |
| updated                              | 2015-11-07T10:53:34Z                                     |
| user_id                              | c881bb43e6fd4a8aafd1f3e2cb874d00                         |
+--------------------------------------+----------------------------------------------------------+]}

設定後。

$ nova boot --flavor m1.tiny --image cirros --nic net-id=a0e5ac16-6dd4-4c68-86f6-ee6691477017 --poll aggregate-test2
+--------------------------------------+-----------------------------------------------+
| Property                             | Value                                         |
+--------------------------------------+-----------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                        |
| OS-EXT-AZ:availability_zone          | nova                                          |
| OS-EXT-SRV-ATTR:host                 | -                                             |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | -                                             |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000007                             |
| OS-EXT-STS:power_state               | 0                                             |
| OS-EXT-STS:task_state                | scheduling                                    |
| OS-EXT-STS:vm_state                  | building                                      |
| OS-SRV-USG:launched_at               | -                                             |
| OS-SRV-USG:terminated_at             | -                                             |
| accessIPv4                           |                                               |
| accessIPv6                           |                                               |
| adminPass                            | NZAQeQp3MmvS                                  |
| config_drive                         |                                               |
| created                              | 2015-11-07T11:05:58Z                          |
| flavor                               | m1.tiny (1)                                   |
| hostId                               |                                               |
| id                                   | cfd4412f-b6e4-4986-830e-bc20c0274ff1          |
| image                                | cirros (d5bfdf59-fb05-44ae-90fb-62e848feca1b) |
| key_name                             | -                                             |
| metadata                             | {                                            |
| name                                 | aggregate-test2                               |
| os-extended-volumes:volumes_attached | [                                            |
| progress                             | 0                                             |
| security_groups                      | default                                       |
| status                               | BUILD                                         |
| tenant_id                            | be0aa029aed749169432428147648b68              |
| updated                              | 2015-11-07T11:05:58Z                          |
| user_id                              | c881bb43e6fd4a8aafd1f3e2cb874d00              |
+--------------------------------------+-----------------------------------------------+
Server building... 100% complete
Finished

ログを見ると以下の様なログが出ている。

Filter AggregateInstanceExtraSpecsFilter returned 1 host(s)

ここで、compute0 を返しているのではないかと思う。

参考にしたものURL

OPCEL 対策1

openstack

仕事の関係で OpenStack を触っているので、OPCEL という資格を取ってみようと思い立ち、勉強の過程をこのブログに残して行きたいと思います。

OPCEL とは

OPCEL認定試験はOpenStackに関する専門知識や構築・運用管理のスキルを認定する試験

だそうです。

試験範囲

出題範囲を見ると、幅広そうな感じなのか。。

クラウドコンピューティングの概念

範囲

オペレータの側面

クラウドコンピューティング(IaaS, PaaS, SaaS)の概念、および、パブリック、プライベート、ハイブリッドクラウドの概念、そしてIaaSの特性について理解している。 特定のタスクでクラウドコンピューティングが適切かつ有利であると判断できる。 IaaSのサービスおよびIaaSとアプリケーションの組合せ方について理解している。 スケーラビリティと高可用性の面を含む、IaaSとアプリケーションの関係を理解している。 IaaS クラウドの非機能要件およびクラウドコンピューティングSLA(サービス品質保証)を理解している。

IaaS, PaaS, SaaS

ハイブリッド・クラウド

上記を読むと、大きく分けて以下の2つの側面がありそう。

  • 利用形態がハイブリッド
    • DC事業者のクラウドサービスとコロケーションサービスを組み合わせる
  • サービス提供者がハイブリッド
    • 複数クラウドサービスを組み合わせる
    • オンプレとも組み合わせたり

要は適材適所で使い分けましょう的なイメージですね。

OpenStack のアーキテクチャと設計

OpenStack の主要コンポーネント

  • Keystone
    • 認証、トークン管理、endpoint 管理
  • Horizon
    • WEB UI
  • Glance
    • 他のサービスと関連して使用するデータを管理する
  • Cinder
  • Swift
    • オブジェクトストレージ
  • Neutron
    • ネットワーク管理
  • Nova
    • VM 管理
  • Ironic
    • ベアメタルサーバー管理
  • Ceilometer
  • Heat

IaaS の追加サービス

  • Barbican
    • セキュアストレージ
    • パスワードや証明書を管理するためのもの
  • Designate
    • DNSaaS
      • ドメイン、レコード管理
      • nova や neutron と統合し、自動でレコードの作成などを行う
  • Magnum
  • Manila
    • ファイル共有サービスを提供する
    • Cinder と連携可能

SaaS の追加サービス

感想

メモ程度にまとめて合格を目指します。コアサービス以外は知らないものが多かったので、色々試してみよう。。

機会

今まで本番環境で作業したことは無かったのだけれど、最近作業する機会があった。

今までは検証環境での作業が主だった。 初の本番環境での作業を経験して思ったことが1つある。 それは、"人間は信用出来ない"ということだ。

今回の作業は別に難しいものではない。結果として滞り無く作業は終わった。 ただ作業の中で幾つか手作業が入ってしまった。事前に検証環境で作業を自動で行うスクリプトを組んで、 検証していたのだけれど、怠惰と想定不足のために本番環境での手作業が入った。

手作業は危険だ。というか、人間が危険だ。人間は信用出来ない。人間は間違いを犯す。 もちろんシステム側で間違いを吸収することも大切だ。だが手作業自体を極力減らすことも非常に重要だ。

そんな大体の人にとってアタリマエのことを今更感じたのでメモしておく。

Nested KVM で OpenStack

Nested KVMKVM 上に OpenStack を構築しました。

Nested KVMVM を立てることに関しては下記の記事が非常に参考になりました。というかほぼそのまま作りました。

VM間の通信を専用のNICで行う

VM 間の通信は eth1 で行いたい。

"packstack --gen-answer-file=./packstack-answer.cfg" で packstack 用の設定ファイルを生成。この設定ファイルにはデフォルトのパラメータが記載されているので、これを変更していきます。

変更した部分は以下。

87c87
< CONFIG_COMPUTE_HOSTS=192.168.199.11
---
> CONFIG_COMPUTE_HOSTS=192.168.199.12,192.168.199.13
943c943
< CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=
---
> CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=ext-net:br-ex
954c954
< CONFIG_NEUTRON_OVS_BRIDGE_IFACES=
---
> CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
959c959
< CONFIG_NEUTRON_OVS_TUNNEL_IF=
---
> CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1

エラーと解決策

nova-compute が起動に失敗する

以下の様なエラーが表示される。

Error: Could not start Service[nova-compute]: Execution of '/usr/bin/systemctl start openstack-nova-compute' returned 1: Job for openstack-nova-compute.service failed. See 'systemctl status openstack-nova-compute.service' and 'journalctl -xn' for details.

'/var/log/nova/nova-compute.log' を見ると、ironic 関連のライブラリが無くエラーが出ていたのと、下のようなページが見つかったので、nova compute ノードに 'openstack-ironic-common'と'python-ironicclient'をインストールすると、解決した。

インストール完了後、neutron-server が起動していない。

普通に、"systemctl restart neutron-server" すると、動いた。

compute ノードがハイパーバイザとして認識されない

"nova hypervisor-list"コマンドを実行しても空の表示。。。

どうやら、nova のドライバーの問題みたいで、/etc/nova/nova.conf で ironic のドライバが指定されているため、正しく認識されないよう。

# Driver to use for controlling virtualization. Options
# include: libvirt.LibvirtDriver, xenapi.XenAPIDriver,
# fake.FakeDriver, baremetal.BareMetalDriver,
# vmwareapi.VMwareVCDriver, hyperv.HyperVDriver (string value)
compute_driver=libvirt.LibvirtDriver
#compute_driver=nova.virt.ironic.IronicDriver

libvirt.LibvirtDriver を使用すると正しく認識されました。

HorizonでVM のコンソールが表示されない

compute ノードを見てみると、コンソール接続用にListenしてるはずのポートが、"127.0.0.1"で Listen していたので、関連しそうなnova.confの項目を変更。

# IP address on which instance vncservers should listen
# (string value)
vncserver_listen=0.0.0.0

さらに、controller ノードでnovncのログを見てみると、"compute0" という名前でアクセスしに行っていて、名前解決を行えずエラーになっているみたいだったので、"/etc/hosts" に直書きで名前解決。

この2点でコンソールには接続できるようになりました。

感想

やっと、色々実験出来る環境が整いました...

Rally で OpenStack のベンチマークを取る

openstack メモ

Rally

OpenStack のベンチマークを取ってくれるツール。ドキュメントの図を見ると以下の事が出来るらしい。

  • Deploy
    • Rally を使って OpenStack をデプロイ出来る。もちろん既存の環境を使用することも可能。
  • Verify
    • OpenStack 公式のテストツール tempest を使って OpenStack 環境をテストする。
  • Benchmark
  • Generate Report
    • グラフィカルなレポートを作成可能。

インストール

ドキュメントのInstallationを参照のこと。基本的には以下でインストール可能。

$ wget -q -O- https://raw.githubusercontent.com/openstack/rally/master/install_rally.sh | bash

既存 OpenStack 環境の登録

python の virtualenv 環境でインストールされるので、以下のコマンドを実行して環境を有効にする。

$ . ~/rally/bin/activate

現在の OpenStack 環境を Rally に登録する。ここでは、後のベンチマーク取得で既存ユーザーを使用するため、以下のような json ファイルを使用して環境を登録する。

{
    "type": "ExistingCloud",
    "auth_url": "http://example.net:5000/v2.0/",
    "region_name": "RegionOne",
    "endpoint_type": "public",
    "admin": {
        "username": "admin",
        "password": "pa55word",
        "tenant_name": "demo"
    },
    "users": [
        {
            "username": "b1",
            "password": "1234",
            "tenant_name": "testing"
        },
        {
            "username": "b2",
            "password": "1234",
            "tenant_name": "testing"
        }
    ]
}
$ rally deployment create --file ./existing_cloud.json --name home_cloud

これで、登録完了。

ベンチマーク取得

サンプルで用意されているシナリオファイルを使用してベンチマークを取る。以下の様なサンプルファイルが用意されている。

{
    "NovaServers.boot_and_delete_server": [
        {
            "args": {
                "flavor": {
                    "name": "m1.tiny"
                },
                "image": {
                    "name": "^cirros.*uec$"
                },
                "force_delete": false
            },
            "runner": {
                "type": "constant",
                "times": 10,
                "concurrency": 2
            },
            "context": {
                "users": {
                    "tenants": 3,
                    "users_per_tenant": 2
                }
            }
        }
    ]
}

今回は既存ユーザーを使用してベンチマークを取るため、"context" 部分の "users" を削除する。 (デフォルトのサンプルのままだと、テナントの作成とユーザーの作成も行うみたい。。)

{
    "NovaServers.boot_and_delete_server": [
        {
            "args": {
                "flavor": {
                    "name": "m1.tiny"
                },
                "image": {
                    "name": "^cirros.*uec$"
                },
                "force_delete": false
            },
            "runner": {
                "type": "constant",
                "times": 10,
                "concurrency": 2
            },
            "context": {
            }
        }
    ]
}

このファイルを使用してベンチマークを取得する。

$ rally task start ./boot-and-delete.json

$ rally task start ./boot-and-delete.json
--------------------------------------------------------------------------------
 Preparing input task
--------------------------------------------------------------------------------

Input task is:

{
    "NovaServers.boot_and_delete_server": [
        {
            "args": {
                "flavor": {
                    "name": "m1.tiny"
                },
                "image": {
                    "name": "cirros"
                },
                "force_delete": false
            },
            "runner": {
                "type": "constant",
                "times": 10,
                "concurrency": 2
            },
            "context": {
            }
        }
    ]
}

--------------------------------------------------------------------------------
 Task  98241e54-4323-43fa-ad7a-a7cfaad34152: started
--------------------------------------------------------------------------------

Benchmarking... This can take a while...

To track task status use:

        rally task status
        or
        rally task detailed

Using task: 98241e54-4323-43fa-ad7a-a7cfaad34152
2015-08-31 14:30:36.466 2612 INFO rally.api [-] Benchmark Task 98241e54-4323-43fa-ad7a-a7cfaad34152 on Deployment 422e2e8e-5856-4b53-ba5d-aea068490bc2
2015-08-31 14:30:36.467 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Starting:  Task validation.
2015-08-31 14:30:36.482 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Starting:  Task validation of scenarios names.
2015-08-31 14:30:36.485 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Completed: Task validation of scenarios names.
2015-08-31 14:30:36.486 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Starting:  Task validation of syntax.
2015-08-31 14:30:36.491 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Completed: Task validation of syntax.
2015-08-31 14:30:36.492 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Starting:  Task validation of semantic.
2015-08-31 14:30:36.493 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Starting:  Task validation check cloud.
2015-08-31 14:30:36.794 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Completed: Task validation check cloud.
2015-08-31 14:30:36.804 2612 INFO rally.plugins.openstack.context.keystone.existing_users [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Starting:  Enter context: `existing_users`
2015-08-31 14:30:36.955 2612 INFO rally.plugins.openstack.context.keystone.existing_users [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Completed: Enter context: `existing_users`
2015-08-31 14:30:37.471 2612 INFO rally.plugins.openstack.context.keystone.existing_users [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Starting:  Exit context: `existing_users`
2015-08-31 14:30:37.472 2612 INFO rally.plugins.openstack.context.keystone.existing_users [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Completed: Exit context: `existing_users`
2015-08-31 14:30:37.473 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Completed: Task validation of semantic.
2015-08-31 14:30:37.474 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Completed: Task validation.
2015-08-31 14:30:37.475 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Starting:  Benchmarking.
2015-08-31 14:30:37.487 2612 INFO rally.task.engine [-] Running benchmark with key:
{
  "kw": {
    "runner": {
      "type": "constant",
      "concurrency": 2,
      "times": 10
    },
    "args": {
      "force_delete": false,
      "flavor": {
        "name": "m1.tiny"
      },
      "image": {
        "name": "cirros"
      }
    },
    "context": {}
  },
  "name": "NovaServers.boot_and_delete_server",
  "pos": 0
}
2015-08-31 14:30:37.496 2612 INFO rally.plugins.openstack.context.keystone.existing_users [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Starting:  Enter context: `existing_users`
2015-08-31 14:30:37.645 2612 INFO rally.plugins.openstack.context.keystone.existing_users [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Completed: Enter context: `existing_users`
2015-08-31 14:30:38.012 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 0 START
2015-08-31 14:30:38.016 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 1 START
2015-08-31 14:31:06.429 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 0 END: OK
2015-08-31 14:31:06.440 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 2 START
2015-08-31 14:31:14.151 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 1 END: OK
2015-08-31 14:31:14.157 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 3 START
2015-08-31 14:31:28.191 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 2 END: OK
2015-08-31 14:31:28.195 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 4 START
2015-08-31 14:31:37.357 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 3 END: OK
2015-08-31 14:31:37.363 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 5 START
2015-08-31 14:31:50.829 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 4 END: OK
2015-08-31 14:31:50.838 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 6 START
2015-08-31 14:31:57.941 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 5 END: OK
2015-08-31 14:31:57.947 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 7 START
2015-08-31 14:32:12.279 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 6 END: OK
2015-08-31 14:32:12.285 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 8 START
2015-08-31 14:32:19.989 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 7 END: OK
2015-08-31 14:32:19.995 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 9 START
2015-08-31 14:32:35.312 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 8 END: OK
2015-08-31 14:32:39.725 2620 INFO rally.task.runner [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | ITER: 9 END: OK
2015-08-31 14:32:39.734 2612 INFO rally.plugins.openstack.context.cleanup.context [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Starting:  user resources cleanup
2015-08-31 14:32:40.758 2612 INFO rally.plugins.openstack.context.cleanup.context [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Completed: user resources cleanup
2015-08-31 14:32:40.759 2612 INFO rally.plugins.openstack.context.keystone.existing_users [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Starting:  Exit context: `existing_users`
2015-08-31 14:32:40.760 2612 INFO rally.plugins.openstack.context.keystone.existing_users [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Completed: Exit context: `existing_users`
2015-08-31 14:32:40.862 2612 INFO rally.task.engine [-] Task 98241e54-4323-43fa-ad7a-a7cfaad34152 | Completed: Benchmarking.

--------------------------------------------------------------------------------
Task 98241e54-4323-43fa-ad7a-a7cfaad34152: finished
--------------------------------------------------------------------------------

test scenario NovaServers.boot_and_delete_server
args position 0
args values:
{
  "runner": {
    "type": "constant",
    "concurrency": 2,
    "times": 10
  },
  "args": {
    "force_delete": false,
    "flavor": {
      "name": "m1.tiny"
    },
    "image": {
      "name": "cirros"
    }
  },
  "context": {}
}
+--------------------------------------------------------------------------------------------+
|                                    Response Times (sec)                                    |
+--------------------+--------+--------+--------+--------+--------+--------+---------+-------+
| action             | min    | median | 90%ile | 95%ile | max    | avg    | success | count |
+--------------------+--------+--------+--------+--------+--------+--------+---------+-------+
| nova.boot_server   | 17.132 | 18.931 | 26.374 | 29.873 | 33.373 | 20.841 | 100.0%  | 10    |
| nova.delete_server | 2.597  | 2.742  | 3.589  | 4.278  | 4.968  | 3.053  | 100.0%  | 10    |
| total              | 19.729 | 22.336 | 29.186 | 32.66  | 36.134 | 23.894 | 100.0%  | 10    |
+--------------------+--------+--------+--------+--------+--------+--------+---------+-------+
Load duration: 121.739664793
Full duration: 123.26568222

HINTS:
* To plot HTML graphics with this data, run:
        rally task report 98241e54-4323-43fa-ad7a-a7cfaad34152 --out output.html

* To generate a JUnit report, run:
        rally task report 98241e54-4323-43fa-ad7a-a7cfaad34152 --junit --out output.xml

* To get raw JSON output of task results, run:
        rally task results 98241e54-4323-43fa-ad7a-a7cfaad34152

ベンチマークの結果を html ファイルで取得して、表示してみます。

$ rally task report 98241e54-4323-43fa-ad7a-a7cfaad34152 --out output.html

f:id:ryouta768:20150901000121p:plain

f:id:ryouta768:20150901000140p:plain

・・・

本当は ベンチマークではなくテストを行いたかったので、次回は Rally を使ったテストに挑戦してみます。