simplygenius-atmos 0.10.1 → 0.11.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/CHANGELOG.md +15 -0
- data/lib/simplygenius/atmos/config.rb +1 -1
- data/lib/simplygenius/atmos/plugins/plan_summary.rb +2 -1
- data/lib/simplygenius/atmos/terraform_executor.rb +41 -20
- data/lib/simplygenius/atmos/version.rb +1 -1
- data/templates/new/config/atmos.yml +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8846428ce92ec4a40ec6dae71e6bd2f71f6a782602ad8e28d9a8a22e59651377
|
4
|
+
data.tar.gz: 74660bb78c5161496d22cf251be0398c69aebbbce86e660ba00acadfc4440e5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfe43ece44f453e003602badf0d870e871fee7008418c515faa236b30906b4722565962022969594efab87f0e563fa493f0ed51c5ef39eafb09f9ee725a66059
|
7
|
+
data.tar.gz: 8fa18edccdce49eda87a21125a27d263047fa0545461fe9a44fcbda2d75a2c929db24b064d47de56bbc5131b480862b1ac1eb721d4a8d49f5c0fb9a42d8c40d6
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
0.11.0 (09/25/2019)
|
2
|
+
-------------------
|
3
|
+
|
4
|
+
#### Notes on major changes
|
5
|
+
|
6
|
+
* Upgraded to support using terraform 0.12 . This should continue to work with terraform 0.11, but revving the minor version in case it introduces a breaking change. Most of the breaking changes were in the atmos-recipes repo, but you can pin to an older version of that to avoid getting the 0.12 recipes.
|
7
|
+
|
8
|
+
#### Full changelog
|
9
|
+
|
10
|
+
* fix 2.3 test failure [c20f957](https://github.com/simplygenius/atmos/commit/c20f957)
|
11
|
+
* terraform 0.12 conversion - fix passing of atmos variables to terraform process [cad8c8f](https://github.com/simplygenius/atmos/commit/cad8c8f)
|
12
|
+
* add_config comment detection needs single quote empty strings [2ef430b](https://github.com/simplygenius/atmos/commit/2ef430b)
|
13
|
+
* fix summary for terraform 0.12 [bccb915](https://github.com/simplygenius/atmos/commit/bccb915)
|
14
|
+
* use empty string instead of null as terraform 0.12 now treats null differently [8dd3853](https://github.com/simplygenius/atmos/commit/8dd3853)
|
15
|
+
|
1
16
|
0.10.1 (09/20/2019)
|
2
17
|
-------------------
|
3
18
|
|
@@ -33,7 +33,8 @@ module SimplyGenius
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def summarize(data)
|
36
|
-
|
36
|
+
# Looking for +/-/~ at start within 2 spaces, could also look for lines that end with {
|
37
|
+
lines = data.lines.select {|l| l =~ /^[\e\[\dm]*\s{0,2}[~+\-<]/ }.collect(&:chomp)
|
37
38
|
lines = lines.reject {|l| l =~ /-----/ }
|
38
39
|
"Plan Summary:\n#{lines.join("\n")}"
|
39
40
|
end
|
@@ -61,6 +61,12 @@ module SimplyGenius
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
+
# TF 0.12 deprecates values for undeclared vars in an tfvars file, so
|
65
|
+
# put it in env instead as they claim that to be the expected way to do
|
66
|
+
# so and will continue to work
|
67
|
+
# https://github.com/hashicorp/terraform/issues/19424
|
68
|
+
env = env.merge(atmos_env)
|
69
|
+
|
64
70
|
# lets tempfiles created by subprocesses be easily found by users
|
65
71
|
env['TMPDIR'] = Atmos.config.tmp_dir
|
66
72
|
|
@@ -139,7 +145,6 @@ module SimplyGenius
|
|
139
145
|
clean_links
|
140
146
|
link_support_dirs
|
141
147
|
link_recipes
|
142
|
-
write_atmos_vars
|
143
148
|
setup_backend(skip_backend)
|
144
149
|
end
|
145
150
|
|
@@ -209,25 +214,6 @@ module SimplyGenius
|
|
209
214
|
end
|
210
215
|
end
|
211
216
|
|
212
|
-
def write_atmos_vars
|
213
|
-
File.open(File.join(tf_recipes_dir, 'atmos.auto.tfvars.json'), 'w') do |f|
|
214
|
-
# A mapping in the auto vars file is ignored if a variable declaration doesn't exist for it in a tf file. Thus,
|
215
|
-
# as a convenience to allow everything from atmos to be referenceable, we put everything from the atmos_config
|
216
|
-
# in a homogenized hash named atmos_config which is declared by the atmos scaffolding. For variables which are
|
217
|
-
# declared, we also merge in atmos config with only the values homogenized (vs the entire map) so that hash
|
218
|
-
# variables if declared in terraform can be managed from yml, set here and accessed from terraform
|
219
|
-
#
|
220
|
-
homogenized_config = homogenize_for_terraform(Atmos.config.to_h)
|
221
|
-
var_hash = {
|
222
|
-
all_env_names: Atmos.config.all_env_names,
|
223
|
-
account_ids: Atmos.config.account_hash,
|
224
|
-
atmos_config: homogenized_config
|
225
|
-
}
|
226
|
-
var_hash = var_hash.merge(Atmos.config.to_h)
|
227
|
-
f.puts(JSON.pretty_generate(var_hash))
|
228
|
-
end
|
229
|
-
end
|
230
|
-
|
231
217
|
def secrets_env
|
232
218
|
# NOTE use an auto-deleting temp file if passing secrets through env ends
|
233
219
|
# up being problematic
|
@@ -240,6 +226,41 @@ module SimplyGenius
|
|
240
226
|
end
|
241
227
|
end
|
242
228
|
|
229
|
+
def atmos_env
|
230
|
+
# A var value in the env is ignored if a variable declaration doesn't exist for it in a tf file. Thus,
|
231
|
+
# as a convenience to allow everything from atmos to be referenceable, we put everything from the atmos_config
|
232
|
+
# in a homogenized hash named atmos_config which is declared by the atmos scaffolding. For variables which are
|
233
|
+
# declared, we also merge in atmos config with only the values homogenized (vs the entire map) so that hash
|
234
|
+
# variables if declared in terraform can be managed from yml, set here and accessed from terraform
|
235
|
+
#
|
236
|
+
homogenized_config = homogenize_for_terraform(Atmos.config.to_h)
|
237
|
+
var_hash = {
|
238
|
+
all_env_names: Atmos.config.all_env_names,
|
239
|
+
account_ids: Atmos.config.account_hash,
|
240
|
+
atmos_config: homogenized_config
|
241
|
+
}
|
242
|
+
var_hash = var_hash.merge(Atmos.config.to_h)
|
243
|
+
env_hash = Hash[var_hash.collect do |k, v|
|
244
|
+
encoded_val = case v
|
245
|
+
when Numeric, String, TrueClass, FalseClass
|
246
|
+
v.to_s
|
247
|
+
else
|
248
|
+
JSON.generate(v)
|
249
|
+
end
|
250
|
+
["TF_VAR_#{k}", encoded_val]
|
251
|
+
end]
|
252
|
+
|
253
|
+
# write out a file so users have some visibility into vars passed in -
|
254
|
+
# mostly useful for debugging
|
255
|
+
File.open(File.join(tf_recipes_dir, 'atmos-tfvars.env'), 'w') do |f|
|
256
|
+
env_hash.each do |k, v|
|
257
|
+
f.puts("#{k}='#{v}'")
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
return env_hash
|
262
|
+
end
|
263
|
+
|
243
264
|
def clean_links
|
244
265
|
Find.find(Atmos.config.tf_working_dir) do |f|
|
245
266
|
Find.prune if f =~ /\/.terraform\/modules\//
|
@@ -35,14 +35,14 @@ global_name_prefix: "#{org}-#{atmos_env}-"
|
|
35
35
|
# The local name prefix for disambiguating resource names that have a local
|
36
36
|
# scope (e.g. when running multiple environments in the same account)
|
37
37
|
#
|
38
|
-
local_name_prefix:
|
38
|
+
local_name_prefix: ''
|
39
39
|
|
40
40
|
# The prefix used for the resources global to the organization. Setting this
|
41
41
|
# to something like "#{org}-" will allow you to manage multiple orgs from the same
|
42
42
|
# ops account without name conflicts.
|
43
43
|
# Most people should leave this blank.
|
44
44
|
#
|
45
|
-
org_prefix:
|
45
|
+
org_prefix: ''
|
46
46
|
|
47
47
|
# Environment specific overrides. When adding new environments place them
|
48
48
|
# after the existing ones so that you don't end up with permission issues when
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplygenius-atmos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Conway
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|