Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to import environment variables in Google App Engine's app.yaml?

I know you can declare env_variables in your app.yaml as described in the app.yaml documentation. However, is it possible to include environment variables from your local environment into app.yaml when deploying.

As an example of what I'm trying to accomplish

# in app.yaml
runtime: python27
api_version:1
threadsafe: true
service: {{ $AN_ENVIRONMENT_VARIABLE }}
like image 796
kjschiroo Avatar asked Oct 25 '17 18:10

kjschiroo


Video Answer


2 Answers

Yes, you can use includes: to specify an array of files to be included. And in the included file, you can specify env_variables: just like you do in app.yaml. Example: app.yaml:

runtime: go
api_version: go1

env_variables:
  FIST_VAR: myFirstVar

includes:
- credentials.yaml

credentials.yaml:

env_variables:
  SECOND_VAR: mySecondVar
like image 61
Raees Iqbal Avatar answered Nov 15 '22 06:11

Raees Iqbal


No, no such templating support exists for the app.yaml configuration files.

Side note: the app.yaml file is not only used to extract deployment instructions information, it's also used to configure the operation of the respective service on GAE. Making the service name configurable in such manner doesn't make a lot of sense unless the services being deployed are identical in every aspect (other than their name) - highly unlikely.

One possible approach for environment-specific deployment would be to have different version control branches for the app code, one for each environment, each having the desired app.yaml content.

Another one would be to wrap the deployment command in a script and perform the enviroment substitutions inside that script.

As for passing credentials info to the app a clean, straight-forward solution is not yet available. But approaches exist:

  • GAE: best practices for storing secret keys?
  • How to set environment variables/app secrets in Google App Engine
  • Google app engine: Best practice for hiding Rails secret keys?
  • How to handle sensitive configuration information when deploying app-engine applications?
like image 28
Dan Cornilescu Avatar answered Nov 15 '22 08:11

Dan Cornilescu