Rackspace Cloud導入記その8(APIを使う)
RackspaceがCloudkickを買収して少し楽しみな感じになってきましたね。
そして私は、Rackspaceを使っていた事をすっかり忘れていました。
Rackspaceへの興味はうすれていますが、APIくらいは使ってみよう!
そんな訳でCloudServersのRubyインターフェースAPIについて書きたいと思います。
ま、そうは言ってもREADMEに書かれている内容をそのまま実行しただけです(汗)
※APIを使用する為にはAPI keyとユーザー名が必要となります。
API keyの確認方法はこちらに記載しています。
まずは環境の準備 ついでにテスト環境のRubyとGemのバージョンをあげています。
Rubyを1.8.7へ
# cd /usr/local/src/ # cd ruby-1.8.7/i386/ # rpm -Uvh ruby-libs-1.8.7.249-4.i386.rpm ¥ ruby-devel-1.8.7.249-4.i386.rpm ¥ ruby-rdoc-1.8.7.249-4.i386.rpm ¥ ruby-1.8.7.249-4.i386.rpm ¥ ruby-irb-1.8.7.249-4.i386.rpm
Gemを1.3.7へ Gemが入ってない方はインストールして下さい。RubyGems
# gem update --system # gem -v 1.3.7
GemにGithubを登録するとAPIをインストールできます
# gem sources -a http://gems.github.comhttp://gems.github.com added to sources # gem install cloudservers Building native extensions. This could take a while... Successfully installed json-1.4.6 Successfully installed cloudservers-0.3.0 2 gems installed Installing ri documentation for json-1.4.6... Installing ri documentation for cloudservers-0.3.0... Installing RDoc documentation for json-1.4.6... Installing RDoc documentation for cloudservers-0.3.0...
ユーザーoko_changになって試してみます。
# su - oko_chang
動作確認程度なのでirbで行います
#irbを実行 $ irb #rubygemとcloudserversライブラリを読み込みます > require 'rubygems' => true > require 'cloudservers' => true CloudServers::Connectionクラスのオブジェクトを作ります #オブジェクトの生成(ログイン)にはusernameとapi_keyを指定する事が必須です > cs = CloudServers::Connection.new(:username => 'oko_chang', :api_key => '********') => # #自分の全サーバーをリスト表示させます > cs.servers => [{:name=>"develop-server", :id=>272817}] #特定サーバーの名前を表示させます > server = cs.server(272817) > server.name => "develop-server" #サーバーのタイプを表示させます > server.flavor.name => "256 server" > server.image.name => "CentOS 5.5" #サーバーを再起動させます > server.reboot => true 新しいサーバーを起動さるイメージを表示 > image = cs.get_image(51) => # > image.name => "CentOS 5.5" #新しいサーバーのスペックを表示 > flavor = cs.get_flavor(1) => # > flavor.name => "256 server" #新しいサーバを起動 > newserver = cs.create_server(:name => "New Server", :imageId => image.id, :flavorId => flavor.id) => #["184.106.204.113"], :private=>["10.179.101.68"]},........, @flavorId=1> > newserver.status => "BUILD" > newserver.progress => 0 > newserver.adminPass => "NewServerJ347qTcfL" > newserver.refresh => true > newserver.progress => 100 #起動したサーバを削除 > newserver.delete! => true
以上で簡単なサーバの起動と停止を行う事が出来ました。
思ったよりも良い感じですね。ちょっと工夫をしたら色々な事に使えそうです。
さて、今年はこれが最後の更新となると思います。 もし、このブログを見た方は良い年末と年始をお過ごし下さい。 あ、そだそだ。メリークリスマス・イヴ。