Warning: Undefined array key "HTTP_USER_AGENT" in /home/xs085510/creationline.com/public_html/tech-blog/cms_x3GWkuX/wp-content/themes/creationline7/functions.php on line 1890
[和訳] ソロからゼロへ: Chef Clientローカルモードへの移行 #opschef_ja #getchef_ja - クリエーションライン株式会社

[和訳] ソロからゼロへ: Chef Clientローカルモードへの移行 #opschef_ja #getchef_ja

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本項は From Solo to Zero: Migrating to Chef Client Local Mode (2014/06/24) の和訳です。

Chef SoloはChefの原型です。Chef Serverが製品として存在する以前の古き悪しき日々を思い出すと、Chefを用いるにはシステムからシステムへRecipeとCookbookの巨大なtarボールをscpやftpなんてもので転送するしかなかったですよね?

5年が経ち、私達は堅牢でスケーラブルなChef Serverを持っているだけでなく、クライアント・サーバモデルに加えてローカルモードで動くChef Clientを持っています。Chef ClientローカルモードはChef Soloのすべての機能をエミュレートしているので、コマンドラインツールとしてのchef-soloに引退してもらうときがついにやってきました。

Chef Zeroとは?

2012年の終わり、ChefのソフトウェアエンジニアJohn Keiserが研究の成果としてChef Zeroを作成しました。「研究」というには、本来の面白い話である出来事とちょっと語弊があるかもしれません。Chef社では、Chefソフトウェア開発活動にブラックフライデーはいい日だと言うに留めておきましょう。

Chef Zeroは開発のために、完全で、インメモリで、高速起動するChef Serverです。データをディスクに残したり、認証や認可を行うこともありません。その後Chef Zeroは、chef-client--local-modeパラメータを与えて実行することでChef Clientローカルモードで動作できるようにするために、Chef Client 11.8.0に取り込まれました

ローカルモードは実行中に、ローカルChef Zeroサーバをlocalhostに起動し、すべてのローカルCookbookとRecipeをそちらにアップロードし、Chef Clientを実行し、そしてChef Zeroサーバを終了するという一連の動作を除けば、Chef Soloのように動作します。エンドユーザはSoloと同じ動きをしていると感じるでしょう。

なぜSoloからローカルモードに移行するのか

もしSoloを使っているのであれば、Chef Clientローカルモードに移行する数々の興味深い理由があります。

  1. Environment、Role、Data Bag、暗号化Data Bag、Searchに対応するために必要な特別なフラグやめんどくさい手順が不要です。仮にChef ClientをChef Serverと使っておらず、Searchのようなこれらの機能に興味がないとしてもです。
  2. 特別なツールやKnifeプラグインは不要です。
  3. Soloモードかどうかを調べたり、クライアント・サーバの書式から保護するために特別な条件分岐をRecipeに書く必要がなくなります。例えば、次のようなRecipeコードは削除できます。

    if Chef::Config[:solo]
    # do something
    else
    # do something else
    end

    保守するコードが少なくなるので、Recipeのテストも簡単になります。Test Kitchenは既にプロビジョナとしてchefzeroに対応しています。単に.kitchen.ymlchefsolochefzeroに変更するだけで対応可能です。
  4. Test Kitchenのプロビジョナとしてchef_zeroを使うと、テスト中で「実際のNode Object」をテストデータとして用いることができ、これによってテスト中のRecipeであらゆるsearch(...)ロジックを正確にテストすることができます。
  5. Chef Clientローカルモードは、後でクライアント・サーバアーキテクチャが必要だと気がついた際に、より簡単に移行できます。Chef Serverは、tarボールを送信してまわるという前述のワークフローを用いずにCookbook、Role、EnvironmentなどのすべてのChefデータをどのようにすべてのノードに配布したらいいのか?というコンテンツの配布の問題を解決します。

さらに、クライアント・サーバモードは次のようなすばらしい機能があります。

  1. 美しいGUIによって、統計や解析を含む、インフラ全体を俯瞰できます。
  2. インフラ全体をSearchによって検索できます。
    例えば、Nodeをお互いに検知でき、他のNodeの状態に基いてNodeの状態を動的に適合させることができます。手動でなく自動に、です。
  3. 自前でChef Serverを動かしたくなければ、世界で唯一のSaaS構成管理プラットフォームであるホステッド版のEnterprise Chefにアクセスできます。

他にもたくさんあります。

ある顧客は直接、すばらしいクライアント・サーバモードに移行しました。これは私達が推奨する、最も広く展開しているアーキテクチャです。もしまだ準備ができていないのなら、クライアント・サーバへの簡単な移行手順として、ローカルモードは他に並ぶものがないでしょう。

私達はChef Soloをただちに廃止するような計画はありませんが、最終的にChefから削除するつもりです。少なくともデプロイメントをSoloからローカルモードに切り替え始める期待を込めて、ケーススタディを作っています。もしこれからChefを始めようと思っているなら、Soloよりもchef-applyやローカルモードから始めてください。

新規CTA