-
Notifications
You must be signed in to change notification settings - Fork 5
SSH
Generate and update SSH configuration files, or alternatively return a list of IPs for matching stacks.
Host names are based off the stack naming convention, project_name::env::region. The default
is to use public instance IPs (or elastic ip if one is assigned). Passing the --private option
will instead use instance private IPs.
For example, if we have a host 'api1' in the stack apiaxle::prod::us-east, the
resultant hostname will be api1-apiaxle-prod-us-east
By default, opsworks ssh will iterate over all stacks. If you wish to restrict the stacks
it searches, simply pass the stack name (or a partial match) as an argument:
opzworks ssh myproject::prod
If you wanted to automatically scrape all your stacks to populate your ssh config, and
you don't want to use the --update flag (which will overwrite the entire file contents),
you could do something like:
- add a crontab entry similar to:
0 * * * * /bin/bash -l -c /path/to/opzworks-ssh.sh - create
/path/to/opzworks-ssh.sh:
# this script reads .ssh/config, drops anything after the matched line,
# then generates a list of opsworks hosts and appends them to the file.
gsed -i '/OPSWORKS_CRON_LINE_MATCH/q' ~/.ssh/config
opzworks ssh >>~/.ssh/configNote this example assumes the use of a gnu sed-like utility, which on OSX means
installing gnu sed (brew install gsed if you're using homebrew). On Linux, simply
change gsed to sed.
Add the following line to the bottom of your existing ~/.ssh/config:
# OPSWORKS_CRON_LINE_MATCH
To return only a list of IPs, pass the --raw flag:
opzworks ssh -r mystack1 mystack2 or opzworks ssh -r -p mystack, etc.