ジュジュはどのようにしてシェフと「共存」し、自動化プロセスを「さらに一歩」進めますか?


15

この投稿から、JujuがChef Serverとは異なる層にいることが明らかです。Jujuはオーケストレーションまたはサービス層に配置され、Chefは個々のサーバーまたは構成層に配置されます

で、Canonicalの主なジュジュページの一つ、それはジュジュは、「一歩」プロセスを取って、シェフや人形のようなツールと「共存」するように設計されていることを述べています。過去数週間、このテーマについてインターネットを精査してきましたが、どのようにChefのようなツールがJuju と共存するのかについての良い説明を見つけることができません。

そのため、タイトルの包括的な質問を分解するには、次のようにします(特にJujuがChef Serverと連携することに対する関心)

  • 「シェフで書かれた」チャームの例は何ですか?それは単にchef-soloコマンドを呼び出すbashで書かれた魅力ですか?もしそうなら、チャームchef-clientはChefサーバーと連携して動作するコマンドを呼び出すことができますか?
  • ジュジュとシェフのオーバーラップはどこですか?たとえば、apache2チャームにはconfig-changed、Chefの世界ではテンプレートファイルを適用することでレシピで行われる設定変更を行うフックがあります。Jujuチャームがapache2サービス(クラスター)のデプロイに関するChefクックブックと連携する場合、タスクを分離できるように「apache2-chef」チャームを記述する必要があるように見えます。この場合、チャームストアのapache2チャームは役に立たないでしょう。
  • ChefロールがJujuによってデプロイ/管理されるノード(サービスユニット)に適用され、システム管理者が特定のサーバーロールのファイアウォールルールを変更することを決定し、これをChefロールで行う場合、Jujuはそれらの変更を上書きしますか?
  • もっと簡単に言えば、JujuはIronfanのようなChef Serverラッパーになれますか?

私はとシェフのサーバーを表示する方法行うことができますジュジュのに対し、どのようにするだけでなく、もたらし何をテーブルに。サービスとマシンの実際の現在の状態を照会し、それに基づいて行動できることを意味します。Chef Serverでこれを行うことはできません。私の目標は、Jujuの認識とサービスオーケストレーション機能をChef Serverが管理するインフラストラクチャに組み込むことです。

Chefが管理するすべてのタスク/構成情報が省略されている場合、チャームのセット全体を記述する必要があるようです。

Canonicalの人(Jorge Castroなど)とOpscode(A. JacobやJ. Timbermanなど)からの計量を聞きたいです。

回答:


13

素晴らしい質問!

tl; dr

あなたの質問をいくつかのコメントに分けたいと思います...最初に、シェフとジュジュを統合するためのいくつかの一般的なアプローチがあります:

  • チャームフックは、サービスユニットでソロスタイルで実行される既存のシェフレシピを使用できます(推奨)

  • jujuサービスユニットは、chef-node下位サービスを使用して既存のchef-serverに登録します

これらのアイデアまだシェフ向けに実装 /テストされていませんが、人形に相当するものは存在します。

...ええと..それほど短くない答え

chefとjujuを統合する2つのアプローチの内訳をもう少し説明します。

トップドッグとしてのジュジュ

ここでは、ジュジュがショーを実行します。jujuが提供する最大の価値は、分散構成管理中のイベント調整です。したがって、「サービスオーケストレーション」という呼び名です。ジュジュチャームは、サービス管理を調整するときに「適切なタイミング」でジュジュによって呼び出されるフックで構成されます。これらのフックの実装はほとんどオープンです。シェルスクリプト、ソースコード、パペットマニフェスト、またはシェフレシピです。

Jujuは、サービス設定の一部を次のように分割します。

  • 「インストール」..特定のサービスをノードにインストールすることに固有のビット

  • 「関係」..そのサービスを他のサービスに関連付けるために必要な設定のビット

シェフのレシピをフック実装として使用する鍵はまさにこれです...使用しているレシピがこの懸念の分離を尊重していることを確認する必要があります。そうでなければ、既製のクックブックの使用を妨げるものは何もありません。開発に時間/お金を費やした既存のレシピを活用できます。...インストール固有のものとは別に関係固有のものを呼び出すことができることを確認する必要があります。

このいくつかの例が必要ですが、人気のあるb / cシェフは優れたdsl、優れたテンプレートツールを備えており、複雑な構成を記述する際にbashよりもはるかに使いやすいです。シンプルな設定の場合、シェフのレシピは少しやり過ぎです。そのため、この統合方法は両方の世界で最も優れています...

トップドッグとしてのシェフ

ここでのアイデアは、jujuサービスを既存のシェフサーバー管理インフラストラクチャに統合することです。これを行うには、シェフノードの従属チャームを作成する必要があります。この下位サービスはプライマリjujuサービスにアタッチされ、これらのサービスをシェフサーバーのノード(特定のロール)として効果的に登録します。潜水艦は、jujuサービスの起動中、または各サービスのライフサイクル全体を通していつでも接続できます。

これはpuppet-nodeサブに非常に似ていると思います。必要なすべてのキー、ロールなどは、設定を介してchef-node従属チャームに指定されます。そこから始めます。より洗練されたアプローチは、chef-node subが接続されているプラ​​イマリサービスとchef-serverの両方に問い合わせて動的にロールを決定することですが、subのconfigでそれらを指定するよりもかなり難しいでしょう。

ご意見

可能であれば、上記の方法1をお勧めします。構成ツールのに調整レイヤーを配置することは、おそらく長期的にはうまく機能します。言うまでもなく、実際のインフラストラクチャは、一定の期間、特に移行中に両方のアプローチの組み合わせまたはバリエーションになる可能性があります。方法2を使用して計画された共存は、おそらく、両方のツールで管理されるコンポーネントが互いに多少直交している場合にのみ機能します。それがどのようになるかは正確にはわかりません。おそらくジュジュとシェフは別々の比較的分離されたサービスを管理しているのでしょうか?jujuがプライマリサービスを管理し、シェフがより多くのインフラストラクチャの側面を管理できるようにすると、うまくいくと思います。ダンノ しかし、それは少し長い議論です:)

補足事項... jujuを使用してchef-server自体を管理することもできます。大規模で複雑な多層chef-serverインストールも可能です。私は最近シェフサーバーの魅力を見ていないが、それがサービスの階層化と分離を現在処理していない場合、それは確かに行うことができます。

上記の両方のタイプのシェフ統合の例をもっと見たいです...しばらくの間、それは私の願い/ todoリストにありましたが、まだ達成するのに十分な優先度でバブルしていません...助けてください興味があります!

さて、それはまともな塊です:)...そこから始めましょう。その後のコメントブロックでより詳細に進むことができます。


ここに素晴らしいもの。「jujuがプライマリサービスを管理し、シェフがより多くのインフラストラクチャの側面を管理できるようにするとうまくいくと思います。」これと同じ疑念を共有しているので、これは私が本当に興味を持っていることです。あなたが言ったように、ChefのDSLとテンプレートは設定に最適です。ただし、最初の方法では、手放しにくいChef Serverの他の側面(データバッグ)があります。サービスレベルのJujuはトップドッグになるはずですが、ChefがChef Serverモデルで最善を尽くすことができるようにする必要があると思います。開発者と管理者の両方で動作する必要があります。しかし、おそらくChef Serverは必要ありません。
イアンD.ロッシ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.