$\mu$Puppet: A Declarative Subset of the Puppet Configuration Language
Weili Fu, Roly Perera, Paul Anderson, and James Cheney

TL;DR
This paper formalizes a subset of the Puppet configuration language with operational semantics, facilitating understanding, debugging, and potential static analysis, while providing a foundation for future language improvements.
Contribution
It introduces $$Puppet, a formal semantics for a key subset of Puppet, enabling better analysis and understanding of the language's complex features.
Findings
Formal semantics clarifies complex language features
Provides a basis for static typechecking and debugging
Supports implementation in Haskell
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
