OpenStack

2016年12月22日

OpenStack アドベントカレンダー22日目のエントリとなります。

申込んだのはいいけどネタはない。
だがネタができるのを待っていたらいつまでも書けない。
そう思って後追いでネタを考えようとしてましたが
ポケモンサンムーンポケモンGOとFateGrand Orderと
遊戯王デュエルリンクスとシャドウバースに追われる日々で
何のネタも!浮かびませんでした!!

OpenStack擬人化?
あれから1年経ってるけど何もしてないです!!!
多分今後もやりません!!!!!

鉄板の鰻ネタ?書く前にまず、鰻が食べたいです。

阿部さんネタ?それはアッードベントカレンダーですね。


…とまぁ最悪ネタに走ってしまおうと思ってましたが
特に面白いことは浮かばなかったので
超初心者でも書けるネタにします。


本題:OpenStack APIを使おう

というわけでAPIの使い方でも触れてお茶を濁します。 http://developer.openstack.org/ja/api-guide/quick-start/ この辺見ればとりあえず載ってるよ。 以上終了。 冗談はおいておいて、もうちょっとちゃんと扱います。 python-openstackclientをインストールして openstackって打ったあと helpとか実行すれば使い方出てくるよ! 以上終(略) …なんですが、クライアントのインストールが面倒というケースが多々あると思います。
  • CentOS6とかだとまずpython2.7を入れるのが大変
  • 手間はかけてもいいけど、ライブラリを汚したくない
  • 勝手にclientを入れられない共有サーバだけどAPI疎通テストしたい
  • そんな事より鰻が食べたい
などなど、python-xxxxxclientでは対応できないケースもあります。 そんなわけで今回はcurlとjqを使った方法にします。 jqを入れられないケースはあるかもしれませんが、所詮パーサなのでそこは違う手段で頑張って、どうぞ 人間が読んで解釈する、いわばお前がパーサになるんだよ!!でも良いかと思います。

OpenStack APIをcurlで使うサンプル

大雑把な前提知識
  • OpenStackはREST APIを使っていてhttpベースで操作できる
  • 認証情報は直接リクエストに入れず、認証時に発行されたトークンをヘッダに入れる
という理由で、まずはトークンの取得が必要になります。

トークンの取得

  1. 認証情報の入ったリクエストデータをサーバに送る
  2. サーバからのレスポンスの中にトークンがあるので以後の処理で使用する
1のためのサンプルを載せます。 Identity API v2だとレスポンスデータ(json)の中にtokenが入っていますが Identity API v3からはHTTPヘッダに含まれます。 Identity API v2は既に非推奨なのでここではv3用の例となります。 tokenの取得方法は何パターンかあるようですが Projectを明記しているscopedのリクエストになります。 参考:identity API v3 API Examples using Curl もう全部公式のドキュメントでいいんじゃないかな
# OS_AUTH_URL=http://identityhost:port/v3 # curl -i -k -X POST $OS_AUTH_URL/auth/tokens \ -H "Content-Type: application/json" -d '{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "$username", "password": "$password", "domain": { "id": "default" } } } }, "scope": { "project": { "name": "$project", "domain": { "id": "default" } } } } }'
($username, $password, $projectはそれぞれ自分のものに読み替えてください) tokenデータがHTTPヘッダに入る関係上、-iオプションを付けているのと 独自CA局でのHTTPSな場合もあるので-kオプションも入れてます。 レスポンスデータに、サービスカタログの情報もあるため 一時ファイルに保存して、必要なものを取り出すという作りにしても良いでしょう。 パースの際にjqが役立ちます。 TOKENデータは
X-Subject-Token: xxxxxx
として設定されているため
TOKEN=xxxxxx
みたいにシェルの変数に設定することでその後の処理に使いやすくできます。

トークンを使った処理とjqでのパース

トークンはX-Auth-TokenというHTTPヘッダに設定して使う取り決めになっているので
curl -k -H "X-Auth-Token: $TOKEN" "http://host:port/お目当てのpath"
のように実行していきます。 ここではjqのサンプルを兼ねてその後の処理に必要な、swiftのpublic URLの取得を行います。 (token取得時に取れるかもしれないけど、まぁ…)
curl -k -H "X-Auth-Token: $TOKEN" "$OS_AUTH_URL/auth/catalog" \ | jq ."catalog" | jq 'map(select(.["name"] == "swift"))' | jq .[]."endpoints" \ | jq 'map(select(.["interface"] == "public"))' | jq .[]."url"
Jqについてはjqコマンドが便利な件を参考にさせていただきました。 jq .[]."endpoints" のようにしてjsonの階層を絞り込み jq 'map(select(.["interface"] == "public"))' のようにして条件に合致するものを取り出します。 あとはObject Storage APIのリファレンスを見て お目当てのURLに好きなリクエストを送るだけです。 上記のjqパースでは
"http://object-storagehost:port/v1/AUTH_xxxxxxxxx"
というような形で /v1/{account} までが補完された状態で取得できます。 その後の処理に使いやすいように以下のように設定します。
OBJECT_STORAGE_URL="http://object-storagehost:port/v1/AUTH_xxxxxxxxx"

swift API利用サンプル

コンテナ一覧は GET /v1/{account} で取得できるので以下のようにします。
curl -k -H "X-Auth-Token: $TOKEN" "$OBJECT_STORAGE_URL"
コンテナ内のオブジェクト一覧だと GET /v1/{account}/{container} なので以下のようにし
curl -k -H "X-Auth-Token: $TOKEN" "$OBJECT_STORAGE_URL/$container
オブジェクトの取得だと GET /v1/{account}/{container}/{object} なので以下。
curl -k -H "X-Auth-Token: $TOKEN" "$OBJECT_STORAGE_URL/$container"/$object
(オブジェクトの内容が標準出力に表示されるので ファイルとして保存するにはcurlのオプションやリダイレクトを使う。)

結論

APIリファレンスからリクエストに必要な情報を調べ、レスポンスデータのjsonの構造を見て 必要な情報を取り出して…と、中々地道な作業が必要になります。 鰻が食べたくなりますね APIパラメータを調べたり、jqでパースしたりしなくても使えるpython-xxxxclientっていいね!


nanodayo at 11:12コメント(0)トラックバック(0) 

2016年04月07日

例によってhidvさんが更新したので

こちらも更新することにしました。

宣言通り、今回もネタをパクって
勉強と英語についてのテーマとなります。

英語は間違いなく必要ですよね。

なぜなら日本は技術者の待遇がすごく悪い
海外はすごく良いらしいですね!

英語読めないせいで低待遇で働き続けるとかありえない。
もぅマヂ無理…移住しよ

移住まで行かずとも、技術情報はだいたい英語だし
英語が出来ないとOpenStack Summitとかでも困ると思います。

一応私のスペック…英検3級

中学生程度の英語能力。
高校からは中学生レベルを超えた英語に触れていません。

このどこにでもいるようなスペックの底辺エンジニアが、

どうすれば目的(英語で話す・読み書き)を短期間で達成できるか考えました。

  1. 英語に触れる


  2. 目についたのがこちらです。

    北米版アニメで英語力アップできる「かも」しれない

    そう、英語版のアニメを見れば良いのです。
    メリットはリンク先に書かれている通りです。

  3. 英語が必要な作業をする


  4. 業務で必要な英語力を身に着けたければ
    英語力が必要な業務をすれば良い。

    1だとinputだけになってしまいますが
    身に付けるためにはoutputも必要かと思います。
    なので英語のメールを書いてみるとか、英語のプレゼン資料を作ってみるとかしたいですね。


そんな機会を作るにはどうするか?
そこでOpenStackですよ。

次回に続く。

nanodayo at 19:14コメント(1)トラックバック(0) 

2015年12月11日

Boys sideはsamemoonさんが先に閃いてしまいました。
くそっ!先に気づいていればこっちでもやったのに!\(^o^)/

■きっかけ

最近会社でOpenStack Summitの報告をしたら
「OpenStackをやっているといい肉がただで食えるんですか!?!?
ちょっとOpenStack教えて下さい!!!!111」と頼まれたので
ある程度基本的なコンポーネントを教えると

「数が多くてわからん。美少女キャラに擬人化してください」
と言われたのでやってみました。
なお、それを話したらsamemoonさんがboys sideを閃いてしまいました。
(大事なことなので二回言いました)



■基本ポリシー
・コアコンポーネントに絞る(Grizzly, Folsom時点)
・コンポーネントの相関をキャラクターの相関にも反映させる

そんなわけでキャラクター相関図を書いてみたのであった。
なお、全員OLという設定にしています。

株式会社OpenStack

Swift:背が高い。力持ち。怪我もすぐ治ると、かなりの実力者ではあるが 若干コミュ症であるという欠点を持っている。あと大食い。
Nova:社長。自らも活躍しつつ、他のメンバーを指揮しているが、swiftだけは扱い方が解らず、いつもGlanceに仲介してもらっている。
Glance:社長秘書。NovaとSwiftがあまりにうまく話せないので雇われた
Keystone:人事。結構な権限を持っている。みんな彼女には逆らえない。結構厳しい。
Horizon: ゆるふわ営業ガール。多国語対応。他スタッフへの仲介も得意というハイスペック営業ながら、 社内に居ないことも多く、他のスタッフからあまり感謝されてない不遇な人。
Quantum:ネットワークエンジニア。Novaが会社を起こした後、自分の仕事を代わりにできる人として雇った。 人気者だが気難しい。cinderと同期。
Cinder:ストレージエンジニア。経緯はquantumと一緒。人気者。同期のQuantumに比べて地味なのを気にしている。

相関
Keystone, horizon:他の全員
Nova : swift以外全員
Cinder : nova/swift
Quantum : nova
Glance : nova/swift

■会社沿革
独立を目指していたNovaさんとSwiftさんは手を組んで株式会社OpenStackを設立しました。
でもお互いそれぞれの仕事をしているだけで全く一緒に仕事をしませんでした。
課題として認識はしていたようで、仲介スタッフとなるglanceを雇いました。
社内の規則や人事制度を統一するためにkeystoneを雇いました。
Novaの仕事が増える一方なので、ネットワーク担当・ストレージ担当にQuantumとCinderをそれぞれ雇いました。

■まとめ

形になったら夏コミに出す。。。かもね!


こうしてできたのがこちらの画像です。
言っておきますが、キャラの相関図を描くためのものです。

openstack

nanodayo at 16:24コメント(0)トラックバック(0) 

2015年11月02日

3日目はフレンチを狙うことにしました。
もしかして、2日目に食べたローストビーフの店かな?と思ったのですが
どうやらそことは別にフレンチのお店が存在するらしいです。

まずはえだまめのスープ




IMG_9729



続いてメインディッシュのロッシーニ(かな?)





IMG_9731



最後にデザート。ホイップもアイスもすっきりとした味わいでした。
ガトーショコラも濃厚でおいしかったです。





CSdF2NoUwAAB5DL




食後に、昨日のローストビーフの店にまた行こうと思ったのですが
流石にお腹が膨れたのでやめておきました。



飴細工を作ってくれるところもありました。
一個一個丁寧に作っているので、結構待ちます。





IMG_9739




夜はRed Hatさんの主催するパーティに呼ばれて
ウルフギャングのピッツェリアに行ってきました。

こちらもビュッフェで、最初はピザ・サラダ・シーフードを食べていたのですが
後半になってステーキとスイーツも出てきました。





CSeb1BTUYAAViN0

IMG_9745


くっ、知っていればピザを抑えたのに…((
なかなか柔らかくて美味しかったんですが
いかんせんお腹いっぱいになっていたので、1枚行かないくらいの量でギブアップしました。
5枚位は食べておきたかった…(


日本に出店したことで話題になっていたウルフギャングのステーキを
こんな形で食べられるとは思いませんでした( ゚ρ゚)

nanodayo at 12:19コメント(0)トラックバック(0) 
2日目もkeynoteがあったのですが
先日の反省を活かして8:30くらいから並んでました。
また、お昼はプログラム中のランチタイムを守ると混むので
直前のセッションに行かずに食べに行くことにしました。
いやまぁ、ちゃんと内容的に捨てていいと思ったからですよ?

そんな中で知り合いに誘われて、ホテル敷地内のステーキハウスに行くことにしました。
え?まさか…


そう、実はビュッフェ以外も無料で食べられるのでした(゚∀゚)!!

そんなわけでステーキハウス桂さんに行ってきました。
神戸牛の鉄板ステーキだそうです。

すごく…おいしそうです…
これを鉄板で焼いて




IMG_9665

IMG_9667

IMG_9670



切り分けて食べる!!!
すごく…おいしいです…
肉の脂がたまりませんでした。

ちなみに、お店に着いたタイミングで20分待ちほどだったのですが
食べ終わって出た時にはもうclosedになっていました。
正規のランチタイムになったばかりだったのですが…(


食後のデザート的なものが欲しくなったので
またケーキバイキングにあやかりました。





IMG_9672



ピンクのケーキにはキャラメルソースも入っており
程よい苦味が良かったです。

ケーキを食べていたら、知り合いから
この辺にぃ~ローストビーフ食べ放題があるらしいっすよ~との噂を聞いて
食後ながらちょっとだけつまみに行くことにしました。






IMG_9673

IMG_9674



ありますあります、ローストビーフ…
ちっちゃい金の皿はフォアグラでした。
なんてこった、フォアグラまで食べ放題…

他、豚肉・鶏肉の料理もあり満腹だったのが惜しまれるラインナップでした。
端の方にあるご飯はピラフで、海老のカレーもあるので
両方楽しめるようにピラフカレーにしてちょっとだけ食べましたが
結構辛い中、海老の甘みもあると、カレーもかなりのクォリティでした。


ちなみにこの日の夜は
一期一会という、スポンサーの公式パーティがあったので
そちらにも行ってきました。

案内にsamurai, ninja, geishaなどなど、何やら日本文化を匂わす文字が入ってました

入ってみると、早速侍のコスプレをしてる人たちが居たり
武器が展示されたりしていました。





IMG_9687

IMG_9691



フロアを複数使っており、洋食+中華なビュッフェをやっている階と
串揚げやたこ焼きをやっている階がありました。





IMG_9698

CSxdG-AVAAAzdFs



他、催し物として忍者ショー、太鼓があったり
普通のコスプレとしてボカロ等のコスプレが行われている部屋もありました。
コスプレ部屋では、イラストレータさんが壁に絵を書いていたり
ピカチュウやドラえもんのきぐるみが転がっていたりしました。

あと、団子などのスイーツもこの部屋にありました。





IMG_9706



nanodayo at 12:09コメント(0)トラックバック(0)