µPuppet: A Declarative Subset of the Puppet Configuration Language

Weili Fu, Roly Perera, Paul Anderson, James Cheney

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract / Description of output

Puppet is a popular declarative framework for specifying and managing complex system configurations. The Puppet framework includes a domain-specific language with several advanced features inspired by object-oriented programming, including user-defined resource types, `classes’ with a form of inheritance, and dependency management. Like most real-world languages, the language has evolved in an ad hoc fashion, resulting in a design with numerous features, some of which are complex, hard to understand, and difficult to use correctly.

We present an operational semantics for $\mu$Puppet, a representative subset of the Puppet language that covers the distinctive features of Puppet, while excluding features that are either deprecated or work-in-progress. Formalizing the semantics sheds light on difficult parts of the language, identifies opportunities for future improvements, and provides a foundation for future analysis or debugging techniques, such as static typechecking or provenance tracking. Our semantics leads straightforwardly to a reference implementation in Haskell. We also discuss some of Puppet’s idiosyncrasies, particularly its handling of classes and scope, and present an initial corpus of test cases supported by our formal semantics.
Original languageEnglish
Title of host publication31st European Conference on Object-Oriented Programming (ECOOP 2017)
PublisherSchloss Dagstuhl - Leibniz-Zentrum fuer Informatik, Germany
Number of pages28
ISBN (Print)978-3-95977-035-4
Publication statusPublished - 13 Jun 2017
Event31st European Conference on Object-Oriented Programming - Barcelona, Spain
Duration: 18 Jun 201723 Jun 2017

Publication series

NameLeibniz International Proceedings in Informatics (LIPIcs)
PublisherSchloss Dagstuhl--Leibniz-Zentrum fuer Informatik
ISSN (Print)1868-8969


Conference31st European Conference on Object-Oriented Programming
Abbreviated titleECOOP 2017
Internet address


Dive into the research topics of 'µPuppet: A Declarative Subset of the Puppet Configuration Language'. Together they form a unique fingerprint.

Cite this