I have a spring-boot application for which I need to specify graphite server and port (to send metrics). For that to work, I have to install and configure statsd. I do that using the ebextensions file.
commands:
  01_nodejs_install:
    command: sudo yum -y install nodejs npm --enablerepo=epel
    ignoreErrors: true
  02_mkdir_statsd:
    command: mkdir /home/ec2-user/statsd
    ignoreErrors: true
  03_fetch_statsd:
    command: git clone https://github.com/etsy/statsd.git /home/ec2-user/statsd
    ignoreErrors: true
  04_change_example_config:
    command: "cat exampleConfig.js | sed 's/2003/<graphite-port>/g' | sed 's/graphite.example.com/<my-graphite-server>/g' > config.js"
    cwd: /home/ec2-user/statsd
  05_run_statsd:
    command: setsid node stats.js config.js >/dev/null 2>&1 < /dev/null &
    cwd: /home/ec2-user/statsd
The problem with this configuration is that I can specify only 1 graphite server here for all environments.
So I decided to move commands 04 and 05 into container_commands. I am thinking of defining an environment variable called ENV_NAME using the beanstalk console/UI, and set it to dev, qa, or prod according to the environment. Then I can use test option of container_commands to run 04 and 05 commands only for specific environment based on this ENV_NAME.
So my problem is - how can I use AWS console to define environment variable? I tried using Beanstalk console to define my variable as explained in the documentation here but it did not work. I also found (see the answer with 5 upvotes) that this method sets only JVM properties and not ENV variables.
I cannot define environment variable using ebextensions because then I'll have the same problem - can't define different env vars for different envs :)
So I need help with either:
- Set the ENV_NAMEenvironment variable using beanstalk UI.
Or
- Suggest a way to use ENV_NAMEsystem property incontainer_commandsto condition whether or not to run the command based on the value ofENV_NAME.
And in case you know a simpler/better way to specify different Graphite servers for different environments, please feel free to pitch in.
 
     
     
     
    






