hashicorptools 1.1.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: 6be604fe3116d183c2dde41307fbc77382ee5145279fc75a893360594fe63c99
4
- data.tar.gz: 35227d95311d6653e9aad115973c65b19138957abee5930b09f5c3e279fdecdd
3
+ metadata.gz: 246f2fed394c2713cc6950a0b1b6b05dd3ee85a010dee0af5f3d8a5f56f8c820
4
+ data.tar.gz: 799d6e3a0afacf388fad6f8633d081d6934f5b9937ad98e4fd150524dcf264cf
5
5
  SHA512:
6
- metadata.gz: '088072cf063c210b280e91c9345d3be10529d41fc4c70398c10a53fbf613877f3ec8dac13f606783124bcb19d102533bbad797663294e072080dd03924c2fcdb'
7
- data.tar.gz: 47d602929569a5608fc557529381dea15a3e8e0fb079f1fa0dab4194e5415c8694a783d1a5ff936cc4a6566900af7794a3040009601b5f97b242a5aa95266452
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/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
- 1.1.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 1.1.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 = "1.1.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-30"
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",
@@ -42,9 +42,9 @@ Gem::Specification.new do |s|
42
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
@@ -94,11 +94,13 @@ module Hashicorptools
94
94
  end
95
95
 
96
96
  def verify_all_instances_using_correct_ami
97
- launch_configuration = Aws::AutoScaling::LaunchConfiguration.new(name: group.launch_configuration_name, client: autoscaling)
98
- image_id = launch_configuration.image_id
99
- group.instances.each do |i|
100
- instance = Aws::EC2::Instance.new(i.instance_id, client: ec2)
101
- 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
102
104
  end
103
105
  end
104
106
 
@@ -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
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
metadata CHANGED
@@ -1,14 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hashicorptools
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.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-30 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
17
  name: aws-sdk-autoscaling
@@ -221,9 +224,9 @@ extra_rdoc_files:
221
224
  - LICENSE
222
225
  - README.md
223
226
  files:
227
+ - ".github/workflows/ci.yml"
224
228
  - ".ruby-gemset"
225
229
  - ".ruby-version"
226
- - ".travis.yml"
227
230
  - Gemfile
228
231
  - LICENSE
229
232
  - README.md
@@ -242,7 +245,7 @@ files:
242
245
  - lib/hashicorptools/variables.rb
243
246
  - spec/ec2_utilities_spec.rb
244
247
  - spec/spec_helper.rb
245
- homepage: http://github.com/woodhull/hashicorptools
248
+ homepage: http://github.com/controlshift/hashicorptools
246
249
  licenses:
247
250
  - MIT
248
251
  metadata: {}
@@ -261,7 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
261
264
  - !ruby/object:Gem::Version
262
265
  version: '0'
263
266
  requirements: []
264
- rubygems_version: 3.1.2
267
+ rubygems_version: 3.1.6
265
268
  signing_key:
266
269
  specification_version: 4
267
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