Skip to content

Commit

Permalink
Add temp dir cleanup on startup
Browse files Browse the repository at this point in the history
Adding a reliable way of cleaning up the contents of temp dir to make
sure it doesn't pile up terraform binaries and grow in size with every
restart.
  • Loading branch information
DTLP committed Oct 11, 2023
1 parent 3813534 commit 8799251
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,8 @@ repositories:
- `--git-ssh-known-hosts-file (GIT_SSH_KNOWN_HOSTS_FILE)` - (default: `/etc/git-secret/known_hosts`) The local path to the known hosts file used to setup GIT_SSH_COMMAND env.
- `--git-verify-known-hosts (GIT_VERIFY_KNOWN_HOSTS)` - (default: `true`) The local path to the known hosts file used to setup GIT_SSH_COMMAND env.
- `--controller-runtime-env (CONTROLLER_RUNTIME_ENV)` - (default: `""`) The comma separated list of ENVs which will be passed from controller to all terraform run process. The envs should be set on the controller.
- `--cleanup-temp-dir` - (default: `false`) 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.

---

- `--module-label-selector (MODULE_LABEL_SELECTOR)` - (default: `""`) If present controller will only watch and process modules with this label.
Expand Down
26 changes: 25 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"},
Expand Down Expand Up @@ -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, 0777)
if err != nil {
logger.Error("Error creating temporary directory:", err)
}
}

func main() {
app := &cli.App{
Name: "terraform-applier",
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 8799251

Please sign in to comment.