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