terraform-wrapper 1.2.5 → 1.3.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 +4 -4
- data/.gitignore +0 -5
- data/.gitlab-ci.yml +4 -33
- data/.rspec +1 -0
- data/Rakefile +8 -0
- data/avatar-0.png +0 -0
- data/avatar-1.png +0 -0
- data/lib/terraform-wrapper/shared/latest.rb +5 -1
- data/lib/terraform-wrapper/shared/runner.rb +16 -4
- data/lib/terraform-wrapper/tasks/taint.rb +66 -0
- data/lib/terraform-wrapper/tasks.rb +1 -0
- data/lib/terraform-wrapper/version.rb +1 -1
- data/lib/terraform-wrapper.rb +1 -0
- data/terraform-wrapper.gemspec +3 -1
- metadata +24 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91c97704433138c53e6e8c487ddc8ac55aaa08eafcd243be20c88009f3bc0ef8
|
4
|
+
data.tar.gz: 4e912bdd6cf103be7f78067a99c24f87fd26f7f213fc18a61e9a636d82679fd1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 819de26eca1f26340305bff23097d55ca9983aed1f99ab7006fa8b57d770d62628740a43f6af80025e3bf2d3b64c345e14f4bf587a957a2e42b11d1e46007b3e
|
7
|
+
data.tar.gz: 2ce0e456878d5ca3e77d5460d885cf092582b3d1b8405b6f44056c5f6c2e04b67d6ae43190823376dd3b2bd55ff7bc37d38b988f4e94acd4e5ea3a91b41e697e
|
data/.gitignore
CHANGED
data/.gitlab-ci.yml
CHANGED
@@ -1,37 +1,8 @@
|
|
1
1
|
###############################################################################
|
2
2
|
|
3
|
-
|
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
|
-
|
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
|
+
###############################################################################
|
data/lib/terraform-wrapper.rb
CHANGED
@@ -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
|
data/terraform-wrapper.gemspec
CHANGED
@@ -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/
|
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.
|
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:
|
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/
|
108
|
+
homepage: https://gitlab.com/bitservices/ruby/terraform-wrapper/
|
91
109
|
licenses:
|
92
110
|
- MIT
|
93
111
|
metadata:
|
94
|
-
homepage_uri: https://gitlab.com/
|
95
|
-
source_code_uri: https://gitlab.com/
|
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.
|
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.
|