Auto-connect to BOSH director.
Genesis can now automatically connect to the correct BOSH director for the specified environment, without need to set up a bosh configuration or manually logging into the director.
Caveat: The BOSH director that deployed your environment MUST have been deployed by Genesis. If not, you will still have to target and log into the BOSH director manually.
genesis bosh command.
Instead of worrying about logging into the right BOSH director, and translating genesis environment into BOSH environment and deployment, let Genesis do the heavy lifting.
If you want to know something about your concourse vms, for example, you
genesis bosh my-concourse-env vms --vitals and you'll get the
right output. Genesis will determine which bosh director deployed
my-concourse-env, how to connect to it, what the BOSH deployment is named,
and return the results of the command you specified.
By default, the
genesis bosh command is deployment centric, but sometimes
you need to talk to the BOSH director itself. In that case, you can specify
the BOSH deployment itself, and use the
-A) option to
indicate that the environment is the director, not a deployment on a
different director. For proto-BOSH environments, this is required.
genesis bosh -h for more usage details.
Connect to BOSH director without using the BOSH deployment kit.
If you still need to connect to a BOSH director directly, you can configure
your shell by using
eval "$(genesis bosh my-target-env --connect)".
Please note that this connects to the BOSH director that deployed the
my-target-env is a bosh deployment, the command will
authenticate to the BOSH director that deployed it, not itself. In this
case, you need to use the
--as-director option to explicitly state that
this is the BOSH environment you wish to connect to.
Removes legacy support for kits without new or blueprint.
As of v2.8.0, kits must use new and blueprint hooks. All modern kits support this model, so anyone actively keeping current with genesis would not be impacted.
Remove subkits, error if used in env file.
Subkits have been deprecated since at least 2.6.13, so its time to remove them.
--environment global option.
The environment option has been replaced with
--bosh-env option to remove
confusion regarding the overloaded 'environment' name. Henceforth,
environment refers to just the deployment environment. The
is still usable.
Starting in v2.8.0, kits that indicate that they are compatible with
v2.8.0 can support
use_create_env as their method of indicating
their ability to use create-env instead of deploy for deployments.
Valid values are
yes for this kit always uses create-env,
kits that cannot use create-env, and
allow for kits that permit
The kit will have to detect
genesis.use_create_env in the
environment to determine blueprint and other create-env kit
behaviour. Genesis will manage the actual deployment and state file
associated with it.
Genesis properly handles both legacy features (create-env,bosh-init,
proto) and v2.8.0's
genesis.use_create_env attribute to determine is
create-env is to be used. It will also detect when an incompatible
mixture of using create-env and specifying a
attribute, and fail with an appropriate error message. A quick update
of the environment file by the user will resolve this issue when
Since BOSH does not provide a confirmation after a diff on the environment to be deployed, Genesis provides this based on a previous deployment, assuming it was added to the repo.
If the exodus data from the previous deployment doesn't match the local
archived manifest, a warning will be stated, or in the case of running
-y, the deploy will be aborted.
This does require that you ensure you commit your repo after doing deployments, which you should be doing regardless of this feature, as a method to record your deployment history.
And in an inheritting file:
``` kit: overrides:
Improve params handling for use in
Support multiline values in keys and arrays in
param_comment to screen so the same information that prefaces the
value in the env.yml file can be used as an explanatory blurb prior to the
Can decompile kit to directories other than ./dev (
Can specify an environment YAML file to identify which kit to decompile, instead of explicitly stating the kit/version.
Support downloading multiple configs.
Before, if you specified to download a config type (ie cloud or runtime)
without a name, it would download only the unnamed default config of that
type. Experience has shown that the more correct interpretation should be
to download all configs of that type, and merge them (in the order they are
specified in the BOSH director). The old behaviour can still be used by
default as the name.
Added stderr output capture for
Rather than have the raw safe stderr leak out to the user, we now capture it and write it to the DEBUG stream.
Improve deploy help output for create-env environments
There are difference behaviours for create-env environment than from environments deployed via a BOSH director. This update calls them out and gives instructions on their use.
Improved error message when kit.features is incorrectly formed in environment YAML files.
Better diagnosis messages when running PING in debug mode.
Kits can now specify required prerequisites via hook.
Although the prereqs hook was documented, it was only partially
implemented. This commit completes that implementation, so that if
hooks/prereqs exists in a kit, it will be run prior to usage.
Fix bug where default config type was lost when fetching configs from BOSH director, resulting in bad messages and error reports.
GENESIS_EXODUS_MOUNT to hooks environment. This was missing from the
set of vault path environment variables available to hook scripts.
Genesis::BOSH for controlling BOSH director.
This is a major refactor to facilitate better operation and connections to BOSH directors. Connections to Bosh will use exodus data to determine the corresponding BOSH director address and connection details.
GENESIS_BOSH_COMMAND when checking BOSH cmd
check_bosh_version subroutine that was replaced by
Genesis::Kit#metadata to take args.
If Genesis::Kit#metadata receives no arguments, it will return a hash reference for all metadata for the kit. If it gets a single value, it returns the metadata corresponding to the key of that value. Finally, if it gets a list of values, it will return a list of the metadata corresponding to the keys of the given values.
Lazy-load kit provider types as needed.
require instead of
use for loading the
Genesis::Kit::Provider::* classes, they are loaded as needed during
runtime instead of fully loaded at compile-time.
lib/Genesis/Env.pm, with folding and grouping.
This is done to be consistent with the other lib files. No actual code changed in this release, but the diff is massive because blocks were moved into logical groupings.
validate_name method should only be used internally, so it was renamed
Fixes inconsistant private variable naming.
_configshas been changed to
Genesis::Env, to match all other private instance variables.
Update Genesis bosh activities to work with BOSH cli v6.4.4
As of BOSH cli 6.4.4, BOSH_* variables set to "" cause errors, so now they are simply unset.
genesis initcan now accept a local compiled kit file as an argument to the
-koption, allowing locally compiled (or stored) released kit files instead of relying on the local uncompiled
genesis kit-manualnow works on dev kits, or environments that use dev kits
update genesis command to get new version
Usage: genesis update [-c|--check] [-v|--version VERSION] [-d|--details] [-f|--force]
-c, --check Check if a newer version (or the specified version) is available.
-d, --details Print the release notes of the versions between the current version and the latest (or the release notes of the specified version)
-f, --force Replace the current genesis executable. Otherwise, confirmation will be requested.
genesis kit-provider -v status output
genesis list-kits hint to include -r flag.
Make it easier to trace the stack
Adds the -S|--show-stack debug option, and gives better context of traces and errors.
trace output will show the location in the code were it was
called. If --show-stack option specified, it will show the full stack
instead of just the location.
dump_vars output will now show the full stack instead of
just the calling location if --show-stack specified (along with
--trace or --debug)
bail will show calling location if --trace or --debug is
specified, or the full stack if --show-stack is specified (with or
without --debug or --trace). This allows you to see where genesis
terminates without wading through all the trace output.
bug will always full stack where the bug was encountered.
This allows the user to paste the stack into a defect report against
the genesis project.
Limited false positives of detected changes in pipeline notify summaries.
Fix getting non-production github release version
If user specified version by name, it should include draft and prereleases when looking for it. This was the initial intent, but the wrong options were set when attempting it.
Fix error when calling
genesis man on a kit that does not exist.
Fixes issue where proto-bosh deployment did not have up to date state file.
-Can now update subject, SAN, and usage of vault-stored certificates without generating a new key with genesis rotate-secrets --renew This allows users to correct warnings that show up in the check during deployment without breaking mutual TLS. (Note this will also renew the TTL for the certificates)Download v2.7.31 from Github