From a2308393e3a8ca8bfef2b1e2e1d35497518ada0b Mon Sep 17 00:00:00 2001 From: Osbert Feng Date: Fri, 15 Mar 2013 12:30:11 -0700 Subject: [PATCH] Support passthrough of additional ConfigurationOptionSettings. --- README.md | 15 +++++++++++++++ src/leiningen/beanstalk/aws.clj | 10 +++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 69316bf..52ffdcb 100644 --- a/README.md +++ b/README.md @@ -198,6 +198,20 @@ If the environment variable name is a keyword, it is upper-cased and underscores ("_") are substituted for dashes ("-"). e.g. `:database-url` becomes `"DATABASE_URL"`. +### Configuring instance type, autoscaling, VPC, SSH, AMI, SSL + +You can customize many [other settings][5] on a per beanstalk environment +basis with an options key: + + :aws + {:beanstalk + {:environments + [{:name "dev" + :options {"aws:autoscaling:asg" {"MinSize" "1" "MaxSize" "1"} + "aws:autoscaling:launchconfiguration" {"InstanceType" "m1.medium" + "EC2KeyName" "mykey" + "ImageId" "ami-cbab67a2"}}}]}} + ### S3 Buckets [Amazon Elastic Beanstalk][1] uses @@ -240,3 +254,4 @@ application. e.g. for Compojure add [1]: http://aws.amazon.com/elasticbeanstalk [2]: http://aws.amazon.com [3]: http://aws.amazon.com/s3 +[5]: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html diff --git a/src/leiningen/beanstalk/aws.clj b/src/leiningen/beanstalk/aws.clj index d0065c2..c1f1cb6 100644 --- a/src/leiningen/beanstalk/aws.clj +++ b/src/leiningen/beanstalk/aws.clj @@ -140,6 +140,13 @@ key) value))) +(defn extra-options + [options] + (apply concat + (for [[namespace keyvals] options] + (for [[key value] keyvals] + (ConfigurationOptionSetting. namespace key value))))) + (defn create-environment [project env] (println (str "Creating '" (:name env) "' environment") "(this may take several minutes)") @@ -149,7 +156,8 @@ (.setApplicationName (app-name project)) (.setEnvironmentName (:name env)) (.setVersionLabel (app-version project)) - (.setOptionSettings (env-var-options project env)) + (.setOptionSettings (concat (env-var-options project env) + (extra-options (:options env)))) (.setCNAMEPrefix (:cname-prefix env)) (.setSolutionStackName (or (-> project :aws :beanstalk :stack-name) "32bit Amazon Linux running Tomcat 7")))))