fbpx

knife-cloudstack を使ってみよう [2]

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

knife-cloudstackのコマンド

前項ではknife-cloudstackのインストールと設定までを行いました。本項ではknife-cloudstackのコマンドを一通り実行してみます。

knife cs zone list

アカウントに結びつけられているすべての有効なゾーンを表示します。

cf@ubuntu:~$ knife cs zone list
Name             Network Type     Security Groups
TestZone         Basic            true
cf@ubuntu:~$

knife cs network list

アカウントに結びつけられているすべての有効なネットワークを表示します。

cf@ubuntu:~$ knife cs network list
Name                      Type                      Default                   Shared                    Gateway                   Netmask
guestNetworkForBasicZone  Shared
cf@ubuntu:~$

knife cs service list

アカウントに結びつけられているすべての有効なサービスオファリングを表示します。

cf@ubuntu:~$ knife cs service list
Name                      Memory                    CPUs                      CPU Speed                 Created
Medium Instance           1.00GB                    1                         1000 Mhz                  2012-07-09T14:03:02+0900
Small Instance            512.00MB                  1                         500 Mhz                   2012-07-09T14:03:01+0900
cf@ubuntu:~$

knife cs template list

アカウントに結びつけられているテンプレートを表示します。デフォルトでは「おすすめ」テンプレートが表示されます。-F (--filter) オプションを用いて表示するテンプレートを変更できます。

cf@ubuntu:~$ knife cs template list -F community
Name                             Size                             Zone                             Public                           Created
CentOS 5.5(64-bit) no GUI (KVM)  8.00GB                           TestZone                         true                             2012-07-09T14:15:41+0900
cf@ubuntu:~$

knife cs server list

アカウントに結びつけられているすべての有効なサーバを表示します。なお、Chefサーバへの登録とは関連付けされていません。

cf@ubuntu:~$ knife cs server list
Name                             Public IP                        Service                          Template                         State
test-by-hand-0710-2              192.168.24.162                   Small Instance                   CentOS 5.5(64-bit) no GUI (KVM)  Stopped
test-by-hand-0710-1                                               Small Instance                   CentOS 5.5(64-bit) no GUI (KVM)  Expunging
ubuntu-0709-1                    192.168.24.160                   Small Instance                   ubuntu-10.04.4-server-amd64.iso  Stopped
cf@ubuntu:~$

knife cs hosts

/etc/hosts形式ですべてのサーバを表示します。

cf@ubuntu:~$ knife cs hosts
#Public IP                             Host                                   FQDN
192.168.24.162                         test-by-hand-0710-2                    test-by-hand-0710-2.cs1cloud.internal
#                                      test-by-hand-0710-1                    test-by-hand-0710-1.cs1cloud.internal
192.168.24.160                         ubuntu-0709-1                          ubuntu-0709-1.cs1cloud.internal
cf@ubuntu:~$

knife cs server start

指定した仮想マシンを起動します。

cf@ubuntu:~$ knife cs server start test-by-hand-0710-2

Name: test-by-hand-0710-2
Public IP: 192.168.24.162
Service: Small Instance
Template: CentOS 5.5(64-bit) no GUI (KVM)
Domain: ROOT
Zone: TestZone
State: Stopped

Do you really want to start this server? (Y/N) y
Waiting for startup......
Started server test-by-hand-0710-2
cf@ubuntu:~$

knife cs server reboot

指定した仮想マシンを再起動します。

cf@ubuntu:~$ knife cs server reboot test-by-hand-0710-2

Name: test-by-hand-0710-2
Public IP: 192.168.24.162
Service: Small Instance
Template: CentOS 5.5(64-bit) no GUI (KVM)
Domain: ROOT
Zone: TestZone
State: Running

Do you really want to reboot this server? (Y/N) y
Rebooting.............
Rebooted server test-by-hand-0710-2
cf@ubuntu:~$

knife cs server stop

指定した仮想マシンを停止します。

cf@ubuntu:~$ knife cs server stop test-by-hand-0710-2

Name: test-by-hand-0710-2
Public IP: 192.168.24.162
Service: Small Instance
Template: CentOS 5.5(64-bit) no GUI (KVM)
Domain: ROOT
Zone: TestZone
State: Running

Do you really want to stop this server? (Y/N) y
Stopping............................................................
Stopped server test-by-hand-0710-2
cf@ubuntu:~$

knife cs server delete

指定した仮想マシンを削除します。なお、Chefサーバへの登録は削除されません。

cf@ubuntu:~$ knife cs server delete test-by-hand-0710-2

Name: test-by-hand-0710-2
Public IP: 192.168.24.162
Service: Small Instance
Template: CentOS 5.5(64-bit) no GUI (KVM)
Domain: ROOT
Zone: TestZone
State: Stopped

Do you really want to delete this server? (Y/N) y
Waiting for deletion..
Deleted server test-by-hand-0710-2
Do you want to delete the chef node and client 'test-by-hand-0710-2.cs1cloud.internal? (Y/N) n
You said no, so I'm done here.
cf@ubuntu:~$

knife cs server create

CloudStack 2でserver createを利用する場合はアドバンスドモードでネットワークが構成されている必要があります。ベーシックモードでは動作しないので気をつけてください。

また、CloudStack 3でベーシックモードでネットワークが構成されている場合も、knife-cloudstack 0.0.12のserver createは動作しません。Pull Request #20: no longer sending networkids if --no-public-ip option is usedのパッチを当てる必要があります(参照: This doesn't seem to work with Cloudstack3's basic mode)。

あらかじめChefサーバを準備しておきます。ここでは 192.168.24.179 をChefサーバとします。
CloudStack 管理サーバは 192.168.24.110 とします。

cf@ubuntu:~$ knife cs server create knife-0809-2 \
-U 'http://192.168.24.110:8080/client/api' \
-A 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
-K 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
-S 'Medium Instance' \
-T 'Ubuntu 12.04' \
--no-public-ip \
-x 'ubuntu' \
-P 'ubuntu' \
-d 'ubuntu12.04-gems' \
-s 'http://192.168.24.179:4000' \
-k '/home/cf/.chef/ubuntu.pem' \
-r 'recipe[apache2]'
-U
CloudStackのAPIエンドポイントURIを指定します。
-A
CloudStackのAPI鍵を指定します。
-K
CloudStackの秘密鍵を指定します。
-S
作成するインスタンスのサービスオファリングを指定します。
-T
作成するインスタンスのテンプレートを指定します。
--no-public-ip
作成するインスタンスがパブリックIPアドレスを持たない場合(ベーシックモードなど)に指定します。
-x
作成するインスタンスにsshでログインするためのユーザ名を指定します。
-P
作成するインスタンスにsshでログインするためのパスワードを指定します。
-d
作成するインスタンス上でブートストラップするChef環境の対象ディストリビューションを指定します。bootstrapにあるファイルを指定します。
-s
ChefサーバのURIを指定します。
-k
APIのクライアント鍵を指定します。
-r
作成するインスタンス上で実行するChefのrun listを指定します。

実際に実行してみます。途中、作成したインスタンス上でsudoを実行するためのパスワードの手動入力が求められますが、それ以外はインスタンスの作成、Chef環境のブートストラップ、Chefサーバとの通信および環境設定は自動で行われます。

cf@ubuntu:~$ knife cs server create knife-0809-2 \
-U 'http://192.168.24.110:8080/client/api' \
-A 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
-K 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
-S 'Medium Instance' \
-T 'Ubuntu 12.04' \
--no-public-ip \
-x 'ubuntu' \
-P 'ubuntu' \
-d 'ubuntu12.04-gems' \
-s 'http://192.168.24.179:4000' \
-k '/home/cf/.chef/ubuntu.pem' \
-r 'recipe[apache2]'
Waiting for server.......................................................................................................

Name: knife-0809-2
Public IP: 192.168.24.162

Waiting for sshd.................Bootstrapping Chef on 192.168.24.162
192.168.24.162 knife sudo password:
Enter your password:
192.168.24.162
0% [Working]62
Ign http://jp.archive.ubuntu.com precise InRelease
192.168.24.162
10% [ヘッダの待機中です]
Ign http://jp.archive.ubuntu.com precise-updates InRelease
	:
	:
	:
192.168.24.162 [2012-08-09T19:19:40+09:00] INFO: *** Chef 10.12.0 ***
192.168.24.162
192.168.24.162 [2012-08-09T19:19:40+09:00] INFO: Client key /etc/chef/client.pem is not present - registering
192.168.24.162
192.168.24.162 [2012-08-09T19:19:40+09:00] INFO: HTTP Request Returned 404 Not Found: Cannot load node ubuntu-1204.example.jp
192.168.24.162
192.168.24.162 [2012-08-09T19:19:40+09:00] INFO: Setting the run_list to ["recipe[apache2]"] from JSON
192.168.24.162
192.168.24.162 [2012-08-09T19:19:40+09:00] INFO: Run List is [recipe[apache2]]
192.168.24.162
192.168.24.162 [2012-08-09T19:19:40+09:00] INFO: Run List expands to [apache2]
192.168.24.162
192.168.24.162 [2012-08-09T19:19:40+09:00] INFO: Starting Chef Run for ubuntu-1204.example.jp
	:
	:
	:
192.168.24.162 [2012-08-09T19:19:59+09:00] INFO: Chef Run complete in 19.09386 seconds
192.168.24.162
192.168.24.162 [2012-08-09T19:19:59+09:00] INFO: Running report handlers
192.168.24.162
192.168.24.162 [2012-08-09T19:19:59+09:00] INFO: Report handlers complete
192.168.24.162 

Name: knife-0809-2
Public IP: 192.168.24.162
Environment: _default
Run List: recipe[apache2]
cf@ubuntu:~$

インスタンスの作成とChefの実行が完了したので、この例ではapacheに対してアクセスを行ってみます。

cf@ubuntu:~$ curl 192.168.24.162
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
cf@ubuntu:~$

このようにアクセスすることができます。

Author

Chef・Docker・Mirantis製品などの技術要素に加えて、会議の進め方・文章の書き方などの業務改善にも取り組んでいます。「Chef活用ガイド」共著のほか、Debian Official Developerもやっています。

Daisuke Higuchiの記事一覧

新規CTA