Puppet

Short description: Open source configuration management software

Puppet

Developer(s)| Puppet
Initial release| 2005; 21 years ago (2005)
Stable release| 6.16.0 (June 3, 2020; 5 years ago (2020-06-03)[1]) [±]
Written in| C++ & Clojure from 4.0,[2] Ruby
Operating system| Linux, Unix-like, Microsoft Windows
Type|

* Software configuration management
* Infrastructure as Code

License| Open Source Puppet: Apache for >2.7.0, GPL for prior versions.
Puppet Enterprise: proprietary[3]
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,[4] 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.[5]

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,[6] 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.[7][8] Puppet itself is written in Ruby, Facter is written in C++, and Puppet Server and Puppet DB are written in Clojure.[9]

## Contents

* 1 Design
* 1.1 Architecture
* 2 Vendor
* 3 See also
* 4 References
* 5 External links

## 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.[10]

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

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.[11] 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.[12]

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.[13] 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

Type| Private[14]
Industry| Computer software[14]
Founded| 2005; 21 years ago (2005)[citation needed]
Headquarters| Portland, Oregon , U.S.

Key people

| Luke Kanies (Founder), Yvonne Wassenaar (CEO), Andrew Shafer
Products| Puppet, Puppet Enterprise, and Puppet Forge[15]
Website| puppet.com
Puppet Founder Luke Kanies

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

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 some commercial components.[16] In September 2011, the company released Puppet Enterprise 2.0, which introduced integration with MCollective, acquired by Puppet in 2010,[17] as well as provisioning for virtual machines on Amazon EC2 and VMware.[18] In June 2013, Puppet released Puppet Enterprise 3.0, which features a rewritten orchestration engine.[19]

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

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

In June of 2018 Puppet raised $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.[25]

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

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

## See also

* Comparison of open-source configuration management software
* CFEngine

## References

1. ↑ "Puppet release notes". https://puppet.com/docs/puppet/latest/release_notes_puppet.html.
2. ↑ "Evolving Puppet for the Next 10 Years". Luke Kanies. 2014-09-23. https://puppet.com/blog/evolving-puppet-for-next-10-years.
3. ↑ "Puppet Master License Agreement". https://puppet.app.box.com/v/2018-master-license-agreement.
4. ↑ Rao, Leena (29 November 2011). "Cisco, Google Ventures, VMware Put $8.5M In Data Center Automation Startup Puppet Labs". TechCrunch. https://techcrunch.com/2011/11/29/cisco-google-ventures-vmware-put-8-5m-in-data-center-automation-startup-puppet-labs/.
5. ↑ Graner, Amber. "Puppet Labs Announces Puppet Enterprise". http://www.linuxpromagazine.com/Online/News/Puppet-Labs-Announces-Puppet-Enterprise.
6. ↑ "Puppet Frequently Asked Questions". Puppet Labs. http://docs.puppetlabs.com/guides/faq.html.
7. ↑ "Docs: PE 2.0 - Installing - System Requirements". Puppet. http://docs.puppet.com/pe/2.0/install_system_requirements.html.
8. ↑ "Puppet system requirements". Puppet. https://puppet.com/docs/puppet/5.5/system_requirements.html.
9. ↑ "Evolving Puppet for the Next 10 Years". Luke Kanies. 2014-09-23. https://puppet.com/blog/evolving-puppet-for-next-10-years.
10. ↑ "Deploying Apache Tomcat Applications With Puppet". tomcatexpert.com. http://www.tomcatexpert.com/blog/2010/04/29/deploying-tomcat-applications-puppet.
11. ↑ "Overview of Puppet's architecture — Documentation — Puppet". https://docs.puppet.com/puppet/4.6/reference/architecture.html.
12. ↑ Krum, Hevelingen, Kero, Turnbull, McCune (9 December 2013). Pro Puppet. Apress. ISBN 978-1430260400.
13. ↑ "Facter". https://puppet.com/docs/facter.
14. ↑ 14.0 14.1 "Company Overview of Puppet Labs, Inc". Bloomberg Businessweek. http://investing.businessweek.com/research/stocks/private/snapshot.asp?privcapId=60472355.
15. ↑ "Puppet Enterprise". Puppet. https://puppet.com/products/puppet-enterprise.
16. ↑ Kerner, Sean Michael (2 February 2011). "Puppet Goes After Enterprise System Management". Enterprise Networking Planet. http://www.enterprisenetworkingplanet.com/news/article.php/3923256/Puppet-Goes-After-Enterprise-System-Management.htm.
17. ↑ Rao, Leena (7 October 2010). "Data Center Automation Startup Puppet Labs Acquires OPen Source Project The Marionette Collective". TechCrunch. https://techcrunch.com/2010/10/07/data-center-automation-startup-puppet-labs-acquires-open-source-project-the-marionette-collective/.
18. ↑ Finley, Klint (22 September 2011). "Puppet 2.0 Will Support Amazon EC2 and VMware Provisioning". Silicon Angle. http://siliconangle.com/blog/2011/09/22/puppet-2-0-will-support-amazon-ec2-and-vmware-provisioning/.
19. ↑ New Puppet tool beefs up orchestration automation for enterprise use — Tech News and Analysis. Gigaom.com (2013-06-25). Retrieved on 2013-12-09.
20. ↑ "Welcome to the Puppet family, Distelli!". https://puppet.com/blog/welcome-distelli-to-puppet-family.
21. ↑ "Pipelines for Applications user's guide - Pipelines for Applications enterprise | Puppet". https://puppet.com/docs/pipelines-for-apps/enterprise/index.html.
22. ↑ "Pipelines for Containers user's guide - Pipelines for Containers enterprise | Puppet". https://puppet.com/docs/pipelines-for-containers/enterprise/index.html.
23. ↑ "Introducing Puppet Pipelines™ and Puppet® Container Registry". https://puppet.com/blog/introducing-puppet-pipelines-and-puppet-container-registry.
24. ↑ "Announcing Puppet Discovery™ general availability: 8 May". https://puppet.com/blog/announcing-puppet-discovery-general-availability.
25. ↑ "Puppet raises $42M led by Cisco as its DevOps automation platform passes 40,000 businesses" (in en-US). http://social.techcrunch.com/2018/06/27/puppet-raises-42m-led-by-cisco-as-its-devops-automation-platform-passes-40000-businesses/.
26. ↑ Rao, Leena (29 November 2011). "Cisco, Google Ventures, VMware Put $8.5M in Data Center Automation Startup Puppet Labs". TechCrunch. https://techcrunch.com/2011/11/29/cisco-google-ventures-vmware-put-8-5m-in-data-center-automation-startup-puppet-labs/.
27. ↑ "Perforce Software acquires Puppet" (in en-US). https://social.techcrunch.com/2022/04/11/perforce-adds-infrastructure-automation-tooling-with-puppet-acquisition/.
28. ↑ Spencer, Malia (August 8, 2022). "Perforce Software starts layoffs at Portland's Puppet". The Business Journals: Portland Inno. https://www.bizjournals.com/portland/inno/stories/news/2022/08/08/perforce-puppet-layoffs-15-percent.html?ana=RSS&s=article_search.

## External links

* Official website

* v
* t
* e

Ruby programming language

Implementations|

| Active|

* Ruby MRI; YARV
* mruby
* JRuby
* Rubinius
* MagLev
* RubyMotion

|

Discontinued|

* MacRuby
* IronRuby
* XRuby
* HotRuby

IDE|

* Komodo
* NetBeans
* RadRails
* RubyMine

Applications|

* Capistrano
* Hackety Hack
* Interactive Ruby Shell
* Pry
* Rake
* Redmine
* RSpec
* RubyGems
* RVM
* Chef
* Puppet
* Vagrant
* Homebrew
* CocoaPods
* fastlane (mobile app build automation tools)

Libraries and frameworks|

* Adhearsion
* Camping
* eRuby (RHTML)
* Merb
* Padrino
* RubyCocoa
* Ruby on Rails
* Shoes
* Sinatra
* QtRuby

Server software|

* mod ruby
* Mongrel
* Phusion Passenger (mod_rails/mod_rack)
* Rack
* WEBrick

People|

* Yukihiro Matsumoto
* David Heinemeier Hansson
* why the lucky stiff

Other|

* Document format
* why's (poignant) Guide to Ruby
* Ruby Central
* RubyKaigi
* RubyForge
* Ruby License

* Category
* Commons

0.00

(0 votes)

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:Puppet&oldid=784101"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template