Class: Capistrano::Autoscale::AWS::LaunchTemplate

Inherits:
Base
  • Object
show all
Defined in:
lib/capistrano/autoscale/aws/launch_template.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#autoscaling_client, #aws_access_key_id, #aws_autoscale_ami_tags, #aws_autoscale_snapshot_tags, #aws_credentials, #aws_options, #aws_region, #aws_secret_access_key, #ec2_client

Constructor Details

#initialize(id, name, version, default, image_id) ⇒ LaunchTemplate

Returns a new instance of LaunchTemplate.



9
10
11
12
13
14
15
# File 'lib/capistrano/autoscale/aws/launch_template.rb', line 9

def initialize(id, name, version, default, image_id)
  @id = id
  @name = name
  @version = version
  @default = default
  @image_id = image_id
end

Instance Attribute Details

#defaultObject (readonly)

Returns the value of attribute default.



7
8
9
# File 'lib/capistrano/autoscale/aws/launch_template.rb', line 7

def default
  @default
end

#idObject (readonly)

Returns the value of attribute id.



7
8
9
# File 'lib/capistrano/autoscale/aws/launch_template.rb', line 7

def id
  @id
end

#image_idObject (readonly)

Returns the value of attribute image_id.



7
8
9
# File 'lib/capistrano/autoscale/aws/launch_template.rb', line 7

def image_id
  @image_id
end

#nameObject (readonly)

Returns the value of attribute name.



7
8
9
# File 'lib/capistrano/autoscale/aws/launch_template.rb', line 7

def name
  @name
end

#versionObject (readonly)

Returns the value of attribute version.



7
8
9
# File 'lib/capistrano/autoscale/aws/launch_template.rb', line 7

def version
  @version
end

Instance Method Details

#amiObject



41
42
43
44
45
46
# File 'lib/capistrano/autoscale/aws/launch_template.rb', line 41

def ami
  @ami ||= begin
    image = ::Aws::EC2::Image.new(image_id, client: ec2_client)
    AMI.new(image.image_id, image.block_device_mappings) if image.exists?
  end
end

#deleteObject



48
49
50
51
52
53
# File 'lib/capistrano/autoscale/aws/launch_template.rb', line 48

def delete
  ec2_client.delete_launch_template_versions(
    launch_template_id: id,
    versions: [version.to_s]
  )
end

#previous_versionsObject



34
35
36
37
38
39
# File 'lib/capistrano/autoscale/aws/launch_template.rb', line 34

def previous_versions
  ec2_client.describe_launch_template_versions(launch_template_id: id)
            .launch_template_versions.sort_by(&:version_number).reverse
            .select { |v| v.version_number < version }
            .map { |v| self.class.new(v.launch_template_id, v.launch_template_name, v.version_number, v.default_version, v.launch_template_data.image_id) }
end

#update(ami, description: nil) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/capistrano/autoscale/aws/launch_template.rb', line 17

def update(ami, description: nil)
  latest = ec2_client.create_launch_template_version(
    launch_template_data: { image_id: ami.id },
    launch_template_id: id,
    source_version: version.to_s,
    version_description: description
  ).launch_template_version

  self.class.new(
    latest&.launch_template_id,
    latest&.launch_template_name,
    latest&.version_number,
    latest&.default_version,
    latest&.launch_template_data&.image_id
  )
end