Question about the terragrunt experimental "IaC engines" support #3962
Replies: 1 comment 10 replies
-
Hey @mattwilder , Great question. This is the right place for it, and so is the Terragrunt Discord. The reason the IaC Engines feature isn't documented in the experiments section is that it predates the experiments system. I've been meaning to add it, but I haven't had the time to justify going through what will end up providing little value to end users. Yes. IaC Engines were built to support running with the client and server running on different machines. Anything that makes it less than ideal for doing that right now is something we'd love to learn more about. At a high level, the design philosophy for IaC Engines is as follows: The responsibility for IaC Engines start right when Terragrunt would normally invoke The fact that the IaC engine always starts running on the same host as Terragrunt (although it, in turn, could start a remote connection with a different host), is what lead us to design the interface for IaC Engines to be as minimal as possible, and to expect plugin authors to handle acquiring any data they need from the host before they establish a remote connection. We've left open the generic That being said, the reason that IaC Engines are in experimental status is that we haven't had a lot of users willing to try it out and give us feedback on real world usage. We've left it in experimental status to leave open the possibility of changing the interface between Terragrunt and engines. If you do start adopting IaC Engines, and you find that there's a really good case to be made to expand the interface between Terragrunt and IaC Engines, we're open to making adjustments. |
Beta Was this translation helpful? Give feedback.
-
Apologies if this is the wrong place for this, but I did not see a section under the "Experiments" section.
I was looking at the documentation for the experimetnal IaC Engines functionality, specifically the client/server example.
It looks to me like the code in the example is designed in a way so that the client and server have to run on the same machine, as they both have to have access to the working directory. Has there been any thought given to how this might work when the client/server are on different machines?
For example, is there any way using the engine framework to communicate the rendered terraform state (ex: output from a
terraform {}
block, along with agenerate {}
block, and aremote_state {}
block) from the client to the server so that commands can be executed even if they are not on the same machine?I ask because this functionality looks incredibly promising to resolve an issue we are facing with IaC provisioning in customer environments, where we don't want to ship our entire terragrunt code base (with configs for many other environments) just to provision the single provider. I just don't see how we could communicate the rendered terraform environment across the client/server boundary.
Was this not the designed use case of engines, or am I missing something?
Thanks.
Beta Was this translation helpful? Give feedback.
All reactions