What is Puppet?
Puppet is a configuration management tool that follows a “control node and managed nodes” principle. The desired state of a system is described in a declarative language. With this, administrators define the desired final state—not how to reach it (idempotency). The definitions for the managed systems are stored in so-called “manifests” on the Puppet control node, for example your orcharhino or orcharhino proxy.
The agent running on the managed nodes regularly asks the control node for the desired status and corrects deviations. It automatically adjusts configuration drifts, for example if users made local changes and the system is therefore no longer in the desired state. Possible commands are creating and modifying individual files, managing user accounts and software packages, but also include more complex tasks.
Manifests and dynamic file templates are written in Ruby or a Ruby-oriented syntax and follow a strict class concept. Parameters for the manifests are either stored in a database on the Puppet control node or are dynamically queried by an external node classifier, such as a Data Center Inventory Management or a Configuration Management Database.