hashicorptools 0.5.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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