@name = File.basename(File.expand_path(".")) gem_group :development do gem 'ey_cli', '>= 0.3.0' gem 'engineyard', '>= 1.4.28' end gem 'ey_config' # for partner services required_dbs = %w[mysql postgresql] required_app_servers = %w[unicorn trinidad passenger puma thin] selected_db = required_dbs.find { |db| scroll? db } unless selected_db say_custom "eycloud", "Please include a DB choice from: #{required_dbs.join ", "}" exit_now = true end selected_app_server = required_app_servers.find { |app| scroll? app } unless selected_app_server say_custom "eycloud", "Please include an App Server choice from: #{required_app_servers.join ", "}" exit_now = true end exit 1 if exit_now after_everything do @git_url ||= `git config remote.origin.url`.strip if @git_url.size == 0 say_custom "eycloud", "Skipping... no git URI discovered" else run "ey login" framework_env = multiple_choice "Which framework environment?", [ ['Production', 'production'], ['Staging (solo environment only)', 'staging'] ] # TODO check for app name first app_name = (@repo_name && @repo_name.size > 0) ? @repo_name : @name say_custom "eycloud", "Checking for availability of #{app_name}" @app_names ||= `bundle exec ey_cli apps | grep "-" | sed "s/.* //"`.split(/\n/) while @app_names.include?(app_name) app_name = ask_wizard "Application #{app_name} is already exists. What name?" end if framework_env == "production" say_custom "eycloud", "All configurations use High-CPU VM worth $170/mth each." say_custom "eycloud", "Process numbers below are estimates." cluster_config = multiple_choice "Select application cluster configuration?", [ ['Basic - 5 CPU-based processes (1 VM) & DB Master VM', 'basic'], ['Pro - 15 CPU-based highly-available processes (3 VMs) & DB Master VM', 'ha'], ['Solo - 1 VM for app processes, DB and other services', 'solo'] ] else say_custom "eycloud", "Defaulting to single/solo High-CPU medium instance for staging environment" end name = File.basename(".") command = "bundle exec ey_cli create_app --name #{app_name} --type rails3 " command += "--git #{@git_url} " command += "--framework_env #{framework_env} " command += "--env_name #{@name}_#{framework_env} " command += "--stack #{selected_app_server} " command += "--db_stack #{selected_db} " if selected_db case cluster_config.to_sym when :basic command += "--app_instances 1 " when :ha command += "--app_instances 3 " when :solo command += "--solo " end run command end end __END__ name: Engine Yard Cloud description: The Most Powerful Ruby Cloud author: drnic category: deployment exclusive: deployment requires: [github, eycloud_recipes_on_deploy] run_after: [github, eycloud_recipes_on_deploy]