VCS Workflow: Adjust Project Settings
- Remove .terraspace-cache from .gitignore
- Set up pre-push git hook
1. Remove .terraspace-cache from .gitignore
Normally, Terraspace builds a terraform project in the
.terraspace-cache folder that is not meant to be added to versioned controlled. With TFC, the code must be in VCS in order to be ran though. So we must remove the
.terraspace-cache line from the
.gitignore file to commit it.
2. Set up pre-push git hook
Since TFC will run the built Terraform project folders by Terraspace, we must remember to build the project before a
git push. We can use a git pre-push hook to always build and commit the changes so we don’t forget. In your terraform project folder, run:
terraspace new git_hook
Here’s an example with output:
$ terraspace new git_hook
Feel free to customize the
.git/hooks/pre-push further to fit your needs. It’s just a starter hook. The pre-push script looks something like this:
echo "Running: terraspace build placeholder"
TS_ENV=dev terraspace build placeholder
TS_ENV=prod terraspace build placeholder
git add .terraspace-cache
git commit -m 'update .terraspace-cache' || true
The “placeholder” stack is treated specially by Terraspace. Terraspace builds all stack modules, specifically for TFC support.
Also, note how both dev and prod envs are built. You can adjust this by using the
--envs option. Example:
terraspace new git_hook --envs dev stg prod
Now, you won’t have to remember to run
terraspace build before a
git push again.
Terraspace only cleans up env-specific files in .terraspace-cache. If you want to remove the built files from other envs, you must do so manually with
rm -rf. You can also blow away the entire cache and start fresh with:
terraspace clean all