class OpenStax::Aws::Packer_1_4_1
Public Class Methods
new(absolute_file_path:, dry_run: true)
click to toggle source
# File lib/openstax/aws/packer_1_4_1.rb, line 6 def initialize(absolute_file_path:, dry_run: true) @logger = OpenStax::Aws.configuration.logger @only = [] @vars = {} @dry_run = dry_run @verbose = false @debug = false @absolute_file_path = absolute_file_path end
Public Instance Methods
command()
click to toggle source
# File lib/openstax/aws/packer_1_4_1.rb, line 32 def command cmd = "packer build" cmd = "#{cmd} --only=#{@only.join(',')}" if !@only.empty? @vars.each do |key, value| cmd = "#{cmd} --var '#{key}=#{value}'" end cmd = "PACKER_LOG=1 #{cmd}" if @verbose cmd = "#{cmd} --debug" if @debug cmd = "#{cmd} #{@absolute_file_path}" end
debug!()
click to toggle source
# File lib/openstax/aws/packer_1_4_1.rb, line 28 def debug! @debug = true end
only(builders)
click to toggle source
# File lib/openstax/aws/packer_1_4_1.rb, line 16 def only(builders) @only = [builders].flatten end
run()
click to toggle source
# File lib/openstax/aws/packer_1_4_1.rb, line 47 def run @logger.info("**** DRY RUN ****") if @dry_run @logger.info("Running: #{command}") if !@dry_run @logger.info("Printing stderr for desired verbosity") ami = "" Open3.popen2e(command) do |stdin, stdout_err, wait_thr| begin previous_interrupt_handler = Signal.trap 'INT' do # Interrupt Packer Process.kill 'INT', wait_thr.pid # Restore previous interrupt handler so we don't interrupt Packer again Signal.trap 'INT', previous_interrupt_handler # Disable other code that restores previous interrupt previous_interrupt_handler = nil end stdout_err.sync = true line = '' while char = stdout_err.getc do line << char STDERR.print char next unless char == "\n" matchami = line.match(/AMI: (ami-[0-9\-a-z]*)/i) ami = matchami.captures[0] if matchami line = '' end ensure # Restore previous interrupt unless we did so already Signal.trap 'INT', previous_interrupt_handler unless previous_interrupt_handler.nil? end puts ami # Return Packer's exit status wrapped in a Process::Status object wait_thr.value end end end
to_s()
click to toggle source
# File lib/openstax/aws/packer_1_4_1.rb, line 96 def to_s command.to_s end
var(key, value)
click to toggle source
# File lib/openstax/aws/packer_1_4_1.rb, line 20 def var(key, value) @vars[key.to_s] = value.to_s end
verbose!()
click to toggle source
# File lib/openstax/aws/packer_1_4_1.rb, line 24 def verbose! @verbose = true end