Tortoise: Interactive System Configuration Repair
by Aaron Weiss, Arjun Guha, Yuriy Brun
Abstract:

System configuration languages provide powerful abstractions that simplify managing large-scale, networked systems. Thousands of organizations now use configuration languages, such as Puppet. However, specifications written in configuration languages can have bugs and the shell remains the simplest way to debug a misconfigured system. Unfortunately, it is unsafe to use the shell to fix problems when a system configuration language is in use: a fix applied from the shell may cause the system to drift from the state specified by the configuration language. Thus, despite their advantages, configuration languages force system administrators to give up the simplicity and familiarity of the shell.

This paper presents a synthesis-based technique that allows administrators to use configuration languages and the shell in harmony. Administrators can fix errors using the shell and the technique automatically repairs the higher-level specification written in the configuration language. The approach (1) produces repairs that are consistent with the fix made using the shell; (2) produces repairs that are maintainable by minimizing edits made to the original specification; (3) ranks and presents multiple repairs when relevant; and (4) supports all shells the administrator may wish to use. We implement our technique for Puppet, a widely used system configuration language, and evaluate it on a suite of benchmarks under 42 repair scenarios. The top-ranked repair is selected by humans 76% of the time and the human-equivalent repair is ranked 1.31 on average.

Citation:
Aaron Weiss, Arjun Guha, and Yuriy Brun, Tortoise: Interactive System Configuration Repair, in Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE), 2017, pp. 625–636.
Bibtex:
@inproceedings{Weiss17ase,
  author = {Aaron Weiss and Arjun Guha and Yuriy Brun},
  title = {\href{http://people.cs.umass.edu/brun/pubs/pubs/Weiss17ase.pdf}{Tortoise: {Interactive} System Configuration Repair}},
  booktitle = {Proceedings of the 32nd IEEE/ACM International Conference on
  Automated Software Engineering (ASE)}, 
  venue = {ASE},
  month = {October/November},
  year = {2017},
  date = {31--2},
  address = {Urbana-Champaign, IL, USA},
  pages = {625--636},
  doi = {10.1109/ASE.2017.8115673},
  note = {\href{https://doi.org/10.1109/ASE.2017.8115673}{DOI: 10.1109/ASE.2017.8115673},
  arXiv: \href{https://arxiv.org/abs/1709.05366}{abs/1709.05366}},
  fundedBy = {NSF CNS-1413985, NSF CCF-1453474, NSF CCF-1564162, NSF CCF-1717636, NSF CNS-1744471},

  accept = {$\frac{65}{314} \approx 21\%$},

  abstract = {<p>System configuration languages provide powerful abstractions that simplify
  managing large-scale, networked systems. Thousands of organizations now use
  configuration languages, such as Puppet. However, specifications written in
  configuration languages can have bugs and the shell remains the simplest way
  to debug a misconfigured system. Unfortunately, it is unsafe to use the shell
  to fix problems when a system configuration language is in use: a fix applied
  from the shell may cause the system to drift from the state specified by the
  configuration language. Thus, despite their advantages, configuration
  languages force system administrators to give up the simplicity and
  familiarity of the shell.</p>
  
  <p>This paper presents a synthesis-based technique that allows administrators to
  use configuration languages and the shell in harmony. Administrators can fix
  errors using the shell and the technique automatically repairs the
  higher-level specification written in the configuration language. The
  approach (1) produces repairs that are consistent with the fix made using the
  shell; (2) produces repairs that are maintainable by minimizing edits made to
  the original specification; (3) ranks and presents multiple repairs when
  relevant; and (4) supports all shells the administrator may wish to use. We
  implement our technique for Puppet, a widely used system configuration
  language, and evaluate it on a suite of benchmarks under 42 repair scenarios.
  The top-ranked repair is selected by humans 76% of the time and the
  human-equivalent repair is ranked 1.31 on average.</p>},
}