Puppet (software)

Last updated
Puppet
Developer(s) Puppet
Initial release2005;19 years ago (2005)
Stable release
8.4.0 / 16 January 2024;2 months ago (16 January 2024)
Repository
Written in C++ & Clojure from 4.0, [1] Ruby
Operating system Linux, Unix-like, Microsoft Windows
Type
License Open Source Puppet: Apache for >2.7.0, GPL for prior versions.
Puppet Enterprise: proprietary [2]
Website puppet.com

Puppet is a software configuration management tool which includes its own declarative language to describe system configuration. It is produced by Puppet Inc., founded by Luke Kanies in 2005. Its primary product, Puppet Enterprise, [3] is a proprietary and closed-source version of its open-source Puppet software. They use Puppet's declarative language to manage stages of the IT infrastructure lifecycle, including the provisioning, patching, configuration, and management of operating system and application components in data centers and cloud infrastructures. [4]

Contents

Puppet uses an open-core model; its free-software version was released under version 2 of the GNU General Public License (GPL) until version 2.7.0, [5] and later releases use the Apache License, while Puppet Enterprise uses a proprietary license.

Puppet and Puppet Enterprise operate on multiple Unix-like systems (including Linux, Solaris, BSD, Mac OS X, AIX, HP-UX) and has Microsoft Windows support. [6] [7] Puppet itself is written in Ruby, Facter is written in C++, and Puppet Server and Puppet DB are written in Clojure. [8]

Design

Puppet is designed to manage the configuration of Unix-like and Microsoft Windows systems declaratively. The user describes system resources and their state, either using Puppet's declarative language or a Ruby DSL (domain-specific language). This information is stored in files called "Puppet manifests". Puppet discovers the system information via a utility called Facter, and compiles the Puppet manifests into a system-specific catalog containing resources and resource dependency, which are applied against the target systems. Any actions taken by Puppet are then reported.

Puppet consists of a custom declarative language to describe system configuration, which can be either applied directly on the system, or compiled into a catalog and distributed to the target system via client–server paradigm (using a REST API), and the agent uses system-specific providers to enforce the resource specified in the manifests. The resource abstraction layer enables administrators to describe the configuration in high-level terms, such as users, services, and packages without the need to specify OS specific commands (such as rpm, yum, apt).

Puppet is model-driven, requiring limited programming knowledge to use. [9]

It comes in two versions, Puppet Enterprise and Open Source Puppet. In addition to providing functionalities of Open Source Puppet, Puppet Enterprise also provides GUI, API and command line tools for node management.

Architecture

Puppet manually invoked on a client 140228puppetrunExampleManuallyInvokedPackageUpdate.png
Puppet manually invoked on a client

Puppet usually follows client-server architecture. The client is known as an agent and the server is known as the master. For testing and simple configuration, it can also be used as a stand-alone application run from the command line.

Puppet Server is installed on one or more servers, and Puppet Agent is installed on all the machines to be managed. Puppet Agents communicate with the server and fetch configuration instructions. The Agent then applies the configuration on the system and sends a status report to the server. [10] Devices can run Puppet Agent as a daemon, that can be triggered periodically as a cron job or can be run manually whenever needed.

The Puppet programming language is a declarative language that describes the state of a computer system in terms of "resources", which represent underlying network and operating system constructs. The user assembles resources into manifests that describe the desired state of the system. These manifests are stored on the server and compiled into configuration instructions for agents on request. [11]

Puppet resource syntax:

type{'title':attribute=>value}

Example resource representing a Unix user:

user{'harry':ensure=>present,uid=>'1000',shell=>'/bin/bash',home=>'/var/tmp'}

Puppet allows users to configure systems in a platform-agnostic way by representing operating system concepts as structured data. Rather than specifying the exact commands to perform a system action, the user creates a resource, which Puppet then translates into system-specific instructions which are sent to the machine being configured. For example, if a user wants to install a package on three different nodes, each of which runs a different operating system, they can declare one resource, and Puppet will determine which commands need to be run based on the data obtained from Facter, a program that collects data about the system it is running on, including its operating system, IP address, and some hardware information. [12] Providers on the node use Facter facts and other system details to translate resource types in the catalog into machine instructions that will actually configure the node.

A normal Puppet run has the following stages:

  1. An agent sends facts from Facter to the master.
  2. Puppet builds a graph of the list of resources and their inter-dependencies, representing the order in which they need to be configured, for every client. The master sends the appropriate catalog to each agent node.
  3. The actual state of the system is then configured according to the desired state described in manifest file. If the system is already in the desired state, Puppet will not make any changes, making transactions idempotent.
  4. Finally, the agent sends a report to the master, detailing what changes were made and any errors that occurred.

Vendor

Puppet, Inc
Company type Private [13]
Industry Computer software [13]
Founded2005;19 years ago (2005)[ citation needed ]
Headquarters Portland, Oregon, U.S.
Key people
Luke Kanies (Founder), Yvonne Wassenaar (CEO), Andrew Shafer
ProductsPuppet, Puppet Enterprise, and Puppet Forge [14]
Website puppet.com
Puppet Founder Luke Kanies LukeKaniesPuppetEnterprise2.jpg
Puppet Founder Luke Kanies

Puppet's vendor Puppet, Inc, is a privately held information technology (IT) automation software company based in Portland, Oregon, USA.

In 2005, Puppet was founded by former CEO Luke Kanies.[ citation needed ] On Jan. 29, 2019 Yvonne Wassenaar replaced Sanjay Mirchandani as CEO. Wassenaar previously worked at Airware, New Relic and VMware.

In February 2011 Puppet released its first commercial product, Puppet Enterprise, built on its open-source base, with some extra commercial components. [15] In September 2011, the company released Puppet Enterprise 2.0, which introduced integration with MCollective, acquired by Puppet in 2010, [16] as well as provisioning for virtual machines on Amazon EC2 and VMware. [17] In June 2013, Puppet released Puppet Enterprise 3.0, which features a rewritten orchestration engine. [18]

Puppet purchased the infrastructure automation firm Distelli in September 2017. [19] Puppet rebranded Distelli's VM Dashboard (a continuous integration / continuous delivery product) as Puppet Pipelines for Applications, [20] and K8s Dashboard as Puppet Pipelines for Containers. [21] The products were made generally available in October, 2017. [22]

In May 2018, Puppet released Puppet Discovery, a tool to discover and manipulate resources in hybrid networks. [23] It is Puppet's third stand-alone enterprise product.

In June 2018, Puppet raised an additional $42 million for a total of $150 million in funding. The round was led by Cisco and included Kleiner Perkins, True Ventures, EDBI, and VMware. [24]

Puppet partners and has technology integrations with VMware, Amazon Web Services, Cisco, OpenStack, Microsoft Azure, Eucalyptus, and Zenoss. [25]

In April 2022, it was announced Puppet had been acquired by the Minneapolis-headquartered software developer, Perforce. [26] The company subsequently laid off 15% of Puppet's workforce in Portland. [27]

See also

Related Research Articles

<span class="mw-page-title-main">VMware</span> Multi-cloud service provider for all apps

VMware LLC is an American cloud computing and virtualization technology company with headquarters in Palo Alto, California. VMware was the first commercially successful company to virtualize the x86 architecture.

HP OpenView is the former name for a Hewlett-Packard product family that consisted of network and systems management products. In 2007, HP OpenView was rebranded as HP BTO Software when it became part of the HP Software Division. The products were available as various HP products, marketed through the HP Software Division. HP Software became part of HPE after the HP/HPE split and HPE Software was eventually sold to MicroFocus.

A virtual storage area network is a logical representation of a physical storage area network (SAN). A VSAN abstracts the storage-related operations from the physical storage layer, and provides shared storage access to the applications and virtual machines by combining the servers' local storage over a network into a single or multiple storage pools.

Cisco NAC Appliance, formerly Cisco Clean Access (CCA), was a network admission control (NAC) system developed by Cisco Systems designed to produce a secure and clean computer network environment. Originally developed by Perfigo and marketed under the name of Perfigo SmartEnforcer, this network admission control device analyzes systems attempting to access the network and prevents vulnerable computers from joining the network. The system usually installs an application known as the Clean Access Agent on computers that will be connected to the network. This application, in conjunction with both a Clean Access server and a Clean Access Manager, has become common in many universities and corporate environments today. It is capable of managing wired or wireless networks in an in-band or out-of-band configuration mode, and Virtual Private networks (VPN) in an in-band only configuration mode.

Gluster Inc. was a software company that provided an open source platform for scale-out public and private cloud storage. The company was privately funded and headquartered in Sunnyvale, California, with an engineering center in Bangalore, India. Gluster was funded by Nexus Venture Partners and Index Ventures. Gluster was acquired by Red Hat on October 7, 2011.

<span class="mw-page-title-main">OpenDNS</span> Domain name system provided by Cisco using closed-source software

OpenDNS is an American company providing Domain Name System (DNS) resolution services—with features such as phishing protection, optional content filtering, and DNS lookup in its DNS servers—and a cloud computing security product suite, Umbrella, designed to protect enterprise customers from malware, botnets, phishing, and targeted online attacks. The OpenDNS Global Network processes an estimated 100 billion DNS queries daily from 85 million users through 25 data centers worldwide.

<span class="mw-page-title-main">VMware ESXi</span> Enterprise-class, type-1 hypervisor for deploying and serving virtual computers

VMware ESXi is an enterprise-class, type-1 hypervisor developed by VMware, a subsidiary of Broadcom, for deploying and serving virtual computers. As a type-1 hypervisor, ESXi is not a software application that is installed on an operating system (OS); instead, it includes and integrates vital OS components, such as a kernel.

The Red Hat Cluster includes software to create a high availability and load balancing cluster. Both can be used on the same system although this use case is unlikely. Both products, the High Availability Add-On and Load Balancer Add-On, are based on open-source community projects. Red Hat Cluster developers contribute code upstream for the community. Computational clustering is not part of cluster suite, but instead provided by Red Hat MRG.


This is a comparison of notable free and open-source configuration management software, suitable for tasks like server configuration, orchestration and infrastructure as code typically performed by a system administrator.

SmartFrog is a Java based open-source framework for helping host large-scale applications across component-based distributed system. It is proposed to make the design, configuration, deployment and management of distributed systems easier, correct and automatic. SmartFrog mainly consists of three aspects: SmartFrog Language, a runtime system, and a library of SmartFrog components that implement the SmartFrog component model.

Heroku is a cloud platform as a service (PaaS) supporting several programming languages. As one of the first cloud platforms, Heroku has been in development since June 2007, when it supported only the Ruby programming language, but now also supports Java, Node.js, Scala, Clojure, Python, PHP, and Go. For this reason, Heroku is said to be a polyglot platform as it has features for a developer to build, run and scale applications in a similar manner across most of these languages. Heroku was acquired by Salesforce in 2010 for $212 million.

Progress Chef is a configuration management tool written in Ruby and Erlang. It uses a pure-Ruby, domain-specific language (DSL) for writing system configuration "recipes". Chef is used to streamline the task of configuring and maintaining a company's servers, and can integrate with cloud-based platforms such as Amazon EC2, Google Cloud Platform, Oracle Cloud, OpenStack, IBM Cloud, Microsoft Azure, and Rackspace to automatically provision and configure new machines. Chef contains solutions for both small and large scale systems.

Cisco Unified Computing System (UCS) is a data center server computer product line composed of server hardware, virtualization support, switching fabric, and management software, introduced in 2009 by Cisco Systems. The products are marketed for scalability by integrating many components of a data center that can be managed as a single unit.

HP ConvergedSystem is a portfolio of system-based products from Hewlett-Packard (HP) that integrates preconfigured IT components into systems for virtualization, cloud computing, big data, collaboration, converged management, and client virtualization. Composed of servers, storage, networking, and integrated software and services, the systems are designed to address the cost and complexity of data center operations and maintenance by pulling the IT components together into a single resource pool so they are easier to manage and faster to deploy. Where previously it would take three to six months from the time of order to get a system up and running, it now reportedly takes as few as 20 days with the HP ConvergedSystem.

HP CloudSystem is a cloud infrastructure from Hewlett Packard Enterprise (HPE) that combines storage, servers, networking and software.

<span class="mw-page-title-main">Virtual Computing Environment</span> American computer hardware brand

Virtual Computing Environment Company (VCE) was a division of EMC Corporation that manufactured converged infrastructure appliances for enterprise environments. Founded in 2009 under the name Acadia, it was originally a joint venture between EMC and Cisco Systems, with additional investments by Intel and EMC subsidiary VMware. EMC acquired a 90% controlling stake in VCE from Cisco in October 2014, giving it majority ownership. VCE ended in 2016 after an internal division realignment, followed by the sale of EMC to Dell.

Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management. Originally designed by Google, the project is now maintained by a worldwide community of contributors, and the trademark is held by the Cloud Native Computing Foundation.

Perforce Software, Inc. is an American developer of software used for developing and running applications, including version control software, web-based repository management, developer collaboration, application lifecycle management, web application servers, debugging tools and agile planning software.

Infrastructure as code (IaC) is the process of managing and provisioning computer data center resources through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools. The IT infrastructure managed by this process comprises both physical equipment, such as bare-metal servers, as well as virtual machines, and associated configuration resources. The definitions may be in a version control system, rather than maintaining the code through manual processes. The code in the definition files may use either scripts or declarative definitions, but IaC more often employs declarative approaches.

References

  1. "Evolving Puppet for the Next 10 Years". Luke Kanies. 2014-09-23. Retrieved 2017-05-26.
  2. "Puppet Master License Agreement". Archived from the original on 2019-08-04. Retrieved 2019-02-07.
  3. Rao, Leena (29 November 2011). "Cisco, Google Ventures, VMware Put $8.5M In Data Center Automation Startup Puppet Labs". TechCrunch.
  4. Graner, Amber. "Puppet Labs Announces Puppet Enterprise".
  5. "Puppet Frequently Asked Questions". Puppet Labs. Archived from the original on 20 March 2016. Retrieved 10 March 2010.
  6. "Docs: PE 2.0 - Installing - System Requirements". Puppet.
  7. "Puppet system requirements". Puppet.
  8. "Evolving Puppet for the Next 10 Years". Luke Kanies. 2014-09-23. Retrieved 2017-05-26.
  9. "Deploying Apache Tomcat Applications With Puppet". tomcatexpert.com. Retrieved 23 January 2015.
  10. "Overview of Puppet's architecture — Documentation — Puppet". docs.puppet.com. Archived from the original on 2016-10-01. Retrieved 2016-09-14.
  11. Krum, Hevelingen, Kero, Turnbull, McCune (9 December 2013). Pro Puppet. Apress. ISBN   978-1430260400.{{cite book}}: CS1 maint: multiple names: authors list (link)
  12. "Facter".
  13. 1 2 "Company Overview of Puppet Labs, Inc". Bloomberg Businessweek. Archived from the original on October 26, 2012.
  14. "Puppet Enterprise". Puppet.
  15. Kerner, Sean Michael (2 February 2011). "Puppet Goes After Enterprise System Management". Enterprise Networking Planet.
  16. Rao, Leena (7 October 2010). "Data Center Automation Startup Puppet Labs Acquires OPen Source Project The Marionette Collective". TechCrunch.
  17. Finley, Klint (22 September 2011). "Puppet 2.0 Will Support Amazon EC2 and VMware Provisioning". Silicon Angle.
  18. New Puppet tool beefs up orchestration automation for enterprise use — Tech News and Analysis. Gigaom.com (2013-06-25). Retrieved on 2013-12-09.
  19. "Welcome to the Puppet family, Distelli!".
  20. "Pipelines for Applications user's guide - Pipelines for Applications enterprise | Puppet". Archived from the original on 2018-07-07. Retrieved 2018-07-07.
  21. "Pipelines for Containers user's guide - Pipelines for Containers enterprise | Puppet". Archived from the original on 2018-07-07. Retrieved 2018-07-07.
  22. "Introducing Puppet Pipelines™ and Puppet® Container Registry".
  23. "Announcing Puppet Discovery™ general availability: 8 May".
  24. "Puppet raises $42M led by Cisco as its DevOps automation platform passes 40,000 businesses". TechCrunch. Retrieved 2019-03-22.
  25. Rao, Leena (29 November 2011). "Cisco, Google Ventures, VMware Put $8.5M in Data Center Automation Startup Puppet Labs". TechCrunch.
  26. "Perforce Software acquires Puppet". TechCrunch. Retrieved 2022-04-11.
  27. Spencer, Malia (August 8, 2022). "Perforce Software starts layoffs at Portland's Puppet". The Business Journals: Portland Inno.