How often do you have to manually apply the same steps when setting up a server environment for yourself? Being in charge of tens, hundreds, sometimes even thousands of servers also means that there are hundreds of deployments to handle, configurations to make, patches to apply, security issues to solve, and updates to download. Imagine if all of these manual actions were coded and treated the same way as the other software systems!
Thank heavens for automation. Over the years, system administrators found out a way to present infrastructures as code that would take care of the boring routine tasks. Puppet and Chef are great result examples of these efforts.
In this blog post we will try to explain the basic ideas behind Infrastructure Automation and Management along with some characteristics of the notable projects such as Puppet and Chef and finally describe the Remsys Infrastructure Management Platform – a product that makes it extremely easy for you to deploy, configure and manage hundreds of servers within your infrastructure (to learn more download the IMP White Paper here).
So, what is Infrastructure Automation?
Infrastructure automationis the way of coding the processes within your infrastructure — from installing an OS, to configuring servers, to configuring how the servers communicate with each other, and a lot more. By coding these processes, you are able to apply identical configurations to one server or hundreds of them.
There are different names for infrastructure automation and management: configuration management, coded infrastructures, system configuration management, etc. The main idea remains the same: you are presenting your infrastructure as a code, to minimize the impact of a possible error and eliminate the configuration drift, simultaneously increasing the speed of server deployment and configuration operations.
A multitude of commercial and open source products appeared in the recent years. Here are just some of them: Puppet, Chef, CfEngine, Bcfg2 Ansible, etc. But let’s look at the most popular ones: Puppet and Chef. They both use a Ruby DSL (domain-specific language) for coding infrastructures. Both are applied primarily for automating Linux systems and rarely for Windows. Both can be reproduced multiple times with you getting identical configurations regardless of how many times you apply it.
Chef project was started in 2009. Both Puppet and CFEngine were its major influencers. Chef supports a large number of platforms including but not limited to: Debian, Fedora, Ubuntu, Mac OS X, and Windows. One of the differences from Puppet is that Chef is coded in Ruby and Erlang, so you’ll have to write your cookbooks or specifications in Ruby only, a subdivision of the language that is sometimes is referred to as an internal Ruby domain-specific language. Puppet, however, is ruled by the external Ruby DSL.
Anyhow It isn’t really a matter of the language. The main difference is: Puppet code represents a list of relationships that it interprets. When you mention, "Configure A before B," you can do so in any part of the script. Puppet will locate it and make sure that A is configured first.
Chef, however, is much clearer. You need to ensure that the part for configuring A is placed before the part for configuring B since Chef strictly adheres to the commands it is provided with.
So by now, you are probably asking yourself: “which one would work better for my organization?” The answer is simple. There isn’t a perfect solution for everyone. Both Puppet and Chef would work great for you in case you represent a large organization, that affords to send their system administrators to the pricey (and when I say pricey I mean almost $20,000) five day Puppet Labs courses. But when you are a small to medium size company, it gets difficult to afford the time and financial resources for this kind of projects. Luckily there is a turnkey product, developed by Remsys – an Infrastructure Management Platform or simply IMP.
IMP lets your infrastructure achieve the desired state of automation. Your system administrators will no longer be confronted with routine manual configuration management tasks that were previously required.
How it works:
Here is a very quick and simplified example of how IMP works in a given infrastructure:
1. Technical Staff determines and creates the manifests (files, which contain configurations, which inform the Master Node on how to handle configuration management process when it is started)
2. Manifests are stored on VCS (Version Control System) Repository and forwarded to the Master Node when changes occur.
3. The Master Node automates the configuration management for each group of servers/clusters with the help of modules and manifests:
a) Configuration Management (CM) client regularly runs on each server.
b) CM client receives specific instructions from the Master Node and executes them accordingly.
c) After the execution, CM client sends the run status and additional reports back to the Master Node.
4. Reporting Dashboard provides comprehensive analysis of all the processes happening in the system. With a set of reports and graphs it is easy to be aware of and control the platform’s performance.
The platform takes Puppet open source approach to a new level, providing greater infrastructure visibility, transparency and control. When implementing IMP, you will not be forced to complete any expensive courses or spend multiple hours studying modules. What you get is an individually customized product that can be applied almost instantly, answering all of your infrastructure automation needs.
You can always learn more about IMP by downloading our Infrastructure Management Platform White Paper available HERE