Hooks¶
easy_infra
provides a method for dynamically adding hooks at runtime to any of the components.
When hooks are used in conjunction with AUTODETECT
, the registered hooks will be executed in each of the detected folders.
Writing a Hook¶
Write a .sh
script and put it in /opt/hooks/bin/
, with a comment that follows the below format, where terraform
is the command that you’d
like to hook:
# register_hook: terraform
Note
Only packages or their related aliases listed in easy_infra.yml
at build time, or the scan_
functions (which only perform the security scans, i.e.
scan_terraform
or scan_cloudformation
) are supported. This means that, if a package has multiple aliases, or if you’d like to support the scan_
function, you will need to register your hook against each of those.
Example¶
An example minimal hook is as follows:
#!/usr/bin/env bash
# register_hook: terraform
echo "Running hook"
Certain information is also available in the hook, such as the calling directory. You can access it by simply refering the variable ${dir}
:
#!/usr/bin/env bash
# register_hook: terraform
echo "Running hook from ${dir}"
If you want to add a single hook at runtime, consider:
docker run -v /path/to/hook/example_hook.sh:/opt/hooks/bin/example_hook.sh seiso/easy_infra:latest-terraform terraform validate
If you want to overwrite all of the built-in hooks with your own folder of hooks, consider:
docker run -v /path/to/hooks:/opt/hooks/bin/ seiso/easy_infra:latest-terraform terraform validate
Configuring Hooks¶
If you’d like to disable hooks, set the environment variable DISABLE_HOOKS
to true
.
LEARNING_MODE
also applies to hooks; setting this environment variable to true
suppresses all of the hook’s exit codes.
Environment variable |
Default |
Result |
---|---|---|
|
|
Disable all hooks when set to |
|
|
Suppress failed hook exit codes when set to |