Detecting Missing Dependencies and Notifiers in Puppet Programs

05/27/2019
by   Thodoris Sotiropoulos, et al.
0

Puppet is a popular computer system configuration management tool. It provides abstractions that enable administrators to setup their computer systems declaratively. Its use suffers from two potential pitfalls. First, if ordering constraints are not specified whenever an abstraction depends on another, the non-deterministic application of abstractions can lead to race conditions. Second, if a service is not tied to its resources through notification constructs, the system may operate in a stale state whenever a resource gets modified. Such faults can degrade a computing infrastructure's availability and functionality. We have developed an approach that identifies these issues through the analysis of a Puppet program and its system call trace. Specifically, we present a formal model for traces, which allows us to capture the interactions of Puppet abstractions with the file system. By analyzing these interactions we identify (1) abstractions that are related to each other (e.g., operate on the same file), and (2) abstractions that should act as notifiers so that changes are correctly propagated. We then check the relationships from the trace's analysis against the program's dependency graph: a representation containing all the ordering constraints and notifications declared in the program. If a mismatch is detected, our system reports a potential fault. We have evaluated our method on a large set of Puppet modules, and discovered 57 previously unknown issues in 30 of them. Benchmarking further shows that our approach can analyze in minutes real-world configurations with a magnitude measured in thousands of lines and millions of system calls.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/28/2017

Probabilistic Program Abstractions

Abstraction is a fundamental tool for reasoning about complex systems. P...
research
06/19/2023

Pipit: Enabling programmatic analysis of parallel execution traces

Performance analysis is an important part of the oft-repeated, iterative...
research
06/03/2021

Homeostasis: Design and Implementation of a Self-Stabilizing Compiler

Mainstream compilers perform a multitude of analyses and optimizations o...
research
03/05/2023

New Abstractions for Quantum Computing

The field of quantum computing is at an exciting time where we are const...
research
08/01/2023

Complexity evaluation of network configurations and abstractions

Computer networks have been traditionally configured by humans using com...
research
05/09/2023

ShapeCoder: Discovering Abstractions for Visual Programs from Unstructured Primitives

Programs are an increasingly popular representation for visual data, exp...
research
04/17/2023

Diagnosing applications' I/O behavior through system call observability

We present DIO, a generic tool for observing inefficient and erroneous I...

Please sign up or login with your details

Forgot password? Click here to reset