Knife-Plugin Zero

Knife-ZeroはChefのプラグインです。特徴はだいたい次のとおり。

はじめに

まずKnife-ZeroはKnife-Soloの乗り換え先ではありません。 Knife-ZeroはChef-Server/Client環境のサブセットであるローカルモードに、対象をリモートにできる機能を追加します。

Chef-Serverの導入前につかってもよいし、Knife-Soloのように管理してもよし。Whitelistをうまくつって、NodeオブジェクトをGitで管理してもOKです。

とりあえず日本語情報はリンク集を。

あと、Chef-ZeroとKnife-Zeroは別モンです。混同注意。

Knife-Zeroの開発状況

Knife-Zero v1.14でChef-DK v0.11を併用するとPolicyfileを扱うことができるようになりました。
ついでにChef-Vaultも対応しているので、Chefのコアが提供する機能はほぼ使える状態です。

ということで、このプロジェクトのメンテナンスポリシーは現在次の通りです。

Knife-Zeroのワークフロー

Knife-Zeroの使い方はほとんどChef-Server/Client環境の管理と変わりません。たいていは公式のドキュメントの解説が参考になるはずです。

プラグインとして追加した主要なコマンドは2つです。

リモートのNode(サーバ)にChefをインストールするzero bootstrap、これはknife bootstrapをベースに転送部分を拡張しています。

更新を適用するzero converge、これはknife sshをベースにポートフォワードとchef-clientコマンドの実行方法を指定しています。

zero convergeで使用するQUERYはすでに管理対象であるNodeを検索するためのもので、直接指定とはすこし考え方が違います。こちらもChef公式のドキュメントを参照するのがよいでしょう。

基本的にはこの2つのコマンドでNodeを管理します。

また、zero applyはスポットで単一のレシピを実行するChef-ApplyをSSH経由で実行します。

Nodeオブジェクトも含めてバージョン管理

NodeオブジェクトもGit等で管理したければ、WhiteListを使うとよいでしょう。詳しくはTipsに書いておきます。

どのツールをつかえばいいのか

管理対象にするNodeを調達するところからコードで管理したいならば、まずはchef-provisioningを検討します。

chef-provisioningは調達、更新と廃棄を一元管理します(Chef-Repoの転送はKnife-Soloと似ています)。また、chef-provisioningの管理下でもNodeの更新にはKnife-Zeroのzero convergeを併用できます。

既存、または他のツールでNodeを調達しているならば、Knife-Zeroは便利です。ローカルサーチが不要ならKnife-Soloも選べます。

ChefはしんどいけどRubyがいいならItamaeもいいですよ。

まあ、Getting Startedでやってみましょうか。

Fork me on GitHub