diff --git a/.bash_completion.d/smile-exec b/.bash_completion.d/smile-exec new file mode 100644 index 0000000000000000000000000000000000000000..750f9d5cceb5233bd4fbcfa091f3fd4f1f2ca111 --- /dev/null +++ b/.bash_completion.d/smile-exec @@ -0,0 +1,19 @@ +# vim: ft=bash +# shellcheck shell=bash + +_smile_exec() { + local cur prev words cword opts + _init_completion || return + opts='-e --env -h --help -l --list' + if [[ $prev == -e ]] || [[ $prev == --env ]] + then + COMPREPLY=($(compgen -W "$(smile-exec -l)" -- "$cur")) + elif [[ $cur == -* ]] + then + COMPREPLY=($(compgen -W "$opts" -- "$cur")) + else + COMPREPLY=($(compgen -c -- "$cur")) + fi +} + +complete -F _smile_exec smile-exec diff --git a/Documents/bin/smile-exec b/Documents/bin/smile-exec new file mode 100755 index 0000000000000000000000000000000000000000..2c293a69ca83b38e1aa14da70fc016e5c446a7b1 --- /dev/null +++ b/Documents/bin/smile-exec @@ -0,0 +1,79 @@ +#!/bin/sh +set -eu + +envs='dev prod sandbox-1 security shared-services stage' + +usage() { + echo "$0: [-h|--help] [-e|--env SMILE_ENV ] [-l|--list] COMMAND [PARAMETER1 [PARAMETER2 ...]]" + echo "You can either set the environment with -e or --env switch or set the SMILE_ENV environment variable." + echo "Valid environments are: $envs" +} + +vault_addr() { + case "$1" in + stage) echo "https://vault.smile-staging.aws";; + prod) echo "https://vault.smile-production.aws";; + *) echo "https://vault.smile.aws";; + esac +} + +aws_account() { + case "$1" in + sandbox-1) echo "696774765305";; + dev) echo "307739032832";; + security) echo "777170570448";; + shared-services) echo "877068819435";; + stage) echo "389299793054";; + prod) echo "964498696771";; + esac +} + +if [ "$#" -eq 0 ] +then + usage + exit 1 +fi + +if [ "$1" = -h ] || [ "$1" = --help ] +then + usage + exit 0 +fi + +if [ "$1" = -l ] || [ "$1" = --list ] +then + echo "$envs" + exit 0 +fi + +if [ "$1" = "-e" ] || [ "$1" = "--env" ] +then + SMILE_ENV="$2" + shift 2 +elif [ -z "${SMILE_ENV:-}" ] +then + usage + exit 1 +fi + +if ! echo "$envs" | grep --quiet --fixed-strings --word-regex "$SMILE_ENV" +then + echo "Environment $SMILE_ENV is not a valid one." >&2; + echo "Valid environments are: $envs" + exit 1 +fi + +export AWS_CONFIG_FILE="$HOME/.smile/aws/config" +export AWS_PROFILE="smile-$SMILE_ENV-admin" +export AWS_DEFAULT_PROFILE="$AWS_PROFILE" +export AWS_DEFAULT_REGION=us-east-1 +export HELM_HOME="$HOME/.smile/helm/$SMILE_ENV-sre" +export HELM_TLS_ENABLE="true" +export HELM_TLS_VERIFY="true" +export KUBECONFIG="$HOME/.smile/kube/$SMILE_ENV/config" +export TILLER_NAMESPACE="applications-tiller" +# shellcheck disable=SC2155 +export VAULT_ADDR="$(vault_addr "$SMILE_ENV")" +export VAULT_CAPATH="$HOME/Documents/Smile/keybase/team/smile_devs/ca_certs" + +eval exec aws-vault exec "smile-$SMILE_ENV-admin" -- "$@"