covalence 0.9.4 → 0.9.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +27 -0
- data/README.md +0 -2
- data/lib/covalence.rb +1 -0
- data/lib/covalence/core/cli_wrappers/popen_wrapper.rb +1 -3
- data/lib/covalence/core/entities/input.rb +4 -0
- data/lib/covalence/core/entities/stack.rb +6 -6
- data/lib/covalence/core/services/packer_stack_tasks.rb +25 -0
- data/lib/covalence/core/services/terraform_stack_tasks.rb +29 -0
- data/lib/covalence/environment_tasks.rb +12 -0
- data/lib/covalence/version.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1b7249a87a530a5f4fe459276b5a19a91a81ffc3c89dbae36ea04701c1b44d7
|
4
|
+
data.tar.gz: 280e25c48b7c45c91081f272c432ff10314f5b45b8437edf690abd6b068dd99b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 430b7d77796d29c5f12e6210176b9085eb09e99d668d0d8568d9c7a07e862ee3696eabe48613ecb6e789f33a9b3a3af7a33d0614dd4cbc2e050bcc898faf502c
|
7
|
+
data.tar.gz: 7458eb37454bff3aee3f73fae29df261e6e5e2f0390c6177aad9e9509166d3875bda84a6501757f83f1b024ee5cde8b0e54d6d2d5093b8f5da17e8afd20dea01
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,30 @@
|
|
1
|
+
## 0.9.9 (Sept 10, 2020)
|
2
|
+
IMPROVEMENTS:
|
3
|
+
- Updated all gems to the latest in the Gemfile.lock.
|
4
|
+
|
5
|
+
## 0.9.8 (Jun 10, 2020)
|
6
|
+
IMPROVEMENTS:
|
7
|
+
- Updated all gems to the latest in the Gemfile.lock.
|
8
|
+
|
9
|
+
BACKWARDS INCOMPATIBILITIES:
|
10
|
+
- Issue [#90](https://github.com/unifio/covalence/issues/90) Removed prefixout dependency from covalence. Directory prefix will no longer be displayed in output. Directory is already output prior to execution.
|
11
|
+
|
12
|
+
FIXES:
|
13
|
+
- [activesupport](https://github.com/advisories/GHSA-2p68-f74v-9wc6) upgraded activesupport to version 5.2.4.3 or later.
|
14
|
+
- [nokogiri](https://github.com/advisories/GHSA-7553-jr98-vx47) Upgrade nokogiri to version 1.10.8 or later.
|
15
|
+
|
16
|
+
## 0.9.7 (Sep 14, 2019)
|
17
|
+
|
18
|
+
IMPROVEMENTS:
|
19
|
+
- Issue [#88](https://github.com/unifio/covalence/issues/88) Add input processing to packer stacks. Allows for shell interpolation processing on inputs for packer stacks.
|
20
|
+
- Can use the shell interpolation in the template to generate AWS assume role temporary keys to populate template. This allows for role assumption since role assumption is not supported from `~/.aws/config` attributes.
|
21
|
+
|
22
|
+
## 0.9.6 (Sep 9, 2019)
|
23
|
+
|
24
|
+
IMPROVEMENTS:
|
25
|
+
- Issue [#86](https://github.com/unifio/covalence/issues/86) Add ability to export stacks to a stack_exports directory.
|
26
|
+
|
27
|
+
|
1
28
|
## 0.9.4 (Aug 30, 2019)
|
2
29
|
|
3
30
|
FIXES:
|
data/README.md
CHANGED
@@ -106,7 +106,6 @@ $ bin/covalence spec
|
|
106
106
|
```
|
107
107
|
|
108
108
|
To run the Rspec test locally without container, you will need to install the following:
|
109
|
-
* prefixout -- https://github.com/WhistleLabs/prefixout
|
110
109
|
* sops -- https://github.com/mozilla/sops
|
111
110
|
|
112
111
|
### UAT
|
@@ -502,7 +501,6 @@ You will probably need the following packages installed locally
|
|
502
501
|
- Terraform
|
503
502
|
- Packer
|
504
503
|
- Sops
|
505
|
-
- [prefixout](https://github.com/unifio/prefixout/releases)
|
506
504
|
|
507
505
|
Execute the following to build the gem:
|
508
506
|
|
data/lib/covalence.rb
CHANGED
@@ -17,6 +17,7 @@ module Covalence
|
|
17
17
|
# TODO: could use better naming
|
18
18
|
PACKER = File.absolute_path(File.join(WORKSPACE, (ENV['COVALENCE_PACKER_DIR'] || '.')))
|
19
19
|
TERRAFORM = File.absolute_path(File.join(WORKSPACE, (ENV['COVALENCE_TERRAFORM_DIR'] || '.')))
|
20
|
+
STACK_EXPORT = File.absolute_path(File.join(WORKSPACE, (ENV['COVALENCE_STACK_EXPORT_DIR'] || './stack-exports')))
|
20
21
|
TEST_ENVS = (ENV['COVALENCE_TEST_ENVS'] || "").split(',')
|
21
22
|
# Reserved namespace including default ci and spec
|
22
23
|
RESERVED_NS = [(ENV['COVALENCE_RESERVED_NAMESPACE'] || "").split(','), 'ci', 'spec', 'sops']
|
@@ -77,9 +77,7 @@ module Covalence
|
|
77
77
|
# so when the parent dies, child will know to terminate itself.
|
78
78
|
Signal.trap("INT") { logger.info "Trapped Ctrl-c. Disable parent process from exiting, orphaning the child fork below which may or may not work" }
|
79
79
|
wait_thread = nil
|
80
|
-
|
81
|
-
whole_cmd=['prefixout', '-p', "#{prefix} ", '--'].concat(run_cmd.split)
|
82
|
-
Open3.popen3(env, *whole_cmd, :chdir=>workdir) do |stdin, stdout, stderr, wait_thr|
|
80
|
+
Open3.popen3(env, *run_cmd, :chdir=>workdir) do |stdin, stdout, stderr, wait_thr|
|
83
81
|
mappings = { stdin_io => stdin, stdout => stdout_io, stderr => stderr_io }
|
84
82
|
wait_thread = wait_thr
|
85
83
|
|
@@ -51,19 +51,19 @@ module Covalence
|
|
51
51
|
File.open("#{path}/covalence-inputs.tfvars",'w') {|f| f.write(config)}
|
52
52
|
elsif type == "packer"
|
53
53
|
config = Hash.new
|
54
|
-
inputs.each do |name, input|
|
55
|
-
config[name] = input
|
54
|
+
inputs.values.map(&:to_command_hash_elements).each do |name, input|
|
55
|
+
config["#{name}"] = input
|
56
56
|
end
|
57
57
|
config_json = JSON.generate(config)
|
58
|
-
logger.info "\nStack inputs:\n\n#{config_json}"
|
59
|
-
File.open(
|
58
|
+
logger.info "path: #{path} module_path: #{module_path}\nStack inputs:\n\n#{config_json}"
|
59
|
+
File.open("#{path}/covalence-inputs.json",'w') {|f| f.write(config_json)}
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
def materialize_state_inputs(store: state_stores.first)
|
63
|
+
def materialize_state_inputs(store: state_stores.first, path: '.')
|
64
64
|
config = store.get_config
|
65
65
|
logger.info "\nState store configuration:\n\n#{config}"
|
66
|
-
File.open(
|
66
|
+
File.open("#{path}/covalence-state.tf",'w') {|f| f.write(config)}
|
67
67
|
end
|
68
68
|
|
69
69
|
def logger
|
@@ -62,6 +62,14 @@ module Covalence
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
# :reek:TooManyStatements
|
66
|
+
def packer_stack_export()
|
67
|
+
packer_stack_export_init(File.expand_path(File.join(Covalence::STACK_EXPORT,'packer',stack.full_name))).each do |stackdir|
|
68
|
+
populate_workspace(stackdir)
|
69
|
+
stack.materialize_cmd_inputs(stackdir)
|
70
|
+
logger.info "Exported to #{stackdir}:"
|
71
|
+
end
|
72
|
+
end
|
65
73
|
private
|
66
74
|
attr_reader :template_path, :stack
|
67
75
|
|
@@ -97,6 +105,23 @@ module Covalence
|
|
97
105
|
args.flatten.compact.reject(&:empty?).map(&:strip)
|
98
106
|
end
|
99
107
|
|
108
|
+
# :reek:BooleanParameter
|
109
|
+
def packer_stack_export_init(stackdir, dry_run: false, verbose: true)
|
110
|
+
if(File.exist?(stackdir))
|
111
|
+
logger.info "Deleting before export: #{stackdir}"
|
112
|
+
FileUtils.rm_rf(stackdir, {
|
113
|
+
noop: dry_run,
|
114
|
+
verbose: verbose,
|
115
|
+
secure: true,
|
116
|
+
})
|
117
|
+
end
|
118
|
+
logger.info "Creating stack directory: #{stackdir}"
|
119
|
+
FileUtils.mkdir_p(stackdir, {
|
120
|
+
noop: dry_run,
|
121
|
+
verbose: verbose,
|
122
|
+
})
|
123
|
+
end
|
124
|
+
|
100
125
|
def logger
|
101
126
|
Covalence::LOGGER
|
102
127
|
end
|
@@ -44,6 +44,18 @@ module Covalence
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
+
# :reek:TooManyStatements
|
48
|
+
def stack_export
|
49
|
+
stack_export_init(File.expand_path(File.join(Covalence::STACK_EXPORT,'terraform',stack.full_name))).each do |stackdir|
|
50
|
+
populate_workspace(stackdir)
|
51
|
+
stack.materialize_state_inputs(path: stackdir)
|
52
|
+
TerraformCli.terraform_get(path=@path, workdir=stackdir)
|
53
|
+
TerraformCli.terraform_init(path: @path, workdir: stackdir)
|
54
|
+
stack.materialize_cmd_inputs(stackdir)
|
55
|
+
logger.info "Exported to #{stackdir}:"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
47
59
|
# :reek:TooManyStatements
|
48
60
|
def stack_verify(tmpdir)
|
49
61
|
return false if !TerraformCli.terraform_check_style(@path)
|
@@ -229,6 +241,23 @@ module Covalence
|
|
229
241
|
end
|
230
242
|
end
|
231
243
|
|
244
|
+
# :reek:BooleanParameter
|
245
|
+
def stack_export_init(stackdir, dry_run: false, verbose: true)
|
246
|
+
if(File.exist?(stackdir))
|
247
|
+
logger.info "Deleting before export: #{stackdir}"
|
248
|
+
FileUtils.rm_rf(stackdir, {
|
249
|
+
noop: dry_run,
|
250
|
+
verbose: verbose,
|
251
|
+
secure: true,
|
252
|
+
})
|
253
|
+
end
|
254
|
+
logger.info "Creating stack directory: #{stackdir}"
|
255
|
+
FileUtils.mkdir_p(stackdir, {
|
256
|
+
noop: dry_run,
|
257
|
+
verbose: verbose,
|
258
|
+
})
|
259
|
+
end
|
260
|
+
|
232
261
|
def logger
|
233
262
|
Covalence::LOGGER
|
234
263
|
end
|
@@ -126,6 +126,12 @@ module Covalence
|
|
126
126
|
custom_opts = Slop.parse(get_runtime_args, { suppress_errors: true, banner: false })
|
127
127
|
packer_tasks.context_validate(target_args, custom_opts.args)
|
128
128
|
end
|
129
|
+
|
130
|
+
desc "Export the #{stack_name} stack of the #{environment_name} environment to #{Covalence::STACK_EXPORT}/packer"
|
131
|
+
task generate_rake_taskname(environment_name, stack_name, "packer_stack_export") do
|
132
|
+
packer_tasks.packer_stack_export()
|
133
|
+
end
|
134
|
+
|
129
135
|
end
|
130
136
|
|
131
137
|
# :reek:TooManyStatements
|
@@ -164,6 +170,12 @@ module Covalence
|
|
164
170
|
task generate_rake_taskname(environment_name, stack_name, "shell") do
|
165
171
|
tf_tasks.stack_shell
|
166
172
|
end
|
173
|
+
|
174
|
+
desc "Export the #{stack_name} stack of the #{environment_name} environment to #{Covalence::STACK_EXPORT}/terraform"
|
175
|
+
task generate_rake_taskname(environment_name, stack_name, "stack_export") do
|
176
|
+
tf_tasks.stack_export
|
177
|
+
end
|
178
|
+
|
167
179
|
end
|
168
180
|
|
169
181
|
# :reek:TooManyStatements
|
data/lib/covalence/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: covalence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Unif.io
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deep_merge
|
@@ -42,16 +42,16 @@ dependencies:
|
|
42
42
|
name: json
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 2.
|
47
|
+
version: 2.3.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 2.
|
54
|
+
version: 2.3.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rest-client
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,14 +254,14 @@ dependencies:
|
|
254
254
|
requirements:
|
255
255
|
- - "~>"
|
256
256
|
- !ruby/object:Gem::Version
|
257
|
-
version: 2.
|
257
|
+
version: 2.7.5
|
258
258
|
type: :development
|
259
259
|
prerelease: false
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
261
261
|
requirements:
|
262
262
|
- - "~>"
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version: 2.
|
264
|
+
version: 2.7.5
|
265
265
|
- !ruby/object:Gem::Dependency
|
266
266
|
name: byebug
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|