hubot-env
Hubot manages environment variables dynamically in process.env and redis.
- load environment variables in process.env.
- store environment variables in redis.
- reload environment variables from redis to process.env in restarting hubot.
- flush all environment variables previously loaded via commands in process.env and redis.
If you use hubot-aws for example, you can switch environment variables about AWS Account Credentials via hubot command dynamically.
Installation
Add hubot-env to your package.json
file:
npm install --save hubot-env
Add hubot-env to your external-scripts.json
:
Run npm install
Commands
hubot env current - Displays all current environment variableshubot env current --prefix=[prefix] - Displays current environment variables with prefixhubot env file - List name of files under HUBOT_ENV_BASE_PATHhubot env flush all - Flush all current environment variables in process.env and redishubot env flush all --dry-run - Try flushing all current environment variables in process.env and redishubot env load --filename=[filename] - Loads [filename] of environment variables in process.env and redishubot env load --filename=[filename] --dry-run - Try loading [filename] of environment variables in process.env and redis
Configuration
Set environment variables like an example below.
export HUBOT_ENV_BASE_PATH="${HOME}/example"export HUBOT_ENV_HIDDEN_WORDS="SECRET_ACCESS_KEY,PASSWORD,TOKEN,API_KEY"
You can parepare your own env files by referring to the example files.
Examples
Display current environment variables. You can limit to output with a prefix.
hubot> hubot env current --prefix=HUBOTHUBOT_GITHUB_TOKEN=***HUBOT_ENV_HIDDEN_WORDS=SECRET_ACCESS_KEY,PASSWORD,TOKEN,API_KEYHUBOT_AUTH_ADMIN=ADMINHUBOT_ENV_BASE_PATH=files/envHUBOT_GITHUB_REPO=yoheimuta/hubot-envHUBOT_CONCURRENT_REQUESTS=20
Display env files under HUBOT_ENV_BASE_PATH. You can select one in this list to load.
hubot> hubot env fileaws-cred-account1.envaws-cred-account2.env
Load new environment variables abount AWS credentials of account 1.
hubot> hubot env load --filename=aws-cred-account1.envLoading env --filename=aws-cred-account1.env, --dry-run=false...HUBOT_AWS_CREDENTIALS=account1HUBOT_AWS_ACCESS_KEY_ID=ACCESS_KEY1HUBOT_AWS_SECRET_ACCESS_KEY=***HUBOT_AWS_REGION=ap-northeast-1
Then, Switch to overwrite environment variables abount AWS credentials of account 2.
hubot> hubot env load --filename=aws-cred-account2.envLoading env --filename=aws-cred-account2.env, --dry-run=false...HUBOT_AWS_CREDENTIALS=account2HUBOT_AWS_ACCESS_KEY_ID=ACCESS_KEY2HUBOT_AWS_SECRET_ACCESS_KEY=***HUBOT_AWS_REGION=ap-northeast-1
Reload environment variables when restarting hubot.
$ ./bin/hubothubot>[Sun May 10 2015 16:19:20 GMT+0900 (JST)] INFO Using default redis on localhost:6379[Sun May 10 2015 16:19:20 GMT+0900 (JST)] INFO Data for hubot brain retrieved from Redishubot env bootstrap loaded HUBOT_AWS_CREDENTIALS => account2hubot env bootstrap loaded HUBOT_AWS_ACCESS_KEY_ID => ACCESS_KEY2hubot env bootstrap loaded HUBOT_AWS_SECRET_ACCESS_KEY => ***hubot env bootstrap loaded HUBOT_AWS_REGION => ap-northeast-1 hubot>
Flush all loaded environment variables.
# Dry-run hubot> hubot env flush all --dry-runFlushing all --dry-run=true...Complete dry-run: loadedData={ HUBOT_AWS_CREDENTIALS: 'account2', HUBOT_AWS_ACCESS_KEY_ID: 'ACCESS_KEY2', HUBOT_AWS_SECRET_ACCESS_KEY: '***', HUBOT_AWS_REGION: 'ap-northeast-1' } # Flush all hubot> hubot env flush allFlushing all --dry-run=false...Complete flushing all # Confirm to be flushed data in redis and process.env hubot> hubot brain show storage --key=_private.hubot-envnullhubot> hubot env current --prefix=HUBOTHUBOT_GITHUB_TOKEN=***HUBOT_ENV_HIDDEN_WORDS=SECRET_ACCESS_KEY,PASSWORD,TOKEN,API_KEYHUBOT_AUTH_ADMIN=ADMINHUBOT_ENV_BASE_PATH=files/envHUBOT_GITHUB_REPO=yoheimuta/hubot-envHUBOT_CONCURRENT_REQUESTS=20
Recommended Usage
hubot-brain-inspect
Usehubot-brain-inspect
displays data saved in redis with specifying by keys.
hubot> hubot brain show storage --key=_private.hubot-env{env: {HUBOT_AWS_CREDENTIALS: 'account2', HUBOT_AWS_ACCESS_KEY_ID: 'ACCESS_KEY2', HUBOT_AWS_SECRET_ACCESS_KEY: '***', HUBOT_AWS_REGION: 'ap-northeast-1' } }