Project

knife-nc

0.0
No commit activity in last 3 years
No release in over 3 years
NIFTY Cloud Support for Chef's Knife Command
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

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 を適用します。