Sure, you can hide all configuration behind some abstraction, but that doesn't really change the fact that the configuration is still there. The moment you need to do something even slightly different than out-of-the-box, you're hosed. Additionally - IAC can work as documentation. "What's running in (environment)?" is a question that can usually quickly be answered by looking at the IAC itself, whereas this solution, you'd have to go poking around in some console and pray to god you're in the right place.