NIFTY Cloud 向け knife プラグイン

概要

knife から NIFTY Cloud のインスタンスを扱うためのプラグインです。 knife-ec2 と同じように、インスタンスを作成した上で Chef のノードとして登録 (= ブートストラップ) したり、 インスタンスを削除したりできます。

インストール

"chef" gem と "ニフティクラウドSDK for Ruby" gem に依存しているので、 まだインストールしていない場合にはインストールしましょう。

# "chef" gem のインストール
gem install chef

# "ニフティクラウドSDK for Ruby" のインストール
wget http://cloud.nifty.com/api/sdk/NIFTY_Cloud_SDK_for_ruby.zip
cd NIFTY_Cloud_SDK_for_ruby
rake install

あとは gem install knife-nc を実行するだけです。

gem install knife-nc

設定

NIFTY Cloud REST API と通信するため、knife コマンドにアクセスキー/シークレットキーを教えてやる必要があります。 knife.rb に設定するのが一番簡単でしょう。

knife[:nc_access_key] = "Your NIFTY Cloud Access Key"
knife[:nc_secret_key] = "Your NIFTY Cloud Access Key"

knife.rb をバージョン管理システムにコミットしている場合 (つまり誰でも閲覧可能になっている場合) には、 環境変数から読み込ませることも可能です。

knife[:nc_access_key] = "#{ENV['NIFTY_CLOUD_ACCESS_KEY']}"
knife[:nc_secret_key] = "#{ENV['NIFTY_CLOUD_SECRET_KEY']}"

アクセスキー/シークレットキーは knife サブコマンドの -A (--nc-access-key) と -K (--nc-secret-key) オプションで指定することもできます。

# provision a new mini instance
knife nc server create -r 'role[webserver]' -I 1 -T mini -A 'Your NIFTY Cloud Access Key' -K "Your NIFTY Cloud Secret Key"

さらに下記のオプションが knife.rb に設定可能です。

  • nc_instance_type
  • nc_image_id
  • nc_ssh_key_id
  • nc_bootstrap_version
  • nc_distro
  • nc_template_file
  • nc_user_data

サブコマンド一覧

knife nc server create

NIFTY Cloud 上にインスタンスを作成し SSH 経由で Chef のブートストラップを行います。「ブートストラップ」というのは Chef をインストールして Chef クライアントとして Chef サーバと通信できるようにすることです。利用するブートストラップ・スクリプトは指定したイメージ ID によって自動的に検出されますが、-d オプションや --template-file オプションで上書きすることもできます。インスタンス作成時、あとから knife コマンド経由で削除可能とするために、diableApiTermination を false に設定することに注意してください。

また、v0.0.1 からは独自オプションとして -R または --ssh-passphrase オプションで SSH パスフレーズが指定できるようになりました。

knife nc server delete

設定済みの NIFTY Cloud アカウント内のインスタンスを指定して停止・削除します。注意:デフォルトではそのインスタンスに関するノード・クライアント情報を Chef サーバ上から削除しません。削除するためには --purge フラグをつけてください。

knife nc server list

現在設定されている NIFTY Cloud アカウントが持つすべてのサーバの一覧を出力します。注意:アカウントに紐づいたすべてのインスタンスを表示するので、Chef サーバに管理されていないインスタンスが表示されることもあります。

knife nc image list

knife-ec2 にはないオリジナルのコマンドです。現在のアカウントで利用可能なイメージの一覧を表示します。 knife nc server create コマンドの -I オプションに渡す Image ID を確認するために利用してください。

NIFTY Cloud イメージ向けブートストラップ

knife-nc gem には NIFTY Cloud で提供されているイメージに最適化された 2 つのブートストラップ・スクリプト (nc-centos5-gems, nc-centos6-gems) が同梱されています。 knife nc server create を利用する際にはイメージ ID に応じて自動で利用すべきスクリプトの判別が行われます。 knife bootstrap からこのスクリプトを利用するには下記のように -d オプションで識別子を指定してください。

knife bootstrap XXX.XXX.XXX.XXX -d nc-centos5-gems

なお、サポート対象のイメージ ID と各イメージ ID に対応するスクリプトの識別子は下記の通りです。

イメージ ID OS・ディストリビューション ブートストラップ・スクリプト 同梱されている gem
1 CentOS 5.3 32bit Plain nc-centos5-gems knife-nc
2 CentOS 5.3 64bit Plain nc-centos5-gems knife-nc
6 CentOS 5.3 32bit Server nc-centos5-gems knife-nc
7 CentOS 5.3 64bit Server nc-centos5-gems knife-nc
13 CentOS 5.6 64bit Plain nc-centos5-gems knife-nc
14 CentOS 5.6 64bit Server nc-centos5-gems knife-nc
17 Ubuntu 10.04 64bit Plain ubuntu10.04-gems chef
21 CentOS 6.2 64bit Plain nc-centos6-gems knife-nc

TODO

  • nc server create の --template-file オプション (ブートストラップ用テンプレート指定) の動作確認ができていない

ライセンス

knife-ec2 をベースに NIFTY Cloud 向けに修正を加えたものです。 オリジナルに準じて Apache Lisence, Version 2.0 を適用します。