lib/simple_deploy/cli.rb in simple_deploy-0.2.8 vs lib/simple_deploy/cli.rb in simple_deploy-0.3.0

- old
+ new

@@ -26,15 +26,51 @@ Attributes are specified as '=' seperated key value pairs. Multiple can be specified. For example: simple_deploy create -t ~/my-template.json -e my-env -n test-stack -a arg1=val1 -a arg2=vol2 +You must setup a simple_deploy.yaml file in your home directory. Format as follows: + + artifacts: + chef_repo: + domain: app_specific_domain + bucket_prefix: chef-bucket-prefix + app: + domain: app_specific_app + bucket_prefix: app-bucket-prefix + cookbooks: + domain: app_specific_cookbooks + bucket_prefix: cookbooks-bucket-prefix + + environments: + preprod_shared_us_west_1: + access_key: XXXXXXXXXXXXXXXXXXX + secret_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + region: us-west-1 + infrastructure_us_west_1: + access_key: XXXXXXXXXXXXXXXXXXX + secret_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + region: us-west-1 + infrastructure_us_west_2: + access_key: XXXXXXXXXXXXXXXXXXX + secret_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + region: us-west-2 + +Bucket prefixes will append -us-west-1 (or appropriate region) when deploying based on the environment. + +For example app-bucket-prefix will be tranlated to app-bucket-prefix-us-west-1. + +The domain is the specific domain that is set when the artifact is created by heirloom. + EOS opt :help, "Display Help" opt :attributes, "= seperated attribute and it's value", :type => :string, :multi => true opt :environment, "Set the target environment", :type => :string + opt :force, "Force a deployment to proceed" + opt :limit, "Add limit to results returned by events.", :type => :integer, + :default => 3 opt :name, "Stack name to manage", :type => :string opt :template, "Path to the template file", :type => :string end @cmd = ARGV.shift @@ -54,15 +90,23 @@ Config.new.environments.keys.each { |e| puts e } exit 1 end end + @stacks = Stackster::StackLister.new(:config => @config).all + @logger = SimpleDeployLogger.new + case @cmd when 'create', 'delete', 'deploy', 'destroy', 'instances', 'status', 'attributes', 'events', 'resources', 'outputs', 'template', 'update', 'parameters' - @logger = SimpleDeployLogger.new + + unless @stacks.include? @opts[:name] + @logger.error "Stack '#{@opts[:name]}' does not exist." + exit 1 + end + @stack = Stack.new :environment => @opts[:environment], :name => @opts[:name], :config => @config, :logger => @logger end @@ -76,23 +120,25 @@ @logger.info "#{@opts[:name]} created." when 'delete', 'destroy' @stack.destroy @logger.info "#{@opts[:name]} destroyed." when 'deploy' - @stack.deploy + @stack.deploy @opts[:force] when 'environments' Config.new.environments.keys.each { |e| puts e } when 'update' @stack.update :attributes => attributes @logger.info "#{@opts[:name]} updated." when 'instances' @stack.instances.each { |s| puts s } when 'list' - puts Stackster::StackLister.new(:config => @config).all + puts @stacks when 'template' jj @stack.template - when 'events', 'outputs', 'resources', 'status', 'parameters' + when 'outputs', 'resources', 'status', 'parameters' puts (@stack.send @cmd.to_sym).to_yaml + when 'events' + puts (@stack.events @opts[:limit]).to_yaml else puts "Unknown command. Use -h for help." end end