The Complete Magazine on Open Source

A Brief Introduction to Puppet

1.18K 0

As a server configuration management tool, Puppet offers an automated way to inspect, deliver and operate software regardless of its deployment. It provides control and enforces consistency, while allowing for any of the modifications dictated by business needs.

The burgeoning demand for scalability has driven technology into a new era with a focus on distributed and virtual resources, as opposed to the conventional hardware that drives most systems today. Virtualisation is a method for logically dividing the computing resources for a system between different applications. Tools offer either full virtualisation or para-virtualisation for a system, driving away from the ‘one server one application’ model that typically under-utilises resources, towards a model that is focused on more efficient use of the system. In hardware virtualisation, a virtual machine gets created and behaves like a real computer with an operating system. The terminology, ‘host’ and ‘guest’ machine, is utilised for the real and virtual system respectively. With this paradigm shift, software and service architectures have undergone a transition to virtual machines, laying the groundwork for distributed and cloud computing.

Enterprise infrastructure

The classical definition of enterprise infrastructure — the data centre, a crucial piece of the puzzle serving to bolster the operations of the company — is evolving in a manner that would have been hard to fathom a decade ago. It was originally built as isolated chunks of machinery pieced together into a giant to provide storage and network support for day-to-day operations. Archetypal representations include a mass of tangled wires and rolled up cables connecting monster racks of servers churning data minute after minute. A few decades ago, this was the norm; today companies require much more flexibility, to scale up and down!

With the advent of virtualisation, enterprise infrastructure has been cut down, eliminating unnecessary pieces of hardware, and managers have opted for a cloud storage network that they can scale on-the-fly. Today, the business of cloud service providers is booming because not only startups but corporations, too, are switching to a virtual internal infrastructure to avoid the hassles of preparing and maintaining their own set of servers, especially considering the man hours required for the task. Former US Chief Information Officer (CIO) Vivek Kundra’s paper on Federal Cloud Computing, states: “It allows users to control the computing services they access, while sharing the investment in the underlying IT resources among consumers. When the computing resources are provided by another organisation over a wide area network, cloud computing is similar to an electric power utility. The providers benefit from economies of scale, which in turn enables them to lower individual usage costs and centralise infrastructure costs.”

However, setting up new virtual machines at scale presents a new challenge when the size of the organisation increases and the use cases balloon. It becomes nearly impossible to manage the customisation and configuration of each individual instance, considering that an average time of a few minutes needs to be spent per deployment. This raises questions about the switch to the cloud itself, considering the overheads are now similar in terms of the time spent in the case of physical infrastructure. This is where Puppet enters the picture. It is a server configuration management tool that automates the deployment and modification of virtual machines and servers with a single configuration script that can serve to deploy thousands of virtual machines simultaneously.

Figure 1: Overview of virtualisation

Figure 2: Enterprise infrastructure through the ages

Features of Puppet

A server configuration management tool, Puppet gives you an automated way to inspect, deliver and operate software regardless of its deployment. It provides control and enforces consistency while allowing for any modifications as dictated by business needs. It uses a Ruby-like easy-to-read language in preparing the deployment of the infrastructure. Working with both the cloud and the data centre, it is platform-independent, and can enforce and propagate all the necessary changes for the infrastructure. It also allows for the monitoring of each stage to ensure visibility and compliance.

Puppet supports DevOps by providing automation and enabling faster releases without sacrificing on security or stability. It allows for security policies to be set and monitored for regulatory compliance so that the risk of misconfigurations and failed audits is minimised. By treating the infrastructure as code, Puppet ensures the deployments are faster and continuous shipping of code results in lower risk of failure. It streamlines heterogenous technologies and unifies them under a singular configuration management interface. Puppet supports containers and encourages analysis of what the container is made of, at scale. Tools are provided to monitor any discrepancies in functionality in order to gain deeper insight into the deployments of a product.

Where is Puppet used?

There is a generalised subset of applications where Puppet fits in, including automation, test-driven development and configuration management. The security and reliability of the product, combined with its ease of use, allows for quick adoption and integration into the software development cycle of a product. With less time spent on superfluous tasks, more focus can be afforded to core practices and product development, allowing for better returns for the company.

Puppet has found widespread application across large infrastructure networks in companies like Google, Amazon and Walmart. In fact, it is an integrated solution provided with Amazon Web Services and the Google Cloud Engine as well. DevOps has been proven to yield remarkable results and it is time organisations focus on reducing latency and frivolity within cycles to increase efficiency in rollouts.

Figure 3: Puppet: The server configuration management tool

Figure 4: Automation plays a vital role in DevOps

Figure 5: Puppet offered on the AWS Marketplace

Case studies of Puppet

Studies include the case of Staples, which faced a challenge in terms of creating a private cloud with automated provisioning and speeding up development cycles. With the introduction of Puppet into the picture, the developers had the freedom to provision their own systems and create their own configurations. This resulted in increased stability and, needless to say, faster deployments. SalesForce and Hewlett Packard have also attested as to how integrating Puppet into their workflow enabled code delivery timelines to reduce to hours from weeks and allowed support for more efficient DevOps practices, including automation.

Getty Images, another popular service provider, that originally used the open source version of Puppet decided to try out the enterprise version on a smaller scale. As it switched to an agile model, test-driven development and automation were key to its development cycles and the use of Puppet expanded thereon.

Figure 6: DevOps is gaining visibility

Figure 7: Companies that use Puppet

Puppet offers a promising solution for configuration management, as well as an array of assorted tools to bolster its core product offering. It is a must-try for organisations facing code shipping issues, time constraints and deployment woes.