hashicorptools 0.5.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 254a2ff3deed5490e6c62c5b07dcddd20f60488e4f9dca3821ee931363ce37cc
4
- data.tar.gz: 1e8f691dfb3e803620e949651c8a2a68c871f783182c7bf48c07a247d404e99c
3
+ metadata.gz: 246f2fed394c2713cc6950a0b1b6b05dd3ee85a010dee0af5f3d8a5f56f8c820
4
+ data.tar.gz: 799d6e3a0afacf388fad6f8633d081d6934f5b9937ad98e4fd150524dcf264cf
5
5
  SHA512:
6
- metadata.gz: c48cdfba1b075d54763e14930b200cc89c7926e7d4ec6fabaf8cc3b64f7e4b87076944910ca21c07960522d126134a5c5a94db83d2c4988a6f19907b195f71ab
7
- data.tar.gz: 2155084c9795853030119225cd7534e710870c9f3bba04ee97d44852e2583d9d3009e0298c27eef8d953dc42d67f8b087deb5b41d1177a02ecfd8877f655624c
6
+ metadata.gz: 48a77cc78797da4c0fcd46d277e30a910c40a7bd7130287cef2e4411375f02b0ebea2eafba7e7e3f06e43c4aa1e003ca380165897ce49d2bbcbf63d5734cec35
7
+ data.tar.gz: f2dd867948a60764a3359d30ac31172b03af77f27904a7839be034f92d958bcdc42c8301b2664772ad4d5105d3c5b87314d1f3c633ac99e17ad7c6036119ffd9
@@ -0,0 +1,14 @@
1
+ name: CI
2
+ on: [push]
3
+
4
+ jobs:
5
+ test:
6
+ runs-on: ubuntu-latest
7
+ steps:
8
+ - uses: actions/checkout@v2
9
+ - uses: ruby/setup-ruby@477b21f02be01bcb8030d50f37cfec92bfa615b6
10
+ with:
11
+ ruby-version: 2.7
12
+ bundler-cache: true
13
+ - run: bundle install
14
+ - run: bundle exec rspec
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.6.6
1
+ ruby-2.7.4
data/Gemfile CHANGED
@@ -1,21 +1,20 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- # try to slowly migrate to v2 of the aws api
4
- gem 'aws-sdk', '~> 2'
3
+ gem 'aws-sdk-autoscaling', '~> 1'
4
+ gem 'aws-sdk-codedeploy', '~> 1'
5
+ gem 'aws-sdk-ec2', '~> 1'
6
+ gem 'aws-sdk-elasticloadbalancing', '~> 1'
5
7
 
6
- gem 'dynect_rest', '= 0.4.6'
7
-
8
- gem 'aws-sdk-v1', '~> 1.67'
9
8
  gem 'dotenv', '~> 2.2', '>= 2.2.1'
10
- gem 'thor', '= 0.20.0'
11
- gem 'activesupport', '~> 5.1', '>= 5.1.4'
12
- gem 'byebug', '~> 10.0', '>= 10.0.2'
13
- gem 'git', '~> 1.3'
9
+ gem 'thor', '>= 0.20.0'
10
+ gem 'activesupport', '>= 5.1.4'
11
+ gem 'byebug', '>= 10.0.2'
12
+ gem 'git', '> 1.3'
14
13
 
15
14
  group :development do
16
- gem 'rspec', '~> 3.7'
17
- gem 'rdoc', '~> 3.12'
18
- gem 'bundler', '~> 2.0'
19
- gem 'juwelier', '~> 2.4', '>= 2.4.7'
15
+ gem 'rspec', '> 3.7'
16
+ gem 'rdoc', '> 3.12'
17
+ gem 'bundler', '> 2.0'
18
+ gem 'juwelier', git: 'https://github.com/flajann2/juwelier.git'
20
19
  gem 'simplecov', '>= 0'
21
20
  end
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # hashicorptools
2
2
  a set of ruby utilities for interacting with and wrapping packer, terraform and amazon web services.
3
3
 
4
+ ![CI Status](https://github.com/controlshift/hashicorptools/actions/workflows/ci.yml/badge.svg)
5
+
4
6
  ## ec2_host
5
7
 
6
8
  Allows quick lookup and ssh to machines by role and environment. Queries for instances by AWS tags.
data/Rakefile CHANGED
@@ -15,12 +15,12 @@ require 'juwelier'
15
15
  Juwelier::Tasks.new do |gem|
16
16
  # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
17
  gem.name = "hashicorptools"
18
- gem.homepage = "http://github.com/woodhull/hashicorptools"
18
+ gem.homepage = "http://github.com/controlshift/hashicorptools"
19
19
  gem.license = "MIT"
20
20
  gem.summary = %Q{Wrappers for terraform and packer}
21
21
  gem.description = %Q{Wrappers for terraform and packer}
22
22
  gem.email = "systems@controlshiftlabs.com"
23
- gem.authors = ["Nathan Woodhull"]
23
+ gem.authors = ['Kathy Lu', 'Diego Marcet', 'Grey Moore', 'Nathan Woodhull']
24
24
  gem.executables = ['ec2_host']
25
25
  # dependencies defined in Gemfile
26
26
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 2.0.0
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: hashicorptools 0.5.0 ruby lib
5
+ # stub: hashicorptools 2.0.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "hashicorptools".freeze
9
- s.version = "0.5.0"
9
+ s.version = "2.0.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
- s.authors = ["Nathan Woodhull".freeze]
14
- s.date = "2020-07-17"
13
+ s.authors = ["Kathy Lu".freeze, "Diego Marcet".freeze, "Grey Moore".freeze, "Nathan Woodhull".freeze]
14
+ s.date = "2022-01-18"
15
15
  s.description = "Wrappers for terraform and packer".freeze
16
16
  s.email = "systems@controlshiftlabs.com".freeze
17
17
  s.executables = ["ec2_host".freeze]
@@ -20,9 +20,9 @@ Gem::Specification.new do |s|
20
20
  "README.md"
21
21
  ]
22
22
  s.files = [
23
+ ".github/workflows/ci.yml",
23
24
  ".ruby-gemset",
24
25
  ".ruby-version",
25
- ".travis.yml",
26
26
  "Gemfile",
27
27
  "LICENSE",
28
28
  "README.md",
@@ -39,12 +39,12 @@ Gem::Specification.new do |s|
39
39
  "lib/hashicorptools/packer.rb",
40
40
  "lib/hashicorptools/update_launch_configuration.rb",
41
41
  "lib/hashicorptools/variables.rb",
42
- "spec/hashicorptools_spec.rb",
42
+ "spec/ec2_utilities_spec.rb",
43
43
  "spec/spec_helper.rb"
44
44
  ]
45
- s.homepage = "http://github.com/woodhull/hashicorptools".freeze
45
+ s.homepage = "http://github.com/controlshift/hashicorptools".freeze
46
46
  s.licenses = ["MIT".freeze]
47
- s.rubygems_version = "3.1.2".freeze
47
+ s.rubygems_version = "3.1.6".freeze
48
48
  s.summary = "Wrappers for terraform and packer".freeze
49
49
 
50
50
  if s.respond_to? :specification_version then
@@ -52,32 +52,34 @@ Gem::Specification.new do |s|
52
52
  end
53
53
 
54
54
  if s.respond_to? :add_runtime_dependency then
55
- s.add_runtime_dependency(%q<aws-sdk>.freeze, ["~> 2"])
56
- s.add_runtime_dependency(%q<dynect_rest>.freeze, ["= 0.4.6"])
57
- s.add_runtime_dependency(%q<aws-sdk-v1>.freeze, ["~> 1.67"])
55
+ s.add_runtime_dependency(%q<aws-sdk-autoscaling>.freeze, ["~> 1"])
56
+ s.add_runtime_dependency(%q<aws-sdk-codedeploy>.freeze, ["~> 1"])
57
+ s.add_runtime_dependency(%q<aws-sdk-ec2>.freeze, ["~> 1"])
58
+ s.add_runtime_dependency(%q<aws-sdk-elasticloadbalancing>.freeze, ["~> 1"])
58
59
  s.add_runtime_dependency(%q<dotenv>.freeze, ["~> 2.2", ">= 2.2.1"])
59
- s.add_runtime_dependency(%q<thor>.freeze, ["= 0.20.0"])
60
- s.add_runtime_dependency(%q<activesupport>.freeze, ["~> 5.1", ">= 5.1.4"])
61
- s.add_runtime_dependency(%q<byebug>.freeze, ["~> 10.0", ">= 10.0.2"])
62
- s.add_runtime_dependency(%q<git>.freeze, ["~> 1.3"])
63
- s.add_development_dependency(%q<rspec>.freeze, ["~> 3.7"])
64
- s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
65
- s.add_development_dependency(%q<bundler>.freeze, ["~> 2.0"])
66
- s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.4", ">= 2.4.7"])
60
+ s.add_runtime_dependency(%q<thor>.freeze, [">= 0.20.0"])
61
+ s.add_runtime_dependency(%q<activesupport>.freeze, [">= 5.1.4"])
62
+ s.add_runtime_dependency(%q<byebug>.freeze, [">= 10.0.2"])
63
+ s.add_runtime_dependency(%q<git>.freeze, ["> 1.3"])
64
+ s.add_development_dependency(%q<rspec>.freeze, ["> 3.7"])
65
+ s.add_development_dependency(%q<rdoc>.freeze, ["> 3.12"])
66
+ s.add_development_dependency(%q<bundler>.freeze, ["> 2.0"])
67
+ s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
67
68
  s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
68
69
  else
69
- s.add_dependency(%q<aws-sdk>.freeze, ["~> 2"])
70
- s.add_dependency(%q<dynect_rest>.freeze, ["= 0.4.6"])
71
- s.add_dependency(%q<aws-sdk-v1>.freeze, ["~> 1.67"])
70
+ s.add_dependency(%q<aws-sdk-autoscaling>.freeze, ["~> 1"])
71
+ s.add_dependency(%q<aws-sdk-codedeploy>.freeze, ["~> 1"])
72
+ s.add_dependency(%q<aws-sdk-ec2>.freeze, ["~> 1"])
73
+ s.add_dependency(%q<aws-sdk-elasticloadbalancing>.freeze, ["~> 1"])
72
74
  s.add_dependency(%q<dotenv>.freeze, ["~> 2.2", ">= 2.2.1"])
73
- s.add_dependency(%q<thor>.freeze, ["= 0.20.0"])
74
- s.add_dependency(%q<activesupport>.freeze, ["~> 5.1", ">= 5.1.4"])
75
- s.add_dependency(%q<byebug>.freeze, ["~> 10.0", ">= 10.0.2"])
76
- s.add_dependency(%q<git>.freeze, ["~> 1.3"])
77
- s.add_dependency(%q<rspec>.freeze, ["~> 3.7"])
78
- s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
79
- s.add_dependency(%q<bundler>.freeze, ["~> 2.0"])
80
- s.add_dependency(%q<juwelier>.freeze, ["~> 2.4", ">= 2.4.7"])
75
+ s.add_dependency(%q<thor>.freeze, [">= 0.20.0"])
76
+ s.add_dependency(%q<activesupport>.freeze, [">= 5.1.4"])
77
+ s.add_dependency(%q<byebug>.freeze, [">= 10.0.2"])
78
+ s.add_dependency(%q<git>.freeze, ["> 1.3"])
79
+ s.add_dependency(%q<rspec>.freeze, ["> 3.7"])
80
+ s.add_dependency(%q<rdoc>.freeze, ["> 3.12"])
81
+ s.add_dependency(%q<bundler>.freeze, ["> 2.0"])
82
+ s.add_dependency(%q<juwelier>.freeze, [">= 0"])
81
83
  s.add_dependency(%q<simplecov>.freeze, [">= 0"])
82
84
  end
83
85
  end
@@ -1,4 +1,7 @@
1
1
  require "timeout"
2
+ require 'aws-sdk-autoscaling'
3
+ require 'aws-sdk-ec2'
4
+ require 'aws-sdk-elasticloadbalancing'
2
5
 
3
6
  module Hashicorptools
4
7
  class AutoScalingGroup
@@ -91,11 +94,13 @@ module Hashicorptools
91
94
  end
92
95
 
93
96
  def verify_all_instances_using_correct_ami
94
- launch_configuration = Aws::AutoScaling::LaunchConfiguration.new(name: group.launch_configuration_name, client: autoscaling)
95
- image_id = launch_configuration.image_id
96
- group.instances.each do |i|
97
- instance = Aws::EC2::Instance.new(i.instance_id, client: ec2)
98
- raise "#{i.instance_id} has the incorrect AMI, not #{image_id} from current LaunchConfig" if instance.image_id != image_id
97
+ if group.launch_configuration_name
98
+ launch_configuration = Aws::AutoScaling::LaunchConfiguration.new(name: group.launch_configuration_name, client: autoscaling)
99
+ image_id = launch_configuration.image_id
100
+ group.instances.each do |i|
101
+ instance = Aws::EC2::Instance.new(i.instance_id, client: ec2)
102
+ raise "#{i.instance_id} has the incorrect AMI, not #{image_id} from current LaunchConfig" if instance.image_id != image_id
103
+ end
99
104
  end
100
105
  end
101
106
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'aws-sdk'
3
+ require 'aws-sdk-codedeploy'
4
4
  require 'dotenv'
5
5
  require 'git'
6
6
  require 'logger'
@@ -31,6 +31,9 @@ module Hashicorptools
31
31
  })
32
32
  output "created deployment #{response.deployment_id}"
33
33
  output "https://console.aws.amazon.com/codedeploy/home?region=#{aws_region}#/deployments/#{response.deployment_id}"
34
+
35
+ # Classes that override this method should return true for a successful deployment, false otherwise
36
+ return true
34
37
  end
35
38
 
36
39
  private
@@ -72,9 +75,11 @@ module Hashicorptools
72
75
 
73
76
  puts "Deploying for regions: #{aws_regions}"
74
77
 
75
- threads = []
78
+ all_succeeded = true
76
79
  aws_regions.each_slice(2) do |aws_regions_batch|
77
- puts "Deploying for 2 regions: #{aws_regions_batch}"
80
+ puts "Deploying for batch of regions: #{aws_regions_batch}"
81
+
82
+ threads = []
78
83
  aws_regions_batch.each do |aws_region|
79
84
  thread = Thread.new{ region_deployment(aws_region).create_deployment(commit.sha, commit.message) }
80
85
  threads.push(thread)
@@ -82,13 +87,19 @@ module Hashicorptools
82
87
 
83
88
  threads.each_with_index do |thread, index|
84
89
  begin
85
- thread.join
86
- rescue Exception => e
90
+ # thread.value waits for the thread to finish with #join, then returns the value of the expression
91
+ thread_succeeded = thread.value
92
+ all_succeeded = all_succeeded && thread_succeeded
93
+ rescue StandardError => e
87
94
  # Don't quit whole program on exception in thread, just print exception and exit thread
88
95
  puts "[#{aws_regions[index]}] EXCEPTION: #{e}"
96
+ all_succeeded = false
89
97
  end
90
98
  end
91
99
  end
100
+
101
+ # Return a success or failure status code to be consumed by bash
102
+ exit(all_succeeded)
92
103
  end
93
104
 
94
105
  private
@@ -1,3 +1,5 @@
1
+ require 'aws-sdk-ec2'
2
+
1
3
  module Hashicorptools
2
4
  module Ec2Utilities
3
5
  def current_ami(tag = tag_name)
@@ -5,7 +7,8 @@ module Hashicorptools
5
7
  end
6
8
 
7
9
  def amis(tag = tag_name)
8
- sort_by_created_at( ec2.images.with_owner('self').with_tag('Name', tag).to_a )
10
+ images = ec2.describe_images({owners: ['self'], filters: [{name: 'tag:Name', values: [tag]}]}).images
11
+ sort_by_created_at(images)
9
12
  end
10
13
 
11
14
  def ec2
@@ -17,17 +20,15 @@ module Hashicorptools
17
20
  'us-east-1'
18
21
  end
19
22
 
20
- @_ec2 = AWS::EC2.new(region: reg)
23
+ @_ec2 = Aws::EC2::Client.new(region: reg)
21
24
  end
22
25
 
23
26
  def vpc_with_name(name)
24
- vpcs = ec2.client.describe_vpcs({filters: [{name: 'tag:Name', values: [name]}]}).vpc_set
25
- vpcs.first
27
+ ec2.describe_vpcs({filters: [{name: 'tag:Name', values: [name]}]}).vpcs.first
26
28
  end
27
29
 
28
30
  def internet_gateway_for_vpc(vpc_id)
29
- igs = ec2.client.describe_internet_gateways({filters: [{name: 'attachment.vpc-id', values: [vpc_id]}]}).internet_gateway_set
30
- igs.first
31
+ ec2.describe_internet_gateways({filters: [{name: 'attachment.vpc-id', values: [vpc_id]}]}).internet_gateways.first
31
32
  end
32
33
 
33
34
  def sort_by_created_at(collection)
@@ -1,3 +1,5 @@
1
+ require 'aws-sdk-ec2'
2
+
1
3
  module Hashicorptools
2
4
  class Host < Thor
3
5
 
@@ -1,3 +1,6 @@
1
+ require 'aws-sdk-autoscaling'
2
+ require 'aws-sdk-ec2'
3
+
1
4
  module Hashicorptools
2
5
  NUMBER_OF_AMIS_TO_KEEP = 2
3
6
 
@@ -45,7 +48,7 @@ module Hashicorptools
45
48
 
46
49
  desc "clean_snapshots", "clean obsolete EBS snapshots not associated with any AMI"
47
50
  def clean_snapshots
48
- snapshots = ec2.snapshots.with_owner('self')
51
+ snapshots = ec2.describe_snapshots({owner_ids: ['self']}).snapshots
49
52
  snapshots.each do |snapshot|
50
53
  match = snapshot.description.match(/Created by CreateImage\(.+\) for (ami-[0-9a-f]+) from vol-.+/)
51
54
  if match.nil?
@@ -54,25 +57,28 @@ module Hashicorptools
54
57
  end
55
58
 
56
59
  ami_id = match[1]
57
- unless ec2.images[ami_id].exists?
58
- puts "Removing obsolete snapshot #{snapshot.id} - #{snapshot.description}"
59
- snapshot = AWS::EC2::Snapshot.new(snapshot.id)
60
- snapshot.delete
60
+ unless Aws::EC2::Image.new(ami_id, region: region).exists?
61
+ puts "Removing obsolete snapshot #{snapshot.snapshot_id} - #{snapshot.description}"
62
+ ec2.delete_snapshot({snapshot_id: snapshot.snapshot_id})
61
63
  end
62
64
  end
63
65
  end
64
66
 
65
67
  desc "boot", "start up an instance of the latest version of AMI"
66
68
  def boot
67
- run_instances_resp = ec2.run_instances(image_id: current_ami('base-image').image_id,
69
+ run_instances_resp = ec2.run_instances({
70
+ image_id: current_ami('base-image').image_id,
68
71
  min_count: 1,
69
72
  max_count: 1,
70
- instance_type: "t2.micro")
73
+ instance_type: "t2.micro"
74
+ })
71
75
 
72
- ec2.create_tags( resources: run_instances_resp.instances.collect(&:instance_id),
73
- tags: [ {key: 'Name', value: "packer test boot #{tag_name}"},
74
- {key: 'environment', value: 'packer-development'},
75
- {key: 'temporary', value: 'kill me'}])
76
+ ec2.create_tags({
77
+ resources: run_instances_resp.instances.collect(&:instance_id),
78
+ tags: [ {key: 'Name', value: "packer test boot #{tag_name}"},
79
+ {key: 'environment', value: 'packer-development'},
80
+ {key: 'temporary', value: 'kill me'}]
81
+ })
76
82
 
77
83
  require 'byebug'
78
84
  byebug
@@ -106,7 +112,7 @@ module Hashicorptools
106
112
  end
107
113
 
108
114
  def ami_building_subnet_id
109
- ec2.client.describe_subnets({filters: [{name: "vpc-id", values: [ami_building_vpc_id]}]}).subnet_set.first.subnet_id
115
+ ec2.describe_subnets({filters: [{name: "vpc-id", values: [ami_building_vpc_id]}]}).subnets.first.subnet_id
110
116
  end
111
117
 
112
118
  def format_variable(key, value)
@@ -133,15 +139,16 @@ module Hashicorptools
133
139
  @auto_scaling ||= Aws::AutoScaling::Client.new(region: client_region)
134
140
  end
135
141
 
136
- def ec2_v2(client_region=region)
137
- @ec2 ||= Aws::EC2::Client.new(region: client_region)
142
+ def regional_ec2_client(client_region=region)
143
+ @_regional_ec2_clients = {} if @_regional_ec2_clients.nil?
144
+ @_regional_ec2_clients[client_region] ||= Aws::EC2::Client.new(region: client_region)
138
145
  end
139
146
 
140
147
  def amis_in_use(client_region)
141
148
  launch_configs = auto_scaling(client_region).describe_launch_configurations
142
149
  image_ids = launch_configs.data['launch_configurations'].collect{|lc| lc.image_id}.flatten
143
150
 
144
- ec2_reservations = ec2_v2(client_region).describe_instances
151
+ ec2_reservations = regional_ec2_client(client_region).describe_instances
145
152
  image_ids << ec2_reservations.reservations.collect{|res| res.instances.collect{|r| r.image_id}}.flatten
146
153
  image_ids.flatten
147
154
  end
@@ -170,7 +177,9 @@ module Hashicorptools
170
177
  amis_to_remove.each do |ami|
171
178
  ebs_mappings = ami.block_device_mappings
172
179
  puts "Deregistering #{ami.image_id}"
173
- ami.deregister
180
+ regional_ec2_client(region_to_clean).deregister_image({
181
+ image_id: ami.image_id
182
+ })
174
183
  delete_ami_snapshots(ebs_mappings, snapshot_region: region_to_clean)
175
184
  end
176
185
 
@@ -184,16 +193,21 @@ module Hashicorptools
184
193
  end
185
194
 
186
195
  def amis_in_region(ami_region)
187
- regional_ec2_client = AWS::EC2.new(region: ami_region)
188
-
189
- sort_by_created_at( regional_ec2_client.images.with_owner('self').with_tag('Name', tag_name).to_a )
196
+ images = regional_ec2_client(ami_region).describe_images({
197
+ owners: ['self'],
198
+ filters: [{name: 'tag:Name', values: [tag_name]}]
199
+ }).images
200
+ sort_by_created_at(images)
190
201
  end
191
202
 
192
203
  def delete_ami_snapshots(ebs_mappings, snapshot_region:)
193
- regional_ec2_client = AWS::EC2::Client.new(region: snapshot_region)
194
- ebs_mappings.each do |volume, attributes|
195
- puts "Deleting snapshot #{attributes[:snapshot_id]}"
196
- regional_ec2_client.delete_snapshot(snapshot_id: attributes[:snapshot_id])
204
+ ec2_client = regional_ec2_client(snapshot_region)
205
+
206
+ ebs_mappings.each do |ebs_mapping|
207
+ unless ebs_mapping.ebs.nil?
208
+ puts "Deleting snapshot #{ebs_mapping.ebs.snapshot_id}"
209
+ ec2_client.delete_snapshot({snapshot_id: ebs_mapping.ebs.snapshot_id})
210
+ end
197
211
  end
198
212
  end
199
213
  end
@@ -2,9 +2,6 @@ require 'bundler/setup'
2
2
  require 'dotenv'
3
3
  require 'thor'
4
4
  require 'active_support/all'
5
- require 'aws-sdk-v1'
6
- require 'aws-sdk'
7
- require 'dynect_rest'
8
5
 
9
6
  module Hashicorptools
10
7
  end
@@ -0,0 +1,14 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe Hashicorptools::Ec2Utilities, type: :helper do
4
+ let(:including_class) { Class.new { include Hashicorptools::Ec2Utilities } }
5
+
6
+ subject { including_class.new }
7
+
8
+ describe '#ec2' do
9
+ it 'should return a client' do
10
+ client = subject.ec2
11
+ expect(client).to be_a Aws::EC2::Client
12
+ end
13
+ end
14
+ end
metadata CHANGED
@@ -1,57 +1,74 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hashicorptools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
+ - Kathy Lu
8
+ - Diego Marcet
9
+ - Grey Moore
7
10
  - Nathan Woodhull
8
11
  autorequire:
9
12
  bindir: bin
10
13
  cert_chain: []
11
- date: 2020-07-17 00:00:00.000000000 Z
14
+ date: 2022-01-18 00:00:00.000000000 Z
12
15
  dependencies:
13
16
  - !ruby/object:Gem::Dependency
14
- name: aws-sdk
17
+ name: aws-sdk-autoscaling
15
18
  requirement: !ruby/object:Gem::Requirement
16
19
  requirements:
17
20
  - - "~>"
18
21
  - !ruby/object:Gem::Version
19
- version: '2'
22
+ version: '1'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: '2'
29
+ version: '1'
27
30
  - !ruby/object:Gem::Dependency
28
- name: dynect_rest
31
+ name: aws-sdk-codedeploy
29
32
  requirement: !ruby/object:Gem::Requirement
30
33
  requirements:
31
- - - '='
34
+ - - "~>"
32
35
  - !ruby/object:Gem::Version
33
- version: 0.4.6
36
+ version: '1'
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - '='
41
+ - - "~>"
39
42
  - !ruby/object:Gem::Version
40
- version: 0.4.6
43
+ version: '1'
41
44
  - !ruby/object:Gem::Dependency
42
- name: aws-sdk-v1
45
+ name: aws-sdk-ec2
43
46
  requirement: !ruby/object:Gem::Requirement
44
47
  requirements:
45
48
  - - "~>"
46
49
  - !ruby/object:Gem::Version
47
- version: '1.67'
50
+ version: '1'
48
51
  type: :runtime
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
55
  - - "~>"
53
56
  - !ruby/object:Gem::Version
54
- version: '1.67'
57
+ version: '1'
58
+ - !ruby/object:Gem::Dependency
59
+ name: aws-sdk-elasticloadbalancing
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: '1'
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '1'
55
72
  - !ruby/object:Gem::Dependency
56
73
  name: dotenv
57
74
  requirement: !ruby/object:Gem::Requirement
@@ -76,23 +93,20 @@ dependencies:
76
93
  name: thor
77
94
  requirement: !ruby/object:Gem::Requirement
78
95
  requirements:
79
- - - '='
96
+ - - ">="
80
97
  - !ruby/object:Gem::Version
81
98
  version: 0.20.0
82
99
  type: :runtime
83
100
  prerelease: false
84
101
  version_requirements: !ruby/object:Gem::Requirement
85
102
  requirements:
86
- - - '='
103
+ - - ">="
87
104
  - !ruby/object:Gem::Version
88
105
  version: 0.20.0
89
106
  - !ruby/object:Gem::Dependency
90
107
  name: activesupport
91
108
  requirement: !ruby/object:Gem::Requirement
92
109
  requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '5.1'
96
110
  - - ">="
97
111
  - !ruby/object:Gem::Version
98
112
  version: 5.1.4
@@ -100,9 +114,6 @@ dependencies:
100
114
  prerelease: false
101
115
  version_requirements: !ruby/object:Gem::Requirement
102
116
  requirements:
103
- - - "~>"
104
- - !ruby/object:Gem::Version
105
- version: '5.1'
106
117
  - - ">="
107
118
  - !ruby/object:Gem::Version
108
119
  version: 5.1.4
@@ -110,9 +121,6 @@ dependencies:
110
121
  name: byebug
111
122
  requirement: !ruby/object:Gem::Requirement
112
123
  requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '10.0'
116
124
  - - ">="
117
125
  - !ruby/object:Gem::Version
118
126
  version: 10.0.2
@@ -120,9 +128,6 @@ dependencies:
120
128
  prerelease: false
121
129
  version_requirements: !ruby/object:Gem::Requirement
122
130
  requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: '10.0'
126
131
  - - ">="
127
132
  - !ruby/object:Gem::Version
128
133
  version: 10.0.2
@@ -130,78 +135,72 @@ dependencies:
130
135
  name: git
131
136
  requirement: !ruby/object:Gem::Requirement
132
137
  requirements:
133
- - - "~>"
138
+ - - ">"
134
139
  - !ruby/object:Gem::Version
135
140
  version: '1.3'
136
141
  type: :runtime
137
142
  prerelease: false
138
143
  version_requirements: !ruby/object:Gem::Requirement
139
144
  requirements:
140
- - - "~>"
145
+ - - ">"
141
146
  - !ruby/object:Gem::Version
142
147
  version: '1.3'
143
148
  - !ruby/object:Gem::Dependency
144
149
  name: rspec
145
150
  requirement: !ruby/object:Gem::Requirement
146
151
  requirements:
147
- - - "~>"
152
+ - - ">"
148
153
  - !ruby/object:Gem::Version
149
154
  version: '3.7'
150
155
  type: :development
151
156
  prerelease: false
152
157
  version_requirements: !ruby/object:Gem::Requirement
153
158
  requirements:
154
- - - "~>"
159
+ - - ">"
155
160
  - !ruby/object:Gem::Version
156
161
  version: '3.7'
157
162
  - !ruby/object:Gem::Dependency
158
163
  name: rdoc
159
164
  requirement: !ruby/object:Gem::Requirement
160
165
  requirements:
161
- - - "~>"
166
+ - - ">"
162
167
  - !ruby/object:Gem::Version
163
168
  version: '3.12'
164
169
  type: :development
165
170
  prerelease: false
166
171
  version_requirements: !ruby/object:Gem::Requirement
167
172
  requirements:
168
- - - "~>"
173
+ - - ">"
169
174
  - !ruby/object:Gem::Version
170
175
  version: '3.12'
171
176
  - !ruby/object:Gem::Dependency
172
177
  name: bundler
173
178
  requirement: !ruby/object:Gem::Requirement
174
179
  requirements:
175
- - - "~>"
180
+ - - ">"
176
181
  - !ruby/object:Gem::Version
177
182
  version: '2.0'
178
183
  type: :development
179
184
  prerelease: false
180
185
  version_requirements: !ruby/object:Gem::Requirement
181
186
  requirements:
182
- - - "~>"
187
+ - - ">"
183
188
  - !ruby/object:Gem::Version
184
189
  version: '2.0'
185
190
  - !ruby/object:Gem::Dependency
186
191
  name: juwelier
187
192
  requirement: !ruby/object:Gem::Requirement
188
193
  requirements:
189
- - - "~>"
190
- - !ruby/object:Gem::Version
191
- version: '2.4'
192
194
  - - ">="
193
195
  - !ruby/object:Gem::Version
194
- version: 2.4.7
196
+ version: '0'
195
197
  type: :development
196
198
  prerelease: false
197
199
  version_requirements: !ruby/object:Gem::Requirement
198
200
  requirements:
199
- - - "~>"
200
- - !ruby/object:Gem::Version
201
- version: '2.4'
202
201
  - - ">="
203
202
  - !ruby/object:Gem::Version
204
- version: 2.4.7
203
+ version: '0'
205
204
  - !ruby/object:Gem::Dependency
206
205
  name: simplecov
207
206
  requirement: !ruby/object:Gem::Requirement
@@ -225,9 +224,9 @@ extra_rdoc_files:
225
224
  - LICENSE
226
225
  - README.md
227
226
  files:
227
+ - ".github/workflows/ci.yml"
228
228
  - ".ruby-gemset"
229
229
  - ".ruby-version"
230
- - ".travis.yml"
231
230
  - Gemfile
232
231
  - LICENSE
233
232
  - README.md
@@ -244,9 +243,9 @@ files:
244
243
  - lib/hashicorptools/packer.rb
245
244
  - lib/hashicorptools/update_launch_configuration.rb
246
245
  - lib/hashicorptools/variables.rb
247
- - spec/hashicorptools_spec.rb
246
+ - spec/ec2_utilities_spec.rb
248
247
  - spec/spec_helper.rb
249
- homepage: http://github.com/woodhull/hashicorptools
248
+ homepage: http://github.com/controlshift/hashicorptools
250
249
  licenses:
251
250
  - MIT
252
251
  metadata: {}
@@ -265,7 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
264
  - !ruby/object:Gem::Version
266
265
  version: '0'
267
266
  requirements: []
268
- rubygems_version: 3.1.2
267
+ rubygems_version: 3.1.6
269
268
  signing_key:
270
269
  specification_version: 4
271
270
  summary: Wrappers for terraform and packer
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - "2.6.6"
4
- # TravisCI uses Bundler 1 by default, but we want Bundler 2
5
- # https://docs.travis-ci.com/user/languages/ruby/#bundler-20
6
- before_install:
7
- - gem install bundler
@@ -1,8 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "Hashicorptools" do
4
- it "fails" do
5
- pending
6
- fail "hey buddy, you should probably rename this file and start specing for real"
7
- end
8
- end