diff --git a/main.go b/main.go index 129e9700..06a5f342 100644 --- a/main.go +++ b/main.go @@ -151,7 +151,12 @@ var ( Usage: "The comma separated list of ENVs which will be passed from controller to its managed modules during terraform run. " + "The values should be set on the controller.", }, - + &cli.BoolFlag{ + Name: "cleanup-temp-dir", + Value: false, + Usage: "If set, the OS temporary directory will be removed and re-created. This can help removing redundant terraform" + + "binaries and avoiding temp directory growing in size with every restart", + }, &cli.StringFlag{ Name: "module-label-selector", EnvVars: []string{"MODULE_LABEL_SELECTOR"}, @@ -411,6 +416,20 @@ preferences: {} } +func cleanupTmpDir() { + tmpDir := os.TempDir() + + err := os.RemoveAll(tmpDir) + if err != nil { + logger.Error("Error removing temporary directory:", err) + } + + err = os.Mkdir(tmpDir, 0700) + if err != nil { + logger.Error("Error creating temporary directory:", err) + } +} + func main() { app := &cli.App{ Name: "terraform-applier", @@ -482,6 +501,11 @@ func run(c *cli.Context) { } } + // Cleanup temp directory if the corresponding flag is set + if c.Bool("cleanup-temp-dir") { + cleanupTmpDir() + } + // Find the requested version of terraform and log the version // information execPath, cleanup, err := findTerraformExecPath(ctx, terraformPath, terraformVersion)