Targeting BOSH Environments and Deployments¶
bosh CLI commands require you to explicitly reference which BOSH deployment name, and the details about the BOSH environment (specifically the BOSH director API).
You can provide the full array of information using
bosh CLI flags:
bosh instances \ --deployment zookeeper \ --environment https://192.168.50.6:25555 \ --ca-cert path/to/root-ca \ --client admin \ --client-secret password
You can avoid typing secrets into your shell by dynamically extracting them from files:
bosh instances \ --deployment zookeeper \ --environment https://192.168.50.6:25555 \ --ca-cert "$(bosh int path/to/bosh/creds.yml --path /director_ssl/ca)" \ --client admin \ --client-secret "$(bosh int path/to/bosh/creds.yml --path /admin_password)"
Alternately, each of the flags above can be declared using an environment variable.
export BOSH_DEPLOYMENT=zookeeper export BOSH_ENVIRONMENT=https://192.168.50.6:25555 export BOSH_CA_CERT="$(bosh int path/to/bosh/creds.yml --path /director_ssl/ca)" export BOSH_CLIENT=admin export BOSH_CLIENT_SECRET="$(bosh int path/to/bosh/creds.yml --path /admin_password)" bosh instances
Alias a BOSH Environment¶
It will be quickly tiresome to type all this information. No one does that. Continuous integration scripts might do this, but not you nor I. We like short cuts.
bosh CLI allows us to alias each BOSH environment URL and root CA with a meaningful name. For example, in the tutorial for setting up a local VirtualBox BOSH environment we used the alias
bosh alias-env vbox \ --environment https://192.168.50.6:25555 \ --ca-cert "$(bosh int path/to/vbox/creds.yml --path /director_ssl/ca)"
Login to a BOSH Environment¶
Once you have aliased an environment you can also cache the authentication credentials for that environment.
That is the most elaborate way I could describe "log in":
export BOSH_ENVIRONMENT=vbox bosh login
Or if you want to use
bosh --environment vbox login
After aliasing and logging in to an environment, we can now simplify all our commands.
We can now express our
bosh instances command from above with flags:
bosh instances \ --deployment zookeeper \ --environment vbox
Or with shortened flags:
bosh instances \ -d zookeeper \ -e vbox
We can also place the flags before the subcommand:
bosh -e vbox -d zookeeper instances
Or, we can use environment variables:
export BOSH_ENVIRONMENT=vbox export BOSH_DEPLOYMENT=zookeeper bosh instances
I personally prefer using the
BOSH_DEPLOYMENT environment variables to target BOSH environments and their deployments.
Especially for you reading the Ultimate Guide to BOSH, I felt that adding
-e environment-alias -d deployment-name to every command in every example was repetitive, verbose, and repetitive.
Available Aliased Environments¶
If you've forgotten what aliases you've given your environments you can list them all:
Forgetting the Environment Alias¶
Sometimes you will forget to provide the environment alias. This is not a career-altering mistake.
> bosh deploy manifests/zookeeper.yml Expected non-empty Director URL Exit code 1
Run the command again with the
-e flag or set the
Forgetting the Deployment Name¶
Sometimes you will forget to provide the deployment name. You probably also forgot the environment alias.
> bosh deploy zookeeper-release/manifests/zookeeper.yml Using environment '10.0.0.4' as client 'admin' Expected non-empty deployment name Exit code 1
Run the command again with the
-d flag or set the