Puppet is an infrastructure-as-code tool for configuration management. Written in Ruby, it uses managed-node agents that periodically pull configuration from a central Puppet master and apply changes toward a declared desired state. section 25.2.3
Key characteristics distinguish Puppet from other infrastructure automation tools:
- Uses an agent-based architecture: each managed device requires installed Puppet software. section 25.2.3
- Uses a pull model: agents connect to the Puppet master to retrieve configuration instead of receiving server-initiated pushes. section 25.2.3
- Uses the declarative Puppet DSL to describe the desired infrastructure state and determine necessary compliance changes. section 25.2.3
- Fits configuration management more directly than network management because some network devices do not support a Puppet agent. section 25.2.3
Declarative service resource
service { 'ssh': ensure => running, } This resource declares that the SSH service should be running; the agent applies the required change on the managed node. section 25.2.3
service { 'ssh': #1
ensure => running, #1
} #1
Inspect the compact Puppet DSL resource that declares a running SSH service. section 25.2.3
