What is Puppet?
Puppet is simply an IT automation software that helps system administrators to manage infrastructure throughout its lifecycle, from provisioning and configuration to patch management and compliance and to automate repetitive tasks, quickly deploy critical applications, and proactively manage change, scaling from 10s of servers to 1000s.
The content of this post is available as Presentation with more technical details.
How Puppet Works?
Puppet uses a declarative, model-based approach to IT automation that can be summarized in 4 steps:
- Define the desired state of the infrastructure’s configuration using Puppet’s declarative configuration language
- Simulate configuration changes before applying
- Enforce the deployed desired state automatically, correcting any configuration drift
- Report on the differences between actual and desired states and any changes made enforcing the desired state
Resources
System’s configuration is a collection of resources that vary in size, complexity, and lifespan.
For example:
- File
- User account
- Software package
- Running service
- Scheduled cron job
The implementation/representation of these resources is different based on which operating system you are using. For example, you’d need a different command to start or stop a service on Windows than you would on Linux
Resource Abstraction
Similar resources can be grouped into types:
- File "readme.txt" has the same attributes (path, permissions, owner, ...) and will tend to look like all other services
- User "dave" has the same attributes (shell, group, home directory, ...) will tend to look like all other users
The description of a resource type can be separated from its implementation. You can talk about whether a service is started without needing to know what OS is in use or how to start it.
The main concept behind Puppet is to describe the desired resource states in a way that isn’t tied to a specific OS by saying "make sure this user exist and has these attributes" instead of saying “run these commands that create this user with these parameters if does not exist".
Resource Types
Puppet has many built-in resource types, and you can install even more as plugins. Each type has a different set of attributes available.
Printable cheat sheet that explains the eight most useful types is available here:
Puppet splits resources into types and providers that lets you describe resources in a way that can apply to any system:
- Types: high-level description
- Providers: platform-specific implementations
Puppet will have a definition of what state a resource should have. To sync the resource, it query the current state, compares that against the desired state, then make any necessary changes.
More to come in the next few days :)
excellent piece of information, and let me tell you, your site gives the best and the most interesting information. This is just the kind of information that i had been looking for, i'm already your rss reader now and i would regularly watch out for the new posts, once again hats off to you! Thanx a lot once again, Regards, devops training in hyderabad
ReplyDelete