• 検索結果がありません。

JOSUG 第 5 回勉強会 KeystoneClient ライブラリ 日本 OpenStack ユーザ会 吉山晃 1

N/A
N/A
Protected

Academic year: 2021

シェア "JOSUG 第 5 回勉強会 KeystoneClient ライブラリ 日本 OpenStack ユーザ会 吉山晃 1"

Copied!
15
0
0

読み込み中.... (全文を見る)

全文

(1)

JOSUG 第 5 回勉強会

KeystoneClient

ライブラリ

日本 OpenStack ユーザ会

(2)

OpenStack のクライアントライブラリ

python-novaclient 2012.1

python-keystoneclient 2012.1

python-quantumclient 2012.1

python-swiftclient (開発中)

python-glanceclient (開発中)

今日は python-keystoneclient

(3)

Keystone 認証( nova の場合)

Keystone Service API Admin API Nova OpenStack API Keystone Middleware 他の Middleware W S G I パ イ プ ラ イ ン ① アカウント・ パスワード認証要求 ← エンドポイント、  トークン情報 ② トークン付き nova 操作要求 5000/TCP 35357/TCP

(4)

Keystone 自体の認証

Keystone Service API Admin API ① アカウント・  パスワード  認証要求    ↓  エンドポイント、  トークン情報 ② トークン付き   keystone  操作要求 5000/TCP 35357/TCP

(5)

keystoneclient の使い方①

from keystoneclient.v2_0 import client

1.keystoneclient をインポート

2.コントロール用インスタンスの作成

Service API からの作成

Admin API からの作成

keystone = client.Client( endpoint=ENDPOINT, token=TOKEN) keystone = client.Client( username=USER, password=PASS, tenant_name=TENANT_NAME, tenant_name=KEYSTONE_URL)

(6)

keystoneclient の使い方②

操作対象

コード例

テナント

keystone.tenants.list()

ユーザ

keystone.users.list()

ロール

keystone.roles.list()

エンドポイント

keystone.endpoints.list()

トークン

keystone.tokens.list()

(7)

keystoneclient の使い方③

操作種別

コード例

作成

keystone.tenants.create()

一覧

keystone.tenants.list()

詳細取得

keystone.tenants.get()

更新

keystone.tenants.update()

削除

keystone.tenants.delete()

(8)

サンプルプログラム

YAML 形式のデータを読み込み、

ロール

テナント

ユーザ

サービス

エンドポイント

を自動的に登録する

(9)

サンプルデータ (YAML)

roles: - name: admin - name: memberRole tenants: - name: service

desc: Service Tenant users: - name: nova tenant_roles: - tenant: service role: admin services: - name: nova type: compute

desc: Nova Compute Service urls:

- region: RegionOne

public: http://localhost:8774/v2/$(tenant_id)s internal: http://localhost:8774/v2/$(tenant_id)s admin: http://localhost:8774/v2/$(tenant_id)s

(10)

サンプルプログラム

# keystoneclient ライブラリをインポート

from keystoneclient.v2_0 import client # YAML ライブラリをインポート import yaml # 前スライドの YAML データを Python の辞書型データとしてロード fixture = yaml.load(open(“fixture.yaml”).read()) # keystoneclient インスタンスを作成 keystone = client.Client( endpoint=endpoint, token=token)

(11)

サンプルプログラム(続き)

# ロールデータのインポート roles = {}

for _role in fixtures.get('roles'): name = _role['name']

# create() の戻り値(辞書)を roles[] に保存

roles[name] = keystone.roles.create(name) # テナントデータのインポート

tenants = {}

for _tenant in fixtures.get('tenants'): name = _tenant['name']

# create() の戻り値(辞書)を tenants[] に保存 tenants[name] = keystone.tenants.create( name,

(12)

サンプルプログラム(続き)

# ユーザデータのインポート users = {}

for _user in fixtures.get('users'): name = _user['name'] primary_tenant = tenants.get( _user['tenant_roles'][0]['tenant']) # create() の戻り値(辞書)を tenants[] に保存 users[name] = keystone.users.create( name, _user.get('pass'), _user.get('email'), tenant_id=primary_tenant.id) # ユーザのテナント毎のロールを登録

for tenant_role in _user['tenant_roles']: role_name = tenant_role['role']

(13)

サンプルプログラム(続き)

# サービスデータのインポート services = {}

for service in fixtures.get('services'): name = service['name']

services[name] = keystone.services.create(         name,

service['type'],

service.get('desc', "")) for url in service['urls']:

keystone.endpoints.create( url['region'], services[name].id, url['public'], url['admin'], url['internal'])

(14)

まとめ

keystoneclient は便利

API は整理されており使いやすい

< クライアントインスタンス >.< クラス >.create() の

戻り値に登録されたエントリの UUID が含まれる

→サンプルプログラムを応用すれば、

 各種データを自動的に登録可能

Keystone の RESTful API に変更があっても

(15)

参照

関連したドキュメント

第4章 依頼データの作成 承認 明細照会 組戻し・訂正・再振込 振込依頼データの 資金返却済 振込不着明細の照会と

2.本サービスの会費の支払い時に、JAF

本番前日、師匠と今回で卒業するリーダーにみん なで手紙を書き、 自分の思いを伝えた。

えて リア 会を設 したのです そして、 リア で 会を開 して、そこに 者を 込 ような仕 けをしました そして 会を必 開 して、オブザーバーにも必 の けをし ます

・2月16日に第230回政策委員会を開催し、幅広い意見を取り入れて、委員会の更なる

会議名 第1回 低炭素・循環部会 第1回 自然共生部会 第1回 くらし・環境経営部会 第2回 低炭素・循環部会 第2回 自然共生部会 第2回

2030年カーボンハーフを目指すこととしております。本年5月、当審議会に環境基本計画の

基準地震動 Ss-1~7 の全てについて、許容変位を上回る結果を得た 西山層以深の地盤データは近接する1号炉原子炉建屋下のデータであった 2014 年 11