You absolutely need at least one layer of indirection between your infrastructure configuration and the terraform code used to instantiate it.<p>This is both for versatility and for developer sanity. You do not want to constantly be thinking in terms of individual resources, but have enough abstraction so that you are thinking in terms of higher building blocks of <i>your</i> infrastructure.