Terragrunt, is however, completely the wrong way to go about it and is far from a thin wrapper, but a prescriptive way to go about writing and organizing and managing Terraform code that makes it awkward to retro-fit into existing codebases. We have tried.
If you are starting from zero, that would be a good time to start with Terragrunt, but on the other hand, you probably don’t need it and the added overhead these days.
I've really enjoyed using both Terraform and Terragrunt, and think you and your company would as well.
Please let me know if there are any questions I can answer
This is not a space I know much about and I have nothing intelligent to ask, but since you know this space and you're soliciting questions, I'll just ask you to confirm or correct a suspicion I have about "devops" in general.
It seems to me there are currently two competing, mutually exclusive paradigms for deployment at scale. One is to develop and deploy microservices in Docker containers and deploy using Kuberneres, and the other is to deploy cloud images using Terraform and config management tools.
It seems to me that these two approaches are pretty much incompatible, and I must choose one or the other, and there's very little overlap, if any. Do you think this is so, or am I missing something important?
You're right that it's somewhat of an afterthought and most IaC tools are focused on native cloud infrastructure though.
Check out Pulumi, they're doing amazing work extending Terraform (utilizing terraform itself, it's open source), as well as bringing kubernetes support for major cloud provider flavours as well as managing service deployments.
I do not see why they could be mutually exclusive, but deploying some services via Docker/Kubernetes and some via Config Management is probably less efficient, because one would have to maintain two separate deployment methods.