Source code for stacker.lookups.handlers.envvar
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
import os
from . import LookupHandler
from ...util import read_value_from_path
TYPE_NAME = "envvar"
[docs]class EnvvarLookup(LookupHandler):
[docs] @classmethod
def handle(cls, value, **kwargs):
"""Retrieve an environment variable.
For example:
# In stacker we would reference the environment variable like this:
conf_key: ${envvar ENV_VAR_NAME}
You can optionally store the value in a file, ie:
$ cat envvar_value.txt
ENV_VAR_NAME
and reference it within stacker (NOTE: the path should be relative
to the stacker config file):
conf_key: ${envvar file://envvar_value.txt}
# Both of the above would resolve to
conf_key: ENV_VALUE
"""
value = read_value_from_path(value)
try:
return os.environ[value]
except KeyError:
raise ValueError('EnvVar "{}" does not exist'.format(value))