前項ではknife-cloudstackを用いてCloudStackの情報を取得したり、既に存在しているインスタンスの操作を行いました。ここからは新規にインスタンスの作成を行います。
なお、knife-cloudstackでインスタンスを作成する場合、CloudStackはアドバンスモードでネットワークが構成されていることが推奨されています。knife-cloudstack 0.0.12とベーシックモードの組み合わせの場合、CloudStack 2では動作しません。CloudStack 3ではパッチを当てる必要があります*。
* ネットワーク構成の問題 github上での議論「This doesn't seem to work with Cloudstack3's basic mode」を参照してください。
また、Chefサーバと連携し、インスタンス上にChefクライアント環境を作成し、指定のChefレシピを実行できます。
オプション | 説明 |
---|---|
-U | CloudStackのAPIエンドポイントURIを指定します(設定ファイルに記載がある場合、省略可) |
-A | CloudStackのAPI鍵を指定します(設定ファイルに記載がある場合、省略可) |
-K | CloudStackの秘密鍵を指定します(設定ファイルに記載がある場合、省略可) |
-S | 作成するインスタンスのサービスオファリングを指定します |
-T | 作成するインスタンスのテンプレートを指定します |
-x | 作成するインスタンスにsshでログインするためのユーザー名を指定します |
-P | 作成するインスタンスにsshでログインするためのパスワードを指定します |
-d | 作成するインスタンス上でブートストラップするChef環境の対象ディストリビューションを指定します。bootstrap*にあるファイルを指定します |
-s | ChefサーバのURIを指定します |
-k | Chef APIのクライアント鍵を指定します |
-r | 作成するインスタンス上で実行するChefレシピを指定します。なお、テンプレートは指定のユーザー名とパスワードでsshログインできるように設定して、サービスオファリングなどとあわせて、あらかじめCloudStack上に準備しておく必要があります。Chefサーバと指定のCookbooksの準備、Chef APIクライアント鍵の取得なども必要です |
* bootstrap https://github.com/opscode/chef/tree/master/chef/lib/chef/knife/bootstrap
ここでは、下表の設定でインスタンスを作成して、Chefクライアント環境を用意し、Apache2のレシピを実行してみます、
項目 | 内容 |
---|---|
作成するインスタンス名 | knife-0912-1 |
サービスオファリング | Medium Instance |
テンプレート | Ubuntu 12.04 |
sshログインユーザー名 | ubuntu |
sshログインパスワード | ubuntu |
ディストリビューション | ubuntu12.04-gems |
ChefサーバURI | http://192.168.122.10:4000 |
Chef APIクライアント鍵 | /home/ubuntu/.chef/validator.pem |
Chefレシピ | recipe[apache2] |
$ knife cs server create knife-0912-1 -S 'Medium Instance' \ -T 'Ubuntu 12.04' \ -x 'ubuntu' \ -P 'ubuntu' \ -d 'ubuntu12.04-gems' \ -s 'http://192.168.122.10:4000' \ -k '/home/ubuntu/.chef/validator.pem' \ -r 'recipe[apache2]'
* コマンド中の記号「¥」はバックスラッシュに読み替えてください。
途中、作成したインスタンス上でsudoを実行するためのパスワードの手動入力が求められますが、それ以外はインスタンスの作成、Chefクライアント環境の作成、Chefサーバとの通信および環境設定は自動で行われます。
Waiting for server....................................................................................................... Name: knife-0912-1 Public IP: 192.168.122.162 Waiting for sshd.................Bootstrapping Chef on 192.168.122.162 192.168.122.162 knife sudo password: Enter your password: (←パスワードの手動入力が求められます) 192.168.122.162 0% [Working]162 Ign http://jp.archive.ubuntu.com precise InRelease 192.168.122.162 10% [ヘッダの待機中です] Ign http://jp.archive.ubuntu.com precise-updates InRelease (省略) 192.168.122.162 [2012-09-12T19:19:40+09:00] INFO: *** Chef 10.12.0 *** 192.168.122.162 192.168.122.162 [2012-09-12T19:19:40+09:00] INFO: Client key /etc/chef/client.pem is not present - registering 192.168.122.162 192.168.122.162 [2012-09-12T19:19:40+09:00] INFO: HTTP Request Returned 404 Not Found: Cannot load node ubuntu-1204.example.jp 192.168.122.162 192.168.122.162 [2012-09-12T19:19:40+09:00] INFO: Setting the run_list to ["recipe[apache2]"] from JSON 192.168.122.162 192.168.122.162 [2012-09-12T19:19:40+09:00] INFO: Run List is [recipe[apache2]] 192.168.122.162 192.168.122.162 [2012-09-12T19:19:40+09:00] INFO: Run List expands to [apache2] 192.168.122.162 192.168.122.162 [2012-09-12T19:19:40+09:00] INFO: Starting Chef Run for ubuntu-1204.example.jp (省略) 192.168.122.162 [2012-09-12T19:19:59+09:00] INFO: Chef Run complete in 19.09386 seconds 192.168.122.162 192.168.122.162 [2012-09-12T19:19:59+09:00] INFO: Running report handlers 192.168.122.162 192.168.122.162 [2012-09-12T19:19:59+09:00] INFO: Report handlers complete 192.168.122.162 Name: knife-0912-1 Public IP: 192.168.122.162 Environment: _default Run List: recipe[apache2]
インスタンスの作成とChefの実行が完了したので、この例では、先ほど作成したインスタンスのApacheに対してcurlでアクセスしてみます。
$ curl 192.168.122.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>
Apacheの初期ページが返ってきているので、正しくアクセスできていることが分かります。
Copyright © ITmedia, Inc. All Rights Reserved.