GMP-GEN-0001 - Environment File genesis Block Required

Overview

The end-user's primary interface for deployments is the various environment YAML files in the deployment repository. Since pretty much the beginning of Genesis 2, it has been composed of two top-level components: kit and params. The kit section identified the kit to be used and the features to include, and the params block was for providing values for the kit to use in building its manifest, with the name derived from the spruce (( param )) operator. Anything outside these two blocks was merged overtop of the manifest, allowing users to explicitly override any section of the generate manifest.

As Genesis has evolved, we have seen the need to separate the areas of concern from what Genesis needs to do its job (deployment, secrets management, etc) from what the kit needs to build its manifest. To that end, the genesis block was added in v2.6.x, and values that are Genesis-centric have been migrated there.

As of v2.7.7, continued use of the params versions of values that should be found under genesis will generate a warning. In prior version of the 2.7.x line, it would actually error out, and we found users were not clear on the action needed, so we have moved to a warning and this document to explain the impact and resolution. It will once again become required in a later version ov the 2.7.x line.

Impact

The following params entries have been moved under genesis:

The Process

Simply edit your environment files, create a top-level genesis block, and move any of the params entries above to the associated genesis entries.

As an optional step, instead of moving, you can remove params.vault_prefix or params.vault entries that contain the default vault path for the environment. This will be the environment name with all hyphens (-) changed to slashes (/), followed by a /<kit-type>. For example, if my cf-genesis-kit environment file "c-aws-dev-1.yml" had a params.vault_prefix of c/aws/dev/1/cf, it would be safe to remove. This is not required, but such entries are redundant.

As always, if using pipelines, make sure you embed the new version of Genesis in your deployment repos every time you upgrade Gensis. This can be done by simply running genesis embed inside each of your repos.

Help & Support

If you have concerns about the impact of this migration process, or need assistance running through it, please don't hesitate to find us in #help on Slack.