class OpsBuild::Packer
Attributes
user_var_file[RW]
user_vars[RW]
Public Class Methods
new()
click to toggle source
# File lib/ops_build/packer.rb, line 8 def initialize Validations::check_binary!('packer') @user_vars = {} end
Public Instance Methods
add_user_variable(name, value)
click to toggle source
Add name/value pair to users_vars hash which is going to be used later for packer var-file
# File lib/ops_build/packer.rb, line 15 def add_user_variable(name, value) unless name.nil? and value.nil? @user_vars[name.to_sym] = value end end
build(config)
click to toggle source
Run packer build
# File lib/ops_build/packer.rb, line 23 def build(config) options = '' create_var_file unless @user_var_file.nil? OpsBuild.logger.info("Changing packer build with variables file from: #{@user_var_file.path}") options = " -var-file #{@user_var_file.path}" end Utils::execute("packer build -color=false #{options} #{config}", log_prefix: 'packer:', env: { "AWS_TIMEOUT_SECONDS" => "1200" }) end
cleanup()
click to toggle source
Clean user_var-file/log from system
# File lib/ops_build/packer.rb, line 55 def cleanup unless @user_var_file.nil? @user_var_file.unlink @user_var_file.close end end
validate(config)
click to toggle source
Validate packer template
# File lib/ops_build/packer.rb, line 40 def validate(config) options = '' create_var_file unless @user_var_file.nil? OpsBuild.logger.info("Customizing packer build with variable file from: #{@user_var_file.path}") options = "-var-file #{@user_var_file.path}" end Utils::execute("packer validate #{options} #{config}", log_prefix: 'packer:') end
Private Instance Methods
create_var_file()
click to toggle source
# File lib/ops_build/packer.rb, line 63 def create_var_file if @user_var_file.nil? @user_var_file = Tempfile.new('packer-var-file') @user_var_file.write(@user_vars.to_json) @user_var_file.rewind end end