class Gantree::Update
Public Class Methods
new(stack_name,options)
click to toggle source
# File lib/gantree/update.rb, line 6 def initialize stack_name,options check_credentials set_aws_keys @options = options @options[:stack_name] = stack_name @options[:env] ||= create_default_env @options[:env_type] ||= env_type @templates = ['master','resources','beanstalk'] end
Public Instance Methods
add_role(name)
click to toggle source
# File lib/gantree/update.rb, line 42 def add_role name env = @options[:env].sub('app', name) beanstalk = JSON.parse(IO.read("cfn/#{@options[:stack_name]}-beanstalk.cfn.json")) unless beanstalk["Resources"][name] then role = { "Type" => "AWS::ElasticBeanstalk::Environment", "Properties"=> { "ApplicationName" => "#{@options[:stack_name]}", "EnvironmentName" => "#{env}", "Description" => "#{name} Environment", "TemplateName" => { "Ref" => "ConfigurationTemplate" }, "OptionSettings" => [] } } #puts JSON.pretty_generate role beanstalk["Resources"]["#{name}".to_sym] = role IO.write("cfn/#{@options[:stack_name]}-beanstalk.cfn.json", JSON.pretty_generate(beanstalk)) unless @options[:dry_run] puts JSON.pretty_generate(beanstalk["Resources"].to_a.last) puts "Added new #{name} role".green else puts "Role already exists".red end end
change_solution_stack()
click to toggle source
# File lib/gantree/update.rb, line 29 def change_solution_stack beanstalk = JSON.parse(IO.read("cfn/#{@options[:stack_name]}-beanstalk.cfn.json")) solution_stack = set_solution_stack beanstalk["Resources"]["ConfigurationTemplate"]["Properties"]["SolutionStackName"] = solution_stack beanstalk["Resources"]["ConfigurationTemplate"]["Properties"]["Description"] = solution_stack IO.write("cfn/#{@options[:stack_name]}-beanstalk.cfn.json",JSON.pretty_generate(beanstalk)) puts "Updated solution to #{solution_stack}".green end
run()
click to toggle source
# File lib/gantree/update.rb, line 16 def run puts "Updating stack from local cfn repo" add_role @options[:role] if @options[:role] change_solution_stack if @options[:solution] return if @options[:dry_run] upload_templates puts "Stack Updated".green if cfm.stacks[@options[:stack_name]].update(:template => stack_template) end
set_solution_stack()
click to toggle source
# File lib/gantree/update.rb, line 38 def set_solution_stack @options[:solution] == "latest" ? get_latest_docker_solution : @options[:solution] end
stack_template()
click to toggle source
# File lib/gantree/update.rb, line 25 def stack_template s3.buckets["#{@options[:cfn_bucket]}/#{@stack_name}"].objects["#{@stack_name}-master.cfn.json"] end