2015 0807 conoha i am the bone of the openstack api cli tool

34
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. OSC Kyoto/Kansai 2015/08/06 OSC Nagoya 2015/05/23 LT: 新しい「ConoHa」での OpenStack python client extension をつくってみた GMOインターネット株式会社 エンジニア 郷古 直仁

Upload: naoto-gohko

Post on 16-Aug-2015

83 views

Category:

Engineering


0 download

TRANSCRIPT

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.

OSC Kyoto/Kansai 2015/08/06OSC Nagoya 2015/05/23

LT: 新しい「ConoHa」でのOpenStack python client extension をつくってみた

GMOインターネット株式会社エンジニア郷古 直仁

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.

LT: 俺の新しい「ConoHa」リリース後に作ったOpenStack python client extension の作り方が間違っている

GMOインターネット株式会社エンジニア郷古 直仁

OSC Kyoto/Kansai 2015/08/06OSC Nagoya 2015/05/23

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.

自己紹介• 郷古直仁(@naoto_gohko)

• 所属:GMOインターネット システム本部第二サービス開発部 オープンコンピューティングチーム

• ConoHaサービスの開発運用、GMOアプリクラウドのサービスの開発運用、お名前.com VPS KVMの運用など、クラウド系サービスのお仕事、OpenStack関係

• なんとなく、10年くらいぶりの名古屋です

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 4

はじめにConoHa cloud2015/05/18(Mon)OpenStack summit Vancouver開催の日、リニューアルした新しいConoHaをリリースさせていただきました

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 5

ぱちぱち

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 6

ログイン画面

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 7

このはモードも健在(若干大人っぽい?)

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 8

このは夏モードに更新(座敷わらしっぽい?)

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 9

一番の肝は自分的には

- OpenStack (Juno) API の公開(+RESTful with keystone auth [DB hosting API, Mail hosting API])

になります

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 10

APIドキュメントは以下

https://www.conoha.jp/docs/

になります

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 11

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 12

今回のテーマであるOpenStack python client extensionですが、なぜextension (機能拡張)が必要なのかということになります。

Nova boot (vm create)に焦点を当てて解説します。

OpenStack Compute(nova) API;http://developer.openstack.org/api-ref-compute-v2.html

ConoHa Compute API;https://www.conoha.jp/docs/compute-create_vm.html

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 13

JSON request body; ConoHaのみ “adminPass” がある>> ここがextensionな部分

{ "server": { "imageRef": "1f7bcc63-4a18-4371-85b1-bcdd4301ff31", "flavorRef": "nc1g", "adminPass":"72LY2hf38Kf84vCy4sUr", # << ここを使う"key_name": "mikumo-conoha-key-01”, "security_groups": [

{ "name": "default" }, { "name": "another-secgroup-name" }

] }

}

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 14

JSON request bodyの拡張>> 通常の python-novaclientは対応していない

>> novaclientなどpython clientを拡張する機能によりJSON attributeをrequest bodyに追加する

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 15

novaclient機能拡張について学習

>> pypi (python package index)にて検索>> https://pypi.python.org/>> >> novaclientだけ検索しても、結構出てくる

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 16

Nova boot JSON request bodyの拡張>> 検索結果、以下を見つけた

nova boot時にDiskConfigというattributeを設定可能にするextだった (rackspace作成、disk partitionを設定したりする)

https://pypi.python.org/pypi/os_diskconfig_python_novaclient_ext/0.1.2

>> これを元にして、改造、作成する>> ここが、サブタイトルの所以であるww

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 17

以下、githubにupしたextensionをみていきましょう

https://github.com/naototty/conoha_boot_adminpass_python_novaclient_ext

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 18

以下、githubにupしたextensionをみていきましょう

https://github.com/naototty/conoha_boot_adminpass_python_novaclient_ext

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 19

https://github.com/naototty/conoha_boot_adminpass_python_novaclient_ext

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 20

https://github.com/naototty/conoha_boot_adminpass_python_novaclient_ext

setup.py

以下、pipとかでセットアップ用: novaclient が 拡張機能なので、require

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 21

https://github.com/naototty/conoha_boot_adminpass_python_novaclient_ext

*-egg-info/requires.txt

以下、pipとかでセットアップ用: egg dir novaclient が 拡張機能なので、require Pythonのlibrary loaderが見ます

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 22

https://github.com/naototty/conoha_boot_adminpass_python_novaclient_ext

os_adminpass_python_novaclient_ext /

本体のプログラムは今回はこれだけ: __init__.py ライブラリdirに1ファイルだけ !!

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 23

https://github.com/naototty/conoha_boot_adminpass_python_novaclient_ext

os_adminpass_python_novaclient_ext / __init__.py

githubを直接みますhttps://github.com/naototty/conoha_boot_adminpass_python_novaclient_ext/blob/master/os_adminpass_python_novaclient_ext/__init__.py

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 24

では、Demo

- extなしの場合、nova bootではパスワードが指定できない>> ConoHaでは、auto generate passwordがcloud-initで設定される (response JSONでnova boot時に取得)

- extインストール(github)

- extありの場合、“--admin-password <pw>”と指定できる

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 25

インストール前はnovaclientのみ入ってます pip freezeコマンドで確認 (ここでは、Mac OS X環境)

インストール前後のnova client CLIの動作の違いDEMO

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 26

ソースのdir確認:

インストール前後のnova client CLIの動作の違いDEMO

Pythonのライブラリパッケージ関係のファイルがほとんど

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 27

ライブラリのdir 中身確認:

インストール前後のnova client CLIの動作の違いDEMO

Pythonのライブラリの中に __init__.py ファイルが1個だけ

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 28

インストール: sudo python setup install

インストール前後のnova client CLIの動作の違いDEMO

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 29

インストール (2): sudo python setup install

インストール前後のnova client CLIの動作の違いDEMO

os-adminpass-python-novaclient-ext という名前でインストールされました

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 30

インストール後にnovaclient-extも入っていることを確認 pip freezeコマンドで確認 (Mac OS X環境)

インストール前後のnova client CLIの動作の違いDEMO

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved. 31

インストール後、コマンドオプションが増えています

インストール前後のnova client CLIの動作の違いDEMO

1行目に機能拡張によって、オプションが増えました

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.

解りづらい~_~;

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.

このようにして、Python の novaclient に機能拡張して、コマンドを追加したり、オプションを追加したりできます

Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.

明日はConoHaブース 4Fにあります弊社エバ、ひろのぶさんの講座が1号館4FAV会議室 15:15 ‒ 16:00

「新しくなったクラウドプラットフォームConoHaを使ってみよう」にあります。よろしくお願いします