module Leeroy::Helpers::Packer

Attributes

packer_client[R]

Public Class Methods

new(*args, &block) click to toggle source

This lets us mix in the packer helper methods when we initialize Leeroy::Task::Packer

Calls superclass method
# File lib/leeroy/helpers/packer.rb, line 16
def initialize(*args, &block)
  super(*args, &block)

  logger.debug "initializing Packer helpers"

  @packer_client = ::Packer::Client.new

  logger.debug "Packer helpers initialized"
end

Public Instance Methods

build(cwd, *args) click to toggle source
# File lib/leeroy/helpers/packer.rb, line 87
def build(cwd, *args)
  begin
    Dir.chdir(cwd) do
      output =self.packer_client.build(*args)

      if output.errors.any?
        raise RuntimeError.new(output.errors)
      else
        output
      end
    end
  end
end
buildPacker(cwd, vars = {}) click to toggle source

Build - cwd changes working directory

# File lib/leeroy/helpers/packer.rb, line 67
def buildPacker(cwd, vars = {})
  begin
    packer_ver = self.packer_client.version.version
    logger.debug "Building Packer using version :'#{packer_ver}'"

    template = File.join(cwd, "main.json")
    logger.debug "Loading Packer Template :'#{template}'"

    logger.debug "Building Packer Template :'#{template}'"

    build(cwd, template, vars)

  rescue RuntimeError => e
    logger.debug "Packer Build '#{template}' failed with message: #{e.message}"
    raise e
  rescue StandardError => e
    raise e
  end
end
validate(cwd, *args) click to toggle source

Validate templates - cwd changes working directory

# File lib/leeroy/helpers/packer.rb, line 51
def validate(cwd, *args)
  begin
    Dir.chdir(cwd) do
      validated = self.packer_client.validate(*args)

      if validated.valid?
        validated
      else
        raise RuntimeError.new(validated.stdout)
      end
    end
  end
end
validatePacker(cwd, vars = {}) click to toggle source

cwd in the below code inticates the command working directory which is used to change dir's into the directory where main.json is so that relitive paths used in the packer template expand correctly

# File lib/leeroy/helpers/packer.rb, line 29
def validatePacker(cwd, vars = {})
  begin
    packer_ver = self.packer_client.version.version
    logger.debug "Loading Packer using version :'#{packer_ver}'"

    template = File.join(cwd, "main.json")
    logger.debug "Loading Packer Template :'#{template}'"

    logger.debug "Validating Packer Template syntax :'#{template}'"

    validate( cwd, template, {:syntax_only => true })
    validate( cwd, template , vars )

  rescue RuntimeError => e
    logger.debug "Packer Template '#{template}' failed with message: #{e.message}"
    raise e
  rescue StandardError => e
    raise e
  end
end