okochangの馬鹿でありがとう

ふらふら適当に世間を生きる日々でございます

RackspaceのサーバをChef(knife-rackspace)から使ってみる

なんか頻繁に更新とかするとちょっと不思議な感じがしますね。
昨日書いたブログ1周年の感想はともかく、今回もRackspaceの作業記録ネタです。
今回の主役となるChefや、Puppetというソフトウェアは以前から聞いてましたが、正直あまりさわれていませんでした。
Chefについては色々な方が情報提供しているので、ここではChefを使ってRackspaceのCloudServersを操作するログだけ記録しておこうと思います。
なんかChefを使ってAWSって話は誰かが?(汗)書くようです。
ちなみにChef0.10.0からknife-rackspaceというプラグインを使用する事になったみたいなので忘れずに入れて下さいね。
Chefってなんぞ!?という方は以下のリンクが参考になるのではないでしょうか。

ちなみに私のChefサーバはOpscodeのSaaSを使用させて頂いております。
ネットワーク構成を本番に近い形にも出来るし、何しろChefサーバを運用しなくて良いのは素敵ですもんね。

※アナタそういうサーバ運用するのがお仕事でしょっ!ていう突っ込みは割愛して下さいね(笑)

以下、作業記録です。

1)knife-rackspaceのインストール

Chefとknife-rackspaceをMacBookにインストールするのは簡単でしたよ。

2)Cloud Serversをknifeコマンドで操作する為にAPIの設定

APIの情報を以下のように設定します。

$ vim .chef/knife.rb
 18 # Rackspace
 19 knife[:rackspace_api_key] = "**************************"
 20 knife[:rackspace_api_username] = "okochang"

3)Rackspaceへの接続確認

使用出来るサーバイメージをリストで表示します

$ 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   

4)起動確認=>レシピ適用=>削除

Cloud Serversのサーバを起動し、apache2のレシピを適用します

$ 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コマンドから操作出来ます。
Chefに慣れた人にとっては良い運用の選択肢になりそうです。
以前このブログで書いたcloudlbcloudsrversとかと組み合わせると、さらに面白そう!
Rackspaceのロードバランサは外部のサーバも分散先に登録出来ます。
Chef経由でバランシング対象のRackspaceのサーバとEC2インスタンスに同じレシピを適用するなんて事も出来ますね。
あー、Rackspaceのデータセンターが日本にも出来ないかなー。出来ないだろなー。
Rackspaceを使って動く素敵なサービスは日本でもたくさん使われてるのになー。