th0x0472.log

アクセスカウンタ

zoom RSS 2012/06/16 #ncstudy 03 にお邪魔してきました

<<   作成日時 : 2012/08/05 19:35   >>

ブログ気持玉 0 / トラックバック 1 / コメント 0

ncstudy #03 にお邪魔してきました。#ncstudy 初参加でした。

まぁ、もう1ヶ月半以上たってしまってるわけですが・・・。

「NiftyさんとこでやってるCloudが使える勉強会」ってコピーだったと思いますが、「使える」レベルじゃなくてわりとやりたい放題だった気がします。そしてダメ押しに例のニフクラ本もいただいてしまいました。ありがとうございます。

今回のお題は「APIを使って、何かつくってみよう」でした。
まぁ、僕は力及ばず「何かつくる」ところまでいけず、「APIを使ってクラウドを操作してみる」にとどまってしまったのですが。


苦労した点

  • 一番苦労したのは、rubyのハッシュ。単純なハッシュならともかく、ネストされるのがつらかったです。・・・API関係ない。僕の Ruby力低すぎ・・・。というか、Ruby初めてでした。
  • パラメータ多い! それだけいろいろ出来るってコトの裏返しなんですけどね。


スゴイと思った点

  • 当たり前だけどSSL通信してる。意識しなくても、そういうところちゃんとしてる。SDKエライ。(でも通信見えなくてつまんない。
  • ドキュメントちゃんとしてる。NiftyクラウドのAPIもRubyも触るの初めてでしたが、(前述のハッシュを除けば)API/SDKのドキュメントRubyのリファレンス、それと「逆引きRuby」というサイト で結構がんばれました。


自分なりの理解はこんな感じです。

NIFTY::Cloud::Base.new() でつくるncs4r = コンパネなんだと思います。で、そのメソッドを実行するのが、コンパネの操作に相当すると。
そう考えると、仮想サーバはじめサービスで提供されてる諸々の要素をつかってシステムを設計して運用していくというお仕事がコードで表現されてるわけですね。
そうだとすると、自分のこれからのお仕事についていろいろ考えざるをえませんね。


最後に、自分が書いたコードを載せておきます。

describe_instances() は一度に複数インスタンスの情報を取得できるので、もっとスマートにできるはず。
4行目の require は、おそらく構築した環境依存です。ここも汎用的に、スマートにしたいところです。



01:#!/usr/bin/env ruby
02:
03:require 'rubygems'
04:require File.dirname(__FILE__) + "/../lib/NIFTY"
05:require 'pp'
06:
07:ACCESS_KEY = ENV["NIFTY_CLOUD_ACCESS_KEY"]
08:SECRET_KEY = ENV["NIFTY_CLOUD_SECRET_KEY"]
09:
10:ncs4r = NIFTY::Cloud::Base.new(:access_key => ACCESS_KEY, :secret_key => SECRET_KEY)
11:
12:servers = ["sv1", "sv2"]
13:
14:options = {
15: :image_id => "21",
16: :key_name => "KEY_NAME",
17: :security_group => ["default(Linux)"],
18: :instance_type => "mini",
19: :disable_api_termination => false,
20: :accounting_type => "2",
21: :password => "PASSWORD",
22: :ip_type => "static"
23:}
24:
25:servers.each do |svname|
26: puts "run instance " + svname + "..."
27: options.store(:instance_id,svname)
28: res = ncs4r.run_instances(options)
29:end
30:
31:all_running = false
32:until all_running do
33: sleep 3
34: all_running = true
35: servers.each do |svname|
36: res = ncs4r.describe_instances(:instance_id => svname)
37: res.reservationSet.item.each do |set|
38: set.instancesSet.item.each do |instance|
39: state=instance.instanceState.name
40: puts svname + ": " + state
41: if state != "running" then
42: all_running = false
43: end
44: end
45: end
46: end
47:end
48:
49:
50:ncs4r.create_load_balancer(:load_balancer_name => 'lb1', :listeners => {:protocol => 'http'}, :network_volume => 10)
51:ncs4r.register_instances_with_load_balancer(:load_balancer_name => 'lb1', :load_balancer_port => 80, :instance_port => 80, :instances => servers)



01:#!/usr/bin/env ruby
02:
03:require 'rubygems'
04:require File.dirname(__FILE__) + "/../lib/NIFTY"
05:require 'pp'
06:
07:ACCESS_KEY = ENV["NIFTY_CLOUD_ACCESS_KEY"]
08:SECRET_KEY = ENV["NIFTY_CLOUD_SECRET_KEY"]
09:
10:ncs4r = NIFTY::Cloud::Base.new(:access_key => ACCESS_KEY, :secret_key => SECRET_KEY)
11:
12:servers=["sv1","sv2"]
13:
14:servers.each do |svname|
15: puts "stopping " + svname + "..."
16: ncs4r.stop_instances(:instance_id => [svname], :force => false)
17:end
18:
19:all_stopped = false
20:
21:until all_stopped do
22:
23:sleep 3
24:all_stopped = true
25:servers.each do |svname|
26: res = ncs4r.describe_instances(:instance_id => svname)
27:
28: res.reservationSet.item.each do |set|
29: set.instancesSet.item.each do |instance|
30: state = instance.instanceState.name
31: if state != "stopped" then
32: all_stopped = false
33: end
34: puts svname + ": " + state
35: end
36: end
37:
38:end
39:end
40:
41:servers.each do |svname|
42: puts "terminate " + svname + "..."
43: ncs4r.terminate_instances(:instance_id => svname)
44:end
45:
46:ncs4r.delete_load_balancer(:load_balancer_name => 'lb1', :load_balancer_port => 80, :instance_port => 80)


インデントが残念な感じですが、どうかご容赦を。


ニフティクラウド IaaSによるシステム構築/活用入門
翔泳社
石田 健亮

amazon.co.jpで買う
Amazonアソシエイト by ニフティクラウド IaaSによるシステム構築/活用入門 の詳しい情報を見る / ウェブリブログ商品ポータル

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(1件)

タイトル (本文) ブログ名/日時
プラダ バッグ
2012/06/16 #ncstudy 03 にお邪魔してきました th0x0472.log/ウェブリブログ ...続きを見る
プラダ バッグ
2013/07/06 07:32

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
2012/06/16 #ncstudy 03 にお邪魔してきました th0x0472.log/BIGLOBEウェブリブログ
文字サイズ:       閉じる