On Tue, Sep 11, 2012 at 2:16 PM, Kayode Odeyemi <
dre...@gmail.com> wrote:
>> That doesn't actually map super-well to the design of Puppet, since it
>> doesn't instantly react to change, it reacts on a schedule. You can
>> obviously make the latency low by running all the time, but it is
>> still non-zero.
>>
>> The things you want to do are also not done by talking directly to the
>> agent - you do those by having the catalog that is compiled for the
>> node assert the things you want. So, you are really looking for a way
>> to configure catalog compilation to do what you want, not to talk to
>> the agent.
>>
>> Take a look at the documentation on
https://docs.puppetlabs.com/
>> around the DSL and modules to figure that out; the best match for what
>> you want is an ENC, or "External Node Classifier", which you would
>> have to provide yourself.
>
> I've heard this over-and-over. It just doesn't sink. I always see ENC to be useful
> for getting out information and not modifying configuration or executing actions.
The flow of data would be this:
Your UI updates the ENC.
The ENC informs the Puppet master what classes to include.
The master sends a catalog to the agent.
The agent acts on that information. (eg: start or stop a service)
You could remotely execute `puppet resource` or `puppet apply` to
shortcut some of this, but the basic design is that you build a set of
manifests and modules that define "functionality", and then use
something - our DSL, or an ENC - to determine which functionality
applies to which machine.
>> All that said, if you really want *instant* results, you want to look
>> at MCollective:
>>
http://docs.puppetlabs.com/#mcollectivemcollective
>
> I just figured out the architecture. MCollective + ActiveMQ.
>
> So for each of the scenarios I want to create, I've decided to have a PHP
> code
> that will call the Ruby client, which will then send the message to the
> broker.
>
> Because filters are applied, this helps to identify the right node that
> matches the filters
> in the message. Specific agent on the selected node can then be triggered
> for execution.
That sounds like a reasonable model. The Live Management facilities
we provide in Puppet Enterprise are built around the same basic
architecture, so we know that works well in the real world.