Anyone can set up and run a single server instance on a cloud. That’s easy. To set up and manage multiple server instances that can efficiently and automatically shift gears to match the rise and fall of user demand? That’s hard. It requires DevOps tools such as Puppet.
Puppet according to RightScale’s 2016 survey of DevOps Trends, is the most popular DevOps program It’s used by 42% of all enterprises.
Puppet, like most DevOps programs, automates manual scripting. The program, available in both open-source and commercial versions, has its own language, the eponymous Puppet. This language is written on Ruby. You can also use Ruby with it.
It’s not just another advanced shell language, such as Windows’ PowerShell or Unix and Linux’s Bash or Korn shells or even a full-fledged language like PHP. No, Puppet uses a declarative, model-based approach to IT automation. Puppet’s approach is to model everything — the node’s current state, the desired end state and the actions needed to move from one to the other — as data. Each cloud instance “receives a catalog of resources and relationships, compares it to the current system state and makes changes as needed to bring the system into compliance.”
Here’s how it works: In each Puppet module, you set up the following server parameters using Puppet’s declarative configuration language.
- Simulate configuration changes before enforcing them.
- 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.
This is different from the usual shell scripting, but Puppet Labs’ makes it easy to pick up code and start working. For example, there are Puppet authoring tools for everything from good old vi and EMACS to NetBeans and Visual Studio.
Do you work best from examples? Need to get up and running in a hurry? Then, you’ll like Puppet Forge‘s more than a thousand, downloadable ready-to-run configuration modules.
Say, for instance, you’re running Red Hat Enterprise Linux (RHEL) or a relative, such as CentOS or Oracle Linux, to automate network setup. Just download razorsedge/network and run it. Need to set up a firewall in Linux; manage memcache; manage the NGINX web server? Just download the appropriate module, edit as needed and deploy to your cloud servers. No fuss, no muss.
Say, for example, you wanted to use Puppet to set up a WordPress content management system (CMS) with Puppet on your cloud servers. Instead of installing WordPress, Apache, MySQL and PHP separately, you simply run the module. Within it is a description of what needs to be running for WordPress to work. Puppet takes care of all the heavy lifting behind the scenes.
What’s that you say? You can do that yourself? Of course, you can! But, can you do it quickly by hand and for hundreds and thousands of server instances? No, you can’t. That’s where Puppet shines.
Want to know more about how to make Puppet work for you? Download a Puppet Enterprise virual machine (VM) that comes with multi-step quests and play with it. Like what you see? Then, download the open-source Puppet and give it a try. You can run Puppet Enterprise 2016.1.1 on 10 nodes for free. Then, if it’s making your life a lot easier, consider licensing Puppet. The base price is currently $120 per node.
Personally, I think it’s worth the money. If you value your time, you will too.
Why Agile and DevOps fit like a hand in a glove