Knife-ZeroはChefのプラグインです。特徴はだいたい次のとおり。
まずKnife-ZeroはKnife-Soloの乗り換え先ではありません。 Knife-Soloからの乗り換えを考えているなら、Chef-Runをおすすめします。
Knife-ZeroはChef-Server/Client環境のサブセットであるローカルモードに、対象をリモートにできる機能を追加します。
Chef-Serverの導入前につかってもよいし、Knife-Soloのように管理してもよし。Whitelistをうまくつくって、NodeオブジェクトをGitで管理してもOKです。
とりあえず日本語情報はリンク集を。
あと、Chef-ZeroとKnife-Zeroは別モンです。混同注意。
Chef-Zero: Chef社の軽量Chef-Server
Knife-Zero: ユーザが作ったChef-ZeroをSSH越しに使うプラグイン
Knife-Zero v1.14でChef-DK v0.11を併用するとPolicyfileを扱うことができるようになりました。 ついでにChef-Vaultも対応しているので、Chefのコアが提供する機能はほぼ使える状態です。
ということで、このプロジェクトのメンテナンスポリシーは現在次の通りです。
Knife-ZeroとChef Infra Client(Chef-Client)それぞれののバージョン対応は以下。
ほか、cinc-clientがただの別名義であるうちはサポートしてると思います。 => cinc-client をつかいたい
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オブジェクトもGit等で管理したければ、AllowedListを使うとよいでしょう。詳しくはTipsに書いておきます。
ただリモートのノードにChefのレシピを適用したい、という場合は公式のツールセットである Chef Workstation に含まれる chef-run
というのがあります。
既存、または他のツールでNodeを調達しているならば、Knife-Zeroは便利です。ローカルサーチが不要ならKnife-Soloも選べます。
ChefはしんどいけどRubyがいいならItamaeもいいですよ。
まあ、Getting Startedでやってみましょうか。