diff --git a/engines/terraform/outputs.go b/engines/terraform/outputs.go new file mode 100644 index 0000000..3e6aa83 --- /dev/null +++ b/engines/terraform/outputs.go @@ -0,0 +1,22 @@ +package terraform + +import ( + "github.com/aws/jsii-runtime-go" + "github.com/hashicorp/terraform-cdk-go/cdktf" +) + +func (td *TerraformDeployment) createOutputs() { + for name, module := range td.terraformResources { + td.createOutputsForModule(name, module) + } + + for name, module := range td.terraformInfraResources { + td.createOutputsForModule(name, module) + } +} + +func (td *TerraformDeployment) createOutputsForModule(name string, module cdktf.TerraformHclModule) { + cdktf.NewTerraformOutput(td.stack, jsii.Sprintf("%s_outputs", name), &cdktf.TerraformOutputConfig{ + Value: module, + }) +} diff --git a/engines/terraform/terraform.go b/engines/terraform/terraform.go index 7ec0fae..adbb286 100644 --- a/engines/terraform/terraform.go +++ b/engines/terraform/terraform.go @@ -231,6 +231,9 @@ func (e *TerraformEngine) Apply(appSpec *app_spec_schema.Application) (result st } } + // Create outputs for all resources + tfDeployment.createOutputs() + tfDeployment.Synth() return filepath.Join(e.outputDir, "stacks", appSpec.Name), nil