"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 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. 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
On Tue, Feb 3, 2015 at 9:07 AM, Leonid Medvedev email@example.com
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):
- 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
- MySDK installed on the same host with Chef Client.
- 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).
- The Chef Server sends a request to other Chef Clients which have to
perform cookbooks according received trigger.
- Chef Clients perform cookbooks and notify Chef Server about results.
- Chef Server sends this result to the Chef Client (first host).
- Chef Client informs MySDK (they are on first host) about results of the