Terraspace Hooks

Note: Premium video content requires a subscription.

You can use hooks to run scripts at specific steps of the Terraspace lifecycle. These lifecycle points occur at a higher-level than the terraform commands.

Lifecycle Hooks

Hook Description
build When Terraspace builds or compiles the Terraspace project to the .terraspace-cache folder.

Generator

To help you get started quickly, you can generate starter hook code. Check out the examples in the Hooks Generator Docs.

Example

config/hooks/terraspace.rb

before("build",
  execute: "echo hi",
)

after("build",
  execute: "echo bye"
)

exit on fail

By default, if the hook commands fail, then terraspace will exit with the original hook error code. You can change this behavior with the exit_on_fail option.

before("build",
  execute: "/command/will/fail/but/will/continue",
  exit_on_fail: false,
)

In this case, regardless of the hook command succeeding or failing, Terraspace will continue right along.

General Form

before(COMMAND_NAME, OPTIONS)

The command name corresponds to the terraspace commands.

Hook Options

Name Description
label A human-friendly label so you can see what hooks is being run.
execute The script or command to run. IE: path/to/some/script.sh
exit_on_fail Whether or not to continue process if the script returns an failed exit code.

Ruby Hooks

Instead of using a script for the hook execute option, you can also use a Ruby object. This provides some more control over the current process. See: Ruby Hooks

Boot Hooks

If you need to hook into the Terraspace boot process super-early on, check out Boot Hook.

Process Context

The context in which the hook runs is worth highlighting. When the execute option is a String, Terraspace runs the script in a new child process. This the script is an independent process, and whatever is done to its environment is segregated.

When the execute option a Ruby object, then Terraspace runs the hook within the same process. It means the hook can affect the same environment. IE: Setting environment variables.

More tools: