そして私は、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 => '********')
- => #<cloudservers::server:0xb79c2374 .............@flavorid="1"></cloudservers::server:0xb79c2374>
- #自分の全サーバーをリスト表示させます
- > 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)
- => #<cloudservers::image:0xb79b3004 ,="" ......@status="ACTIVE" @created="#<DateTime:" @serverid="nil"></cloudservers::image:0xb79b3004>
- > image.name
- => "CentOS 5.5"
- #新しいサーバーのスペックを表示
- > flavor = cs.get_flavor(1)
- => #<cloudservers::flavor:0xb79aa0bc @disk="10," @id="1," @name="256 server" @ram="256,"></cloudservers::flavor:0xb79aa0bc>
- > flavor.name
- => "256 server"
- #新しいサーバを起動
- > newserver = cs.create_server(:name => "New Server", :imageId => image.id, :flavorId => flavor.id)
- => #<cloudservers::server:0xb799ce6c @addresses="{:public=">["184.106.204.113"], :private=>["10.179.101.68"]},........, @flavorId=1></cloudservers::server:0xb799ce6c>
- > newserver.status
- => "BUILD"
- > newserver.progress
- => 0
- > newserver.adminPass
- => "NewServerJ347qTcfL"
- > newserver.refresh
- => true
- > newserver.progress
- => 100
- #起動したサーバを削除
- > newserver.delete!
- => true
以上で簡単なサーバの起動と停止を行う事が出来ました。
思ったよりも良い感じですね。ちょっと工夫をしたら色々な事に使えそうです。
さて、今年はこれが最後の更新となると思います。
もし、このブログを見た方は良い年末と年始をお過ごし下さい。
あ、そだそだ。メリークリスマス・イヴ。