Chapter 3. PuppetDB
A model based on agents that receive and apply a catalog received from the Puppet Master has an intrinsic limitation. The client has no visibility and direct awareness about the state of resources of the other nodes.
It is not possible, for example, to execute functions that do different things according to different external conditions, during the catalog application. There are many cases where information about other nodes and services could be useful to manage local configurations. For example, we might have to perform the following actions:
- Start a service only when we are sure that the database, the queues, or any external resource it relies upon are already available in some external nodes
- Configure a load balancer that dynamically adds new servers, if they exist
- Manage the setup of a cluster; this setup involves specific sequences of commands to be executed in a certain order on different nodes
The declarative nature of Puppet's DSL might look inappropriate...