[chef] Re: [Chef] Communcation: MyApp-ChefClient-ChefSrver-ChefClients


Chronological Thread 
  • From: Ranjib Dey < >
  • To: " " < >
  • Subject: [chef] Re: [Chef] Communcation: MyApp-ChefClient-ChefSrver-ChefClients
  • Date: Tue, 3 Feb 2015 13:40:30 -0800

Do It :-)
Its possible
"The Chef Client has to get trigger from MySDK (it can be alarm or field from the database) and sends the trigger to Chef Server (second host)."
 - MySDK has to use mco, or pushy or ansible or blender or rundeck like tool to do this (orchestration engine).

Chef Server does not support plugging in custom modules (last time i checked there were talks about http middlewares, but nothing concrete),

I'll suggest using chef server as artifact store (cookbooks, roles , databags etc) and metadata source (chef search, nodes etc), but not as a messaging system (i.e. chef server triggering client runs), its a different service , you can consolidate them in one box but still they are different.

I have used MCollective[1] to do the same, now im using Serf (fleet wide triggers, and all other automated triggers) and SSH agent (for on demand runs) via blender[2]. You can do same with pushy, but i dont know the full feature set there.

In this scenario, you'll  use chef event handlers to drop serf events or mco calls to indicate state change (like run failed or node converged or a particular file has changed), these event can have payloads. Your app should subscribe these events (like serf handler, for mco u'll use exchanges, topics etc AMQP primitives). Your app can talk to chef server using the ruby or java or go api (whatever language you choose), chef' client's REST abstraction is all you need to talk to chef server.

It will easier to discuss an actual use case (e.g vm provisioning via web service), then we can break down the use case into tasks, and then provide exact examples and compare them side by side :-)

cheers
ranjib



On Tue, Feb 3, 2015 at 9:07 AM, Leonid Medvedev < " target="_blank"> > wrote:
Dear all.

I have one interest question. Please answer is it possible or not? Please advise what is the best choice from your point of view.

The description in details (the picture is in attachment):

1. Hardware configuration:
  - The first host has: MySDK and Chef Client;
  - Second host has Chef Server;
  - other Chef Clients installed on a lot of hosts (for example 100-1000 times).
2. MySDK installed on the same host with Chef Client.
3. The Chef Client has to get trigger from MySDK (it can be alarm or field from the database) and sends the trigger to Chef Server (second host).
4. The Chef Server sends a request to other Chef Clients which have to perform cookbooks according received trigger.
5. Chef Clients perform cookbooks and notify Chef Server about results.
6. Chef Server sends this result to the Chef Client (first host).
7. Chef Client informs MySDK (they are on first host) about results of the trigger.

Thanks&Regards
Leonid




Archive powered by MHonArc 2.6.16.

§