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:~$
このようにアクセスすることができます。