Sha256: 5cceba5352d9a3df4202d6d10107769a0fe17338af48655a34d92e1a748ab991

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

module OpenStax
  module Aws
    class BuildImageCommand1

      # A standardized way to use Packer to build images.

      def initialize(ami_name_base:, region:,
                     verbose: false, debug: false,
                     github_org:, repo:, branch: nil, sha: nil,
                     deployment_sha: nil,
                     packer_absolute_file_path: , playbook_absolute_file_path:,
                     dry_run: true)
        if sha.nil?
          branch ||= 'main'

          sha = OpenStax::Aws::GitHelper.sha_for_branch_name(
                  org_slash_repo: "#{github_org}/#{repo}",
                  branch: branch
                )
        end

        ami_name = "#{ami_name_base}@#{sha[0..6]} #{Time.now.utc.strftime("%y%m%d%H%MZ")}"

        @packer = OpenStax::Aws::PackerFactory.new_packer(
          absolute_file_path: packer_absolute_file_path,
          dry_run: dry_run
        )

        @packer.only("amazon-ebs")

        @packer.var("region", region)
        @packer.var("ami_name", ami_name)
        @packer.var("sha", sha)
        @packer.var("deployment_sha", deployment_sha) unless deployment_sha.nil?
        @packer.var("playbook_file", playbook_absolute_file_path)
        @packer.var("ami_description", {
          sha: sha,
          deployment_sha: deployment_sha,
          github_org: github_org,
          repo: repo
        }.to_json)

        @packer.verbose! if verbose
        @packer.debug! if debug
      end

      def run
        @packer.run
      end

      def to_s
        @packer.to_s
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
openstax_aws-2.1.0 lib/openstax/aws/build_image_command_1.rb