私は何も、誰も見てないし、何も覚えてない。
仮に覚えていても、身の安全の為にブログに書く事は出来ないw
$ sudo gem install chef $ sudo gem intalll knife-rackspace
$ vim .chef/knife.rb 18 # Rackspace 19 knife[:rackspace_api_key] = "**************************" 20 knife[:rackspace_api_username] = "okochang"
$ knife rackspace image list ID Name 7319825 20101223develop-server 55 Arch 2010.05 187811 CentOS 5.4 51 CentOS 5.5 4 Debian 5.0 (lenny) 53 Fedora 13 71 Fedora 14 19 Gentoo 10.1 41 Oracle EL JeOS Release 5 Update 3 40 Oracle EL Server Release 5 Update 4 14 Red Hat Enterprise Linux 5.4 62 Red Hat Enterprise Linux 5.5 49 Ubuntu 10.04 LTS (lucid) 69 Ubuntu 10.10 (maverick) 10 Ubuntu 8.04.2 LTS (hardy) 14362 Ubuntu 9.10 (karmic) 23 Windows Server 2003 R2 SP2 x64 29 Windows Server 2003 R2 SP2 x86 28 Windows Server 2008 R2 x64 58 Windows Server 2008 R2 x64 - MSSQL2K8R2 24 Windows Server 2008 SP2 x64 57 Windows Server 2008 SP2 x64 - MSSQL2K8R2 31 Windows Server 2008 SP2 x86 56 Windows Server 2008 SP2 x86 - MSSQL2K8R2指定可能なサーバのスペックの一覧表示します
$ knife rackspace flavor list ID Name Architecture RAM Disk Cores 1 256 server 64-bit 256 10 GB 0.125 2 512 server 64-bit 512 20 GB 0.25 3 1GB server 64-bit 1024 40 GB 0.5 4 2GB server 64-bit 2048 80 GB 1.0 5 4GB server 64-bit 4096 160 GB 2.0 6 8GB server 64-bit 8192 320 GB 4.0 7 15.5GB server 64-bit 15872 620 GB 8
$ knife rackspace server create -r 'recipe[chef-client], recipe[apache2]' --server-name server01 --node-name web01 --image 49 --flavor 1起動したサーバは一覧で表示出来ます
$ knife rackspace server list ID Name Public IP Private IP Flavor Image State 20026242 server01 50.57.83.233 10.182.1.186 256 Ubuntu 10.04 LTS (lucid) active削除もknifeコマンドで実行出来ます
$ knife rackspace server delete 20026242 Instance ID: 20026242 Host ID: c78b66aaae9d2f3fca9b957a46e800b6 Name: server01 Flavor: 256 server Image: Ubuntu 10.04 LTS (lucid) Public DNS Name: 50-57-83-233.static.cloud-ips.com Public IP Address: 50.57.83.233 Private IP Address: 10.182.1.186 Do you really want to delete this server? (Y/N) y WARNING: Deleted server 20026242 named server01以上のように管理画面にログインする事なくknifeコマンドから操作出来ます。
$ sudo gem sources -a http://gems.github.com $ sudo gem install cloudlb Fetching: typhoeus-0.2.4.gem (100%) Building native extensions. This could take a while... Fetching: cloudlb-0.0.1.gem (100%) Successfully installed typhoeus-0.2.4 Successfully installed cloudlb-0.0.1 2 gems installed Installing ri documentation for typhoeus-0.2.4... Installing ri documentation for cloudlb-0.0.1... Installing RDoc documentation for typhoeus-0.2.4... Installing RDoc documentation for cloudlb-0.0.1...
$ irb # cloudlbを読み込みます > require 'rubygems' > require 'cloudlb' # Rackspaceへの認証とリージョンの選択をします > lb = CloudLB::Connection.new(:username => "okochang", :api_key => "*****************", :region => :ord) # LBに追加するWebサーバ用にハッシュの配列を作成します > node01 = [{ :address => "50.57.116.195", :port => "80", :condition => "ENABLED" }] # LBを作成して先ほど作成したノードを作ります > newlb = lb.create_load_balancer( :name => "newlb", :protocol => "HTTP", :nodes => node01, :algoristhm => "LEAST_CONNECTIONS", :virtual_ip_type => "PUBLIC" ) # LBのリストを参照して確認を行います(きちんとIPv6用のアドレスも割り当てられてるのも分かります) > lb.list_load_balancers => [{:status=>"ACTIVE", :created=>{:time=>"2011-07-24T12:47:23Z"}, :port=>80, :virtualIps=>[{:type=>"PUBLIC", :address=>"184.106.100.221", :ipVersion=>"IPV4", :id=>168}, {:type=>"PUBLIC", :address=>"2001:4801:7901:0000:d4dc:6dbb:0000:0001", :ipVersion=>"IPV6", :id=>9000572}], :protocol=>"HTTP", :name=>"newlb", :id=>13924, :algorithm=>"RANDOM", :updated=>{:time=>"2011-07-24T12:48:12Z"}}] # 先ほど出力されたIDを指定して、LBを選択します > balancer = lb.get_load_balancer(13924) # LBのバランシングアルゴリズムを変更します > balancer.algorithm="ROUND_ROBIN" => "ROUND_ROBIN" # 新しいWebサーバをLBのノードとして追加します > node02 = balancer.create_node(:address => "50.57.116.80", :port => "80") # テストが終わったのでLBを削除します > balancer.destroy! => trueCloudServers同様に、API経由でもなかなか簡単に操作出来るのですね。