terraform-wrapper 1.2.5 → 1.3.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: 61563bbc4ee42f89c431029a6ef933e3327e785fbc3bde3091b804e60d23c95d
4
- data.tar.gz: 17b0def9e9c08f8c1d80952297eab0012117181f6f21487128e224ef6938c273
3
+ metadata.gz: 91c97704433138c53e6e8c487ddc8ac55aaa08eafcd243be20c88009f3bc0ef8
4
+ data.tar.gz: 4e912bdd6cf103be7f78067a99c24f87fd26f7f213fc18a61e9a636d82679fd1
5
5
  SHA512:
6
- metadata.gz: f28121fc946492d46d11c28e96f5f7b95eb4b55731faa2c9e392af81b5e2ab9ad52c4648e645dac7e78819cedf3516b26cf41d8fd532c68ada8903b321e83a3c
7
- data.tar.gz: 47b7f9c44fa88c75276f5497216b9480682c0e3590b31704d46a32d7b0b0e498b2d3aa575c04f07d452e5df5605ca2a53269a8bbefd26a0146bd4279ecddf20b
6
+ metadata.gz: 819de26eca1f26340305bff23097d55ca9983aed1f99ab7006fa8b57d770d62628740a43f6af80025e3bf2d3b64c345e14f4bf587a957a2e42b11d1e46007b3e
7
+ data.tar.gz: 2ce0e456878d5ca3e77d5460d885cf092582b3d1b8405b6f44056c5f6c2e04b67d6ae43190823376dd3b2bd55ff7bc37d38b988f4e94acd4e5ea3a91b41e697e
data/.gitignore CHANGED
@@ -21,8 +21,3 @@
21
21
  /tmp/
22
22
 
23
23
  ###############################################################################
24
-
25
- /archlinux/
26
- !/archlinux/PKGBUILD
27
-
28
- ###############################################################################
data/.gitlab-ci.yml CHANGED
@@ -1,37 +1,8 @@
1
1
  ###############################################################################
2
2
 
3
- image: ruby
4
-
5
- ###############################################################################
6
-
7
- stages:
8
- - test
9
- - publish
10
-
11
- ###############################################################################
12
-
13
- test:
14
- stage : test
15
- script:
16
- - echo "-- Beginning Test --"
17
- - echo "-- Tests not implemented yet --"
18
-
19
- ###############################################################################
20
-
21
- deploy:
22
- rules:
23
- - if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+$/'
24
- stage: publish
25
- script:
26
- - echo "-- Beginning Publish --"
27
- - test -n "${GEM_HOST_API_KEY}"
28
- - echo "RubyGems API key found!"
29
- - hash rake
30
- - hash ruby
31
- - hash gem
32
- - echo "-- Publishing Gem --"
33
- - rake release
34
- - echo "-- Listing Sums --"
35
- - sha256sum "pkg"/*.gem
3
+ include:
4
+ - project: 'bitservices/gitlab/ruby'
5
+ ref: latest
6
+ file: '/templates/gems.yml'
36
7
 
37
8
  ###############################################################################
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/Rakefile CHANGED
@@ -11,3 +11,11 @@ require "bundler/gem_tasks"
11
11
  task default: %i[]
12
12
 
13
13
  ###############################################################################
14
+
15
+ begin
16
+ require "rspec/core/rake_task"
17
+ RSpec::Core::RakeTask.new(:spec)
18
+ rescue LoadError
19
+ end
20
+
21
+ ###############################################################################
data/avatar-0.png ADDED
Binary file
data/avatar-1.png ADDED
Binary file
@@ -52,7 +52,11 @@ module TerraformWrapper
52
52
  logger.fatal("Response body from Hashicorp Checkpoint is not permitted!") if not response.class.body_permitted?
53
53
  logger.fatal("Response body from Hashicorp Checkpoint is empty!") if response.body.nil?
54
54
 
55
- body = JSON.parse(response.body)
55
+ begin
56
+ body = JSON.parse(response.body)
57
+ rescue JSON::ParserError
58
+ logger.fatal("Response body from Hashicorp Checkpoint is not valid JSON!")
59
+ end
56
60
 
57
61
  logger.fatal("Hashicorp Checkpoint JSON response did not include latest available Terraform version!") if not body.key?("current_version")
58
62
  logger.fatal("Hashicorp Checkpoint indicated latest available version of Terraform is blank!") if body["current_version"].empty?
@@ -98,15 +98,14 @@ module TerraformWrapper
98
98
  logger.fatal("Cannot Terraform apply before initialising backend!") unless initialised
99
99
 
100
100
  parameters = Array.new
101
- parameters.concat(variable_files)
102
- parameters.concat(variable_strings)
103
101
  parameters.append("-auto-approve")
104
102
 
105
- if not file.nil? and file.kind_of?(String) and not file.strip.empty? then
103
+ if (not file.nil?) and file.kind_of?(String) and (not file.strip.empty?) then
106
104
  logger.fatal("Plan file: #{file} does not exist!") unless File.file?(file)
107
105
  parameters.append("\"#{file}\"")
108
106
  else
109
107
  parameters.concat(variable_files)
108
+ parameters.concat(variable_strings)
110
109
  end
111
110
 
112
111
  logger.fatal("Terraform apply failed!") unless run(action: "apply", parameters: parameters)
@@ -149,7 +148,6 @@ module TerraformWrapper
149
148
  def import(address: nil, id: nil)
150
149
  logger.fatal("Cannot Terraform import before initialising backend!") unless initialised
151
150
 
152
- logger.fatal("Terraform state address for import must be a string!") unless address.kind_of?(String)
153
151
  logger.fatal("Terraform state address for import must be a string!") unless address.kind_of?(String)
154
152
  logger.fatal("Terraform state address for import must not be blank!") if address.strip.empty?
155
153
 
@@ -166,6 +164,20 @@ module TerraformWrapper
166
164
  logger.fatal("Terraform import failed!") unless run(action: "import", parameters: parameters)
167
165
  end
168
166
 
167
+ ###############################################################################
168
+
169
+ def taint(address: nil)
170
+ logger.fatal("Cannot Terraform taint before initialising backend!") unless initialised
171
+
172
+ logger.fatal("Terraform state address for taint must be a string!") unless address.kind_of?(String)
173
+ logger.fatal("Terraform state address for taint must not be blank!") if address.strip.empty?
174
+
175
+ parameters = Array.new
176
+ parameters.append("'#{address}'")
177
+
178
+ logger.fatal("Terraform taint failed!") unless run(action: "taint", parameters: parameters)
179
+ end
180
+
169
181
  ###############################################################################
170
182
 
171
183
  def validate
@@ -0,0 +1,66 @@
1
+ ###############################################################################
2
+
3
+ module TerraformWrapper
4
+
5
+ ###############################################################################
6
+
7
+ module Tasks
8
+
9
+ ###############################################################################
10
+
11
+ class Taint < ::Rake::TaskLib
12
+
13
+ ###############################################################################
14
+
15
+ include TerraformWrapper::Shared::Logging
16
+
17
+ ###############################################################################
18
+
19
+ @binary
20
+ @code
21
+ @options
22
+
23
+ ###############################################################################
24
+
25
+ def initialize(binary:, code:, options:)
26
+ @binary = binary
27
+ @code = code
28
+ @options = options
29
+
30
+ yield self if block_given?
31
+
32
+ taint_task
33
+ end
34
+
35
+ ###############################################################################
36
+
37
+ def taint_task
38
+ desc "Taint a piece of existing infrastructure so that Terraform recreates it at next apply."
39
+ task :taint, [:config, :address] => :binary do |t, args|
40
+ options = @options.merge({"name" => args[:config]})
41
+
42
+ logger.info("Processing configuration for Terraform taint...")
43
+
44
+ config = TerraformWrapper::Shared::Config.new(code: @code, options: options)
45
+ runner = TerraformWrapper::Shared::Runner.new(binary: @binary, code: @code)
46
+
47
+ logger.info("Running Terraform taint for service: #{config.service}, component: #{@code.name}...")
48
+
49
+ runner.init(config: config)
50
+ runner.taint(address: args[:address])
51
+ end
52
+ end
53
+
54
+ ###############################################################################
55
+
56
+ end
57
+
58
+ ###############################################################################
59
+
60
+ end
61
+
62
+ ###############################################################################
63
+
64
+ end
65
+
66
+ ###############################################################################
@@ -12,6 +12,7 @@ require_relative 'tasks/import'
12
12
  require_relative 'tasks/init'
13
13
  require_relative 'tasks/plan'
14
14
  require_relative 'tasks/plandestroy'
15
+ require_relative 'tasks/taint'
15
16
  require_relative 'tasks/upgrade'
16
17
  require_relative 'tasks/validate'
17
18
 
@@ -4,7 +4,7 @@ module TerraformWrapper
4
4
 
5
5
  ###############################################################################
6
6
 
7
- VERSION = "1.2.5"
7
+ VERSION = "1.3.0"
8
8
 
9
9
  ###############################################################################
10
10
 
@@ -59,6 +59,7 @@ module TerraformWrapper
59
59
  tasks << TerraformWrapper::Tasks::Init.new(binary: binary, code: code, options: config_options)
60
60
  tasks << TerraformWrapper::Tasks::Plan.new(binary: binary, code: code, options: config_options)
61
61
  tasks << TerraformWrapper::Tasks::PlanDestroy.new(binary: binary, code: code, options: config_options)
62
+ tasks << TerraformWrapper::Tasks::Taint.new(binary: binary, code: code, options: config_options)
62
63
  tasks << TerraformWrapper::Tasks::Upgrade.new(binary: binary, code: code)
63
64
  tasks << TerraformWrapper::Tasks::Validate.new(binary: binary, code: code)
64
65
  return tasks
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
16
16
 
17
17
  spec.summary = "A ruby wrapper for managing Terraform binaries and remote state."
18
18
  spec.description = "A ruby wrapper for managing Terraform binaries and remote state. Each Terraform command (plan, apply, etc) is wrapped so that the correct binary is used and remote state referenced."
19
- spec.homepage = "https://gitlab.com/rlees85-ruby/terraform-wrapper/"
19
+ spec.homepage = "https://gitlab.com/bitservices/ruby/terraform-wrapper/"
20
20
  spec.license = "MIT"
21
21
 
22
22
  spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
@@ -34,6 +34,8 @@ Gem::Specification.new do |spec|
34
34
 
35
35
  spec.add_dependency 'rake', '~> 13.0'
36
36
  spec.add_dependency 'rubyzip', '~> 2.3'
37
+
38
+ spec.add_development_dependency 'rspec', '~> 3.10'
37
39
  end
38
40
 
39
41
  ###############################################################################
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terraform-wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.5
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Lees
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-24 00:00:00.000000000 Z
11
+ date: 2022-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.10'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.10'
41
55
  description: A ruby wrapper for managing Terraform binaries and remote state. Each
42
56
  Terraform command (plan, apply, etc) is wrapped so that the correct binary is used
43
57
  and remote state referenced.
@@ -49,9 +63,12 @@ extra_rdoc_files: []
49
63
  files:
50
64
  - ".gitignore"
51
65
  - ".gitlab-ci.yml"
66
+ - ".rspec"
52
67
  - Gemfile
53
68
  - LICENSE.txt
54
69
  - Rakefile
70
+ - avatar-0.png
71
+ - avatar-1.png
55
72
  - bin/console
56
73
  - bin/setup
57
74
  - lib/terraform-wrapper.rb
@@ -83,16 +100,17 @@ files:
83
100
  - lib/terraform-wrapper/tasks/init.rb
84
101
  - lib/terraform-wrapper/tasks/plan.rb
85
102
  - lib/terraform-wrapper/tasks/plandestroy.rb
103
+ - lib/terraform-wrapper/tasks/taint.rb
86
104
  - lib/terraform-wrapper/tasks/upgrade.rb
87
105
  - lib/terraform-wrapper/tasks/validate.rb
88
106
  - lib/terraform-wrapper/version.rb
89
107
  - terraform-wrapper.gemspec
90
- homepage: https://gitlab.com/rlees85-ruby/terraform-wrapper/
108
+ homepage: https://gitlab.com/bitservices/ruby/terraform-wrapper/
91
109
  licenses:
92
110
  - MIT
93
111
  metadata:
94
- homepage_uri: https://gitlab.com/rlees85-ruby/terraform-wrapper/
95
- source_code_uri: https://gitlab.com/rlees85-ruby/terraform-wrapper/
112
+ homepage_uri: https://gitlab.com/bitservices/ruby/terraform-wrapper/
113
+ source_code_uri: https://gitlab.com/bitservices/ruby/terraform-wrapper/
96
114
  post_install_message:
97
115
  rdoc_options: []
98
116
  require_paths:
@@ -108,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
126
  - !ruby/object:Gem::Version
109
127
  version: '0'
110
128
  requirements: []
111
- rubygems_version: 3.2.22
129
+ rubygems_version: 3.3.7
112
130
  signing_key:
113
131
  specification_version: 4
114
132
  summary: A ruby wrapper for managing Terraform binaries and remote state.