μPuppet: A Declarative Subset of the Puppet Configuration Language

Fu, W., Perera, R. , Anderson, P. and Cheney, J. (2017) μPuppet: A Declarative Subset of the Puppet Configuration Language. ECOOP 2017, Barcelona, Spain, 18-23 Jun 2017.

[img]
Preview
Text
142131.pdf - Published Version
Available under License Creative Commons Attribution.

679kB

Publisher's URL: http://drops.dagstuhl.de/opus/volltexte/2017/7265/pdf/LIPIcs-ECOOP-2017-12.pdf

Abstract

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 μ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. Formalising 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.

Item Type:Conference or Workshop Item
Status:Published
Refereed:Yes
Glasgow Author(s) Enlighten ID:Perera, Dr Roland
Authors: Fu, W., Perera, R., Anderson, P., and Cheney, J.
College/School:College of Science and Engineering > School of Computing Science
Copyright Holders:Copyright © 2017 Weili Fu, Roly Perera, Paul Anderson, and James Cheney
First Published:First published in Proceedings of ECOOP 2017
Publisher Policy:Reproduced under a Creative Commons License
Related URLs:

University Staff: Request a correction | Enlighten Editors: Update this record