class Leeroy::Task::Packer
Public Instance Methods
perform(args = self.args, options = self.options, global_options = self.global_options)
click to toggle source
Calls superclass method
Leeroy::Task::Base#perform
# File lib/leeroy/task/packer.rb, line 21 def perform(args = self.args, options = self.options, global_options = self.global_options) begin super(args, options, global_options) phase = Leeroy::Types::Phase.resolve(self.state.fetch('phase'), options[:phase]) logger.debug "phase: #{phase}" # update phase in state self.state.phase = phase packer_params = _getPackerParams packer_vars = Leeroy::Types::Packer.new(packer_params) # Sending app_name to state self.state.app_name = packer_vars.app_name # cwd is the fille filename where the packer template lives cwd = File.join(packer_vars.packer_template_prefix, self.state.app_name) validation = validatePacker(cwd, { :vars => packer_vars }) build = buildPacker(cwd,{ :vars => packer_vars } ) build.artifacts.each do | item | self.state.message = item.string artifact = item.id.split(':') self.state.imageid = artifact[1] end logger.debug "#{build.stdout}" logger.debug "Packer Artifact Created : #{state.imageid}" dump_state logger.debug "done performing for #{self.class}" rescue StandardError => e logger.debug e.message raise e end end
Private Instance Methods
_getPackerParams(state = self.state, env = self.env, options = self.options)
click to toggle source
# File lib/leeroy/task/packer.rb, line 61 def _getPackerParams(state = self.state, env = self.env, options = self.options) begin logger.debug "generating Packer params to create an AMI" packer_params = Leeroy::Types::Mash.new if self.state.imageid? imageid = self.state.imageid elsif options[:imageid].nil? imageid = checkEnv('LEEROY_AWS_LINUX_AMI') else imageid = options[:imageid] end packer_params.aws_linux_ami = imageid if self.state.app_name? app_name = self.state.app_name elsif options[:name].nil? app_name = checkEnv('LEEROY_APP_NAME') else app_name = options[:name] end packer_params.app_name = app_name if self.state.aws_region? aws_region = self.state.aws_region else aws_region = ENV['AWS_DEFAULT_REGION'] || ENV['AWS_REGION'] end packer_params.aws_region = aws_region # LEEROY_PACKER_TEMPLATE_PREFIX if self.state.packer_template_prefix? packer_template_prefix = self.state.packer_template_prefix elsif options[:packer_template_prefix].nil? packer_template_prefix = checkEnv('LEEROY_PACKER_TEMPLATE_PREFIX') else packer_template_prefix = options[:packer_template_prefix] end packer_params.packer_template_prefix = packer_template_prefix packer_params rescue StandardError => e raise e end end