Boot Hooks

If you need to hook into the Kubes boot process super-early on, Kubes boot hooks are designed for that.

  • They run very early in the Kubes boot process.
  • They are useful for setting shared global values like env vars.
  • Boot hooks are ruby files that get required. It’s nice and simple. There’s no interface to learn.

Hooks

Kubes will searches 2 files in the config folder. If the files exist, they will be ran in this order.

  1. .kubes/config/boot.rb: Always runs.
  2. .kubes/config/boot/KUBES_ENV.rb: Runs based on the env. IE: KUBES_ENV=dev => .kubes/config/boot/dev.rb

Both files are required and ran if they both exists. Since the KUBES_ENV one runs second, it can be used to override previously set values.

Example: Default KUBES_ENV

If you prefer a different default than KUBES_ENV=dev.

config/boot.rb

ENV['KUBES_ENV'] ||= 'development'

This changes the default for everyone using the project, but still allows them to control the default by adding export KUBES_ENV=development to their ~/.bash_profile.

Example: Auto-Switch AWS_PROFILE

One useful example is switching AWS_PROFILE based on the KUBES_ENV. Example:

config/boot/dev.rb

ENV['AWS_PROFILE'] = 'dev'

This example is for AWS, but you can can do similiar switch logic with GOOGLE_APPLICATION_CREDENTIALS, etc.

Boot Source

Please refer to the boot source code for more details: kubes/booter.rb