Knife-Plugin Zero

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は別モンです。混同注意。

Knife-Zeroの開発状況

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のワークフロー

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等で管理したければ、AllowedListを使うとよいでしょう。詳しくはTipsに書いておきます。

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

ただリモートのノードにChefのレシピを適用したい、という場合は公式のツールセットである Chef Workstation に含まれる chef-run というのがあります。

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

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

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

Fork me on GitHub