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インターネット株式会社
エンジニア
郷古 直仁
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
LT: 俺の新しい「ConoHa」リリース後に作った
OpenStack python client extension
の作り方が間違っている
GMOインターネット株式会社
エンジニア
郷古 直仁
OSC Kyoto/Kansai 2015/08/06
OSC Nagoya 2015/05/23
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
自己紹介
• 郷古直仁(@naoto_gohko)
• 所属:GMOインターネット システム本部
第二サービス開発部 オープンコンピューティングチー
ム
• ConoHaサービスの開発運用、
GMOアプリクラウドのサービスの開発運用、
お名前.com VPS KVMの運用など、
クラウド系サービスのお仕事、
OpenStack関係
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
4
はじめに
ConoHa cloud
2015/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.
1
APIドキュメントは以下
https://www.conoha.jp/docs/
になります
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
1
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
1
今回のテーマである
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.
1
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.
1
JSON request bodyの拡張
>> 通常の python-novaclientは対応していない
>> novaclientなどpython clientを拡張する機能により
JSON attributeをrequest bodyに追加する
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
1
novaclient機能拡張について学習
>> pypi (python package index)にて検索
>> https://pypi.python.org/
>> >> novaclientだけ検索しても、結構出てくる
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
1
Nova boot JSON request bodyの拡張
>> 検索結果、以下を見つけた
nova boot時にDiskConfigというattributeを設定可
能にするextだった (rackspace作成、disk partition
を設定したりする)
https://pypi.python.org/pypi/os_diskconfig_p
ython_novaclient_ext/0.1.2
>> これを元にして、改造、作成する
>> ここが、サブタイトルの所以であるww
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
1
以下、githubにupしたextensionを
みていきましょう
https://github.com/naototty/
conoha_boot_adminpass_python_novaclie
nt_ext
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
1
https://github.com/naototty/
conoha_boot_adminpass_python_novaclient_ext
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
1
https://github.com/naototty/
conoha_boot_adminpass_python_novaclient_ext
setup.py
以下、pipとかでセットアップ用:
novaclient が 拡張機能なので、require
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
2
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.
2
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.
2
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_pyth
on_novaclient_ext/blob/master/os_adminpass_python_nov
aclient_ext/__init__.py
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
2
では、Demo
- extなしの場合、nova bootではパスワードが指定でき
ない
>> ConoHaでは、auto generate passwordがclou
d-initで設定される
(response JSONでnova boot時に取得)
- extインストール(github)
- extありの場合、 --admin-password <pw> と指定
できる
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
2
インストール前はnovaclientのみ入ってます
pip freezeコマンドで確認
(ここでは、Mac OS X環境)
インストール前後のnova client CLIの動作の違いDEMO
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
2
ソースのdir確認:
インストール前後のnova client CLIの動作の違いDEMO
Pythonのライブラリパッケージ関係のファイルがほとんど
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
2
ライブラリのdir 中身確認:
インストール前後のnova client CLIの動作の違いDEMO
Pythonのライブラリの中に
__init__.py
ファイルが1個だけ
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
2
インストール: sudo python setup install
インストール前後のnova client CLIの動作の違いDEMO
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
2
インストール (2): sudo python setup install
インストール前後のnova client CLIの動作の違いDEMO
os-adminpass-python-novaclient-ext
という名前でインストールされました
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
2
インストール後にnovaclient-extも入っていることを確認
pip freezeコマンドで確認
(Mac OS X環境)
インストール前後のnova client CLIの動作の違いDEMO
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
3
インストール後、コマンドオプションが増えています
インストール前後のnova client CLIの動作の違いDEMO
1行目に機能拡張によって、オプションが増えました
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
解りづらい _ ;
ですが、これでnovaclientでも、
web panelと同様に、
root passwordを指定できるよ
うになります
(cloudinitで自動設定されます)
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
このようにして、
Python の novaclient に
機能拡張して、
コマンドを追加したり、
オプションを
追加したりできます
Copyright (c) 2014 GMO Internet, Inc. All Rights Reserved.
明日はConoHaブース 4Fにあります
弊社エバ、ひろのぶさんの講座が
1号館4F
AV会議室 15:15 ‒ 16:00
「新しくなったクラウドプラットフォーム
ConoHaを使ってみよう」
にあります。よろしくお願いします

2015 0807 ConoHa I am the bone of the OpenStack API CLI tool

  • 1.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. OSC Kyoto/Kansai 2015/08/06 OSC Nagoya 2015/05/23 LT: 新しい「ConoHa」での OpenStack python client extension をつくってみた GMOインターネット株式会社 エンジニア 郷古 直仁
  • 2.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. LT: 俺の新しい「ConoHa」リリース後に作った OpenStack python client extension の作り方が間違っている GMOインターネット株式会社 エンジニア 郷古 直仁 OSC Kyoto/Kansai 2015/08/06 OSC Nagoya 2015/05/23
  • 3.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 自己紹介 • 郷古直仁(@naoto_gohko) • 所属:GMOインターネット システム本部 第二サービス開発部 オープンコンピューティングチー ム • ConoHaサービスの開発運用、 GMOアプリクラウドのサービスの開発運用、 お名前.com VPS KVMの運用など、 クラウド系サービスのお仕事、 OpenStack関係
  • 4.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 4 はじめに ConoHa cloud 2015/05/18(Mon) OpenStack summit Vancouver開催 の日、リニューアルした新しいConoHaを リリースさせていただきました
  • 5.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 5 ぱちぱち
  • 6.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 6 ログイン画面
  • 7.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 7 このはモードも健在 (若干大人っぽい?)
  • 8.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 8 このは夏モードに更新 (座敷わらしっぽい?)
  • 9.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 9 一番の肝は自分的には - OpenStack (Juno) API の公開 (+RESTful with keystone auth [ DB hosting API, Mail hosting API] ) になります
  • 10.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 1 APIドキュメントは以下 https://www.conoha.jp/docs/ になります
  • 11.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 1
  • 12.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 1 今回のテーマである 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
  • 13.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 1 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" } ] } }
  • 14.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 1 JSON request bodyの拡張 >> 通常の python-novaclientは対応していない >> novaclientなどpython clientを拡張する機能により JSON attributeをrequest bodyに追加する
  • 15.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 1 novaclient機能拡張について学習 >> pypi (python package index)にて検索 >> https://pypi.python.org/ >> >> novaclientだけ検索しても、結構出てくる
  • 16.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 1 Nova boot JSON request bodyの拡張 >> 検索結果、以下を見つけた nova boot時にDiskConfigというattributeを設定可 能にするextだった (rackspace作成、disk partition を設定したりする) https://pypi.python.org/pypi/os_diskconfig_p ython_novaclient_ext/0.1.2 >> これを元にして、改造、作成する >> ここが、サブタイトルの所以であるww
  • 17.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 1 以下、githubにupしたextensionを みていきましょう https://github.com/naototty/ conoha_boot_adminpass_python_novaclie nt_ext
  • 18.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 1 https://github.com/naototty/ conoha_boot_adminpass_python_novaclient_ext
  • 19.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 1 https://github.com/naototty/ conoha_boot_adminpass_python_novaclient_ext setup.py 以下、pipとかでセットアップ用: novaclient が 拡張機能なので、require
  • 20.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 2 https://github.com/naototty/ conoha_boot_adminpass_python_novaclient_ext *-egg-info/requires.txt 以下、pipとかでセットアップ用: egg dir novaclient が 拡張機能なので、require Pythonのlibrary loaderが見ます
  • 21.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 2 https://github.com/naototty/ conoha_boot_adminpass_python_novaclient_ext os_adminpass_python_novaclient_ext / 本体のプログラムは今回はこれだけ: __init__.py ライブラリdirに1ファイルだけ !!
  • 22.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 2 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_pyth on_novaclient_ext/blob/master/os_adminpass_python_nov aclient_ext/__init__.py
  • 23.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 2 では、Demo - extなしの場合、nova bootではパスワードが指定でき ない >> ConoHaでは、auto generate passwordがclou d-initで設定される (response JSONでnova boot時に取得) - extインストール(github) - extありの場合、 --admin-password <pw> と指定 できる
  • 24.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 2 インストール前はnovaclientのみ入ってます pip freezeコマンドで確認 (ここでは、Mac OS X環境) インストール前後のnova client CLIの動作の違いDEMO
  • 25.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 2 ソースのdir確認: インストール前後のnova client CLIの動作の違いDEMO Pythonのライブラリパッケージ関係のファイルがほとんど
  • 26.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 2 ライブラリのdir 中身確認: インストール前後のnova client CLIの動作の違いDEMO Pythonのライブラリの中に __init__.py ファイルが1個だけ
  • 27.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 2 インストール: sudo python setup install インストール前後のnova client CLIの動作の違いDEMO
  • 28.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 2 インストール (2): sudo python setup install インストール前後のnova client CLIの動作の違いDEMO os-adminpass-python-novaclient-ext という名前でインストールされました
  • 29.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 2 インストール後にnovaclient-extも入っていることを確認 pip freezeコマンドで確認 (Mac OS X環境) インストール前後のnova client CLIの動作の違いDEMO
  • 30.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 3 インストール後、コマンドオプションが増えています インストール前後のnova client CLIの動作の違いDEMO 1行目に機能拡張によって、オプションが増えました
  • 31.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 解りづらい _ ; ですが、これでnovaclientでも、 web panelと同様に、 root passwordを指定できるよ うになります (cloudinitで自動設定されます)
  • 32.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. このようにして、 Python の novaclient に 機能拡張して、 コマンドを追加したり、 オプションを 追加したりできます
  • 33.
    Copyright (c) 2014GMO Internet, Inc. All Rights Reserved. 明日はConoHaブース 4Fにあります 弊社エバ、ひろのぶさんの講座が 1号館4F AV会議室 15:15 ‒ 16:00 「新しくなったクラウドプラットフォーム ConoHaを使ってみよう」 にあります。よろしくお願いします