class Kontena::Machine::Aws::KeypairProvisioner

Attributes

ec2[R]
keypair_name[R]
public_key[R]
region[R]

Public Class Methods

new(access_key_id, secret_key, region) click to toggle source

@param [String] access_key_id aws_access_key_id @param [String] secret_key aws_secret_access_key @param [String] region

# File lib/kontena/machine/aws/keypair_provisioner.rb, line 11
def initialize(access_key_id, secret_key, region)
  @ec2 = ::Aws::EC2::Resource.new(
    region: region, credentials: ::Aws::Credentials.new(access_key_id, secret_key)
  )
end

Public Instance Methods

run!(opts) click to toggle source

@param [Hash] opts

# File lib/kontena/machine/aws/keypair_provisioner.rb, line 28
def run!(opts)
  validate_opts!(opts)
  ec2.import_key_pair(
    key_name: keypair_name,
    public_key_material: public_key,
    dry_run: false
  )
end
validate_opts!(opts) click to toggle source
# File lib/kontena/machine/aws/keypair_provisioner.rb, line 17
def validate_opts!(opts)
  if opts[:public_key]
    @public_key = opts[:public_key]
  else
    raise "Missing public key"
  end

  @keypair_name = opts[:keypair_name] || "kontena-#{SecureRandom.hex(4)}-#{Time.now.strftime '%Y-%m-%d'}"
end