Infrastructure-as-Code Ecosystems

Published in Software Ecosystems: Tooling and Analytics, 2023

Infrastructure as Code (IaC) is the practice of automating the provisioning, configuration, and orchestration of systems onto which software is deployed through scripts in domain-specific languages. With the increasing importance of reliable and repeatable deployments, ecosystems are emerging around online repositories of reusable IaC assets. In this chapter, we study two such ecosystems in detail: the one forming around the Docker Hub repository of reusable Docker images and the one forming around the Ansible Galaxy repository of reusable Ansible roles. We start with an introduction to Docker, the most popular container management tool, and Ansible, the most popular configuration management tool. Although both tools are used to configure machines onto which applications are deployed, they differ fundamentally in the means through which this is achieved. Next, we discuss the Docker Hub and Ansible Galaxy online repositories for reusable Docker images and Ansible roles. Having introduced these emerging ecosystems, we highlight a number of approaches taken by researchers studying them. Subsequently, we survey the state of the art in research on the practices followed by their contributors and users, ranging from the versioning of releases and keeping dependencies up to date to detecting bugs. We conclude with the challenges that researchers face when analyzing these ecosystems.

Recommended citation: Opdebeeck, R., Zerouali, A. & De Roover, C. (2023). Infrastructure-as-Code Ecosystems. In T. Mens, C. De Roover, & A. Cleve (Eds.), Software Ecosystems: Tooling and Analytics (pp. 215-245). Springer. doi: 10.1007/978-3-031-36060-2_9