Infrastructure-as-Code for Data-Intensive Architectures: A Model-Driven Development Approach