simplygenius-atmos 0.8.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/lib/simplygenius/atmos/cli.rb +5 -1
- data/lib/simplygenius/atmos/commands/apply.rb +1 -1
- data/lib/simplygenius/atmos/commands/bootstrap.rb +5 -2
- data/lib/simplygenius/atmos/commands/generate.rb +2 -2
- data/lib/simplygenius/atmos/commands/init.rb +15 -0
- data/lib/simplygenius/atmos/commands/plan.rb +1 -1
- data/lib/simplygenius/atmos/commands/terraform.rb +1 -13
- data/lib/simplygenius/atmos/config.rb +28 -15
- data/lib/simplygenius/atmos/ipc_actions/notify.rb +1 -1
- data/lib/simplygenius/atmos/otp.rb +1 -1
- data/lib/simplygenius/atmos/terraform_executor.rb +10 -30
- data/lib/simplygenius/atmos/ui.rb +4 -4
- data/lib/simplygenius/atmos/version.rb +1 -1
- data/templates/new/config/atmos/environments/dev.yml +8 -0
- data/templates/new/config/atmos/runtime.yml +68 -46
- data/templates/new/config/atmos.yml +32 -30
- metadata +95 -94
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10ee93da3ad938995a76994c9652134b9761f7dd79dbb848667655b36c666c37
|
4
|
+
data.tar.gz: 3a6cfa01bf2693dd9ffb3b8b95ff9c9a8a989eb1bc954a385b5b58603da671da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 778183427db0fcc75a8dd2a9365ad7a12824d7d1271333044896d130b58d371ae824c97e888fc2f125e0946beccd1d2bdc6f830238383321511b5a73774bd594
|
7
|
+
data.tar.gz: bb37c2acdac734795af2c6c1b7182fc97d07d46e74181b0d4257618b1e1b1318a054e5acbf53214cd7e971702d423d16e62674780f7772316ee1a3b1465f9422
|
data/README.md
CHANGED
@@ -165,8 +165,8 @@ atmos -e dev destroy
|
|
165
165
|
|
166
166
|
# Destroys the bootstrap resources (state, secret, lock storage and
|
167
167
|
# cross-account access role)
|
168
|
-
TF_VAR_force_destroy_buckets=true atmos -e dev
|
169
|
-
atmos -e dev
|
168
|
+
TF_VAR_force_destroy_buckets=true atmos -e dev -g bootstrap apply
|
169
|
+
atmos -e dev -g bootstrap destroy
|
170
170
|
|
171
171
|
# For normal usage you should rarely need to cleanup the ops account, but
|
172
172
|
# included here in case you want to completely purge the atmos resources after
|
@@ -177,8 +177,8 @@ AWS_PROFILE=<root_profile_name> TF_VAR_force_destroy_buckets=true atmos -e ops a
|
|
177
177
|
AWS_PROFILE=<root_profile_name> atmos -e ops destroy
|
178
178
|
|
179
179
|
# Cleanup ops bootstrap
|
180
|
-
AWS_PROFILE=<root_profile_name> TF_VAR_force_destroy_buckets=true atmos -e ops
|
181
|
-
AWS_PROFILE=<root_profile_name> atmos -e ops
|
180
|
+
AWS_PROFILE=<root_profile_name> TF_VAR_force_destroy_buckets=true atmos -e ops -g bootstrap apply
|
181
|
+
AWS_PROFILE=<root_profile_name> atmos -e ops -g bootstrap destroy
|
182
182
|
|
183
183
|
```
|
184
184
|
|
@@ -40,6 +40,10 @@ module SimplyGenius
|
|
40
40
|
'ENV', "The atmos environment\n",
|
41
41
|
environment_variable: 'ATMOS_ENV', default: 'ops'
|
42
42
|
|
43
|
+
option ["-g", "--atmos-group"],
|
44
|
+
'GROUP', "The atmos working group\n for selecting recipe groups\n",
|
45
|
+
default: 'default'
|
46
|
+
|
43
47
|
option ["-l", "--load-path"],
|
44
48
|
"PATH", "adds additional paths to ruby load path",
|
45
49
|
multivalued: true
|
@@ -99,7 +103,7 @@ module SimplyGenius
|
|
99
103
|
def parse(arguments)
|
100
104
|
super
|
101
105
|
if Atmos.config.nil?
|
102
|
-
Atmos.config = Config.new(atmos_env)
|
106
|
+
Atmos.config = Config.new(atmos_env, atmos_group)
|
103
107
|
log = Atmos.config.is_atmos_repo? && log? ? "atmos.log" : nil
|
104
108
|
Logging.setup_logging(debug?, color?, log)
|
105
109
|
UI.color_enabled = color?
|
@@ -12,7 +12,7 @@ module SimplyGenius
|
|
12
12
|
|
13
13
|
def execute
|
14
14
|
args = ["apply"]
|
15
|
-
args << "--get-modules" unless Atmos.config["disable_auto_modules"].to_s == "true"
|
15
|
+
args << "--get-modules" unless Atmos.config["atmos.terraform.disable_auto_modules"].to_s == "true"
|
16
16
|
@terraform_arguments.insert(0, *args)
|
17
17
|
super
|
18
18
|
end
|
@@ -14,8 +14,10 @@ module SimplyGenius
|
|
14
14
|
:flag, "forces bootstrap\n"
|
15
15
|
|
16
16
|
def execute
|
17
|
+
orig_config = Atmos.config
|
18
|
+
Atmos.config = Config.new(Atmos.config.atmos_env, 'bootstrap')
|
17
19
|
|
18
|
-
tf_init_dir = File.join(Atmos.config.tf_working_dir
|
20
|
+
tf_init_dir = File.join(Atmos.config.tf_working_dir, '.terraform')
|
19
21
|
tf_initialized = File.exist?(tf_init_dir)
|
20
22
|
backend_initialized = File.exist?(File.join(tf_init_dir, 'terraform.tfstate'))
|
21
23
|
|
@@ -30,7 +32,7 @@ module SimplyGenius
|
|
30
32
|
|
31
33
|
Atmos.config.provider.auth_manager.authenticate(ENV, bootstrap: true) do |auth_env|
|
32
34
|
begin
|
33
|
-
exe = TerraformExecutor.new(process_env: auth_env
|
35
|
+
exe = TerraformExecutor.new(process_env: auth_env)
|
34
36
|
|
35
37
|
skip_backend = true
|
36
38
|
skip_secrets = true
|
@@ -59,6 +61,7 @@ module SimplyGenius
|
|
59
61
|
|
60
62
|
# Might as well init the non-bootstrap case as well once the state
|
61
63
|
# storage has been setup in bootstrap
|
64
|
+
Atmos.config = orig_config
|
62
65
|
exe = TerraformExecutor.new(process_env: auth_env)
|
63
66
|
exe.run("init", "-input=false", skip_secrets: true)
|
64
67
|
|
@@ -57,7 +57,7 @@ module SimplyGenius
|
|
57
57
|
|
58
58
|
# don't want to fail for new repo
|
59
59
|
if Atmos.config && Atmos.config.is_atmos_repo?
|
60
|
-
Atmos.config['template_sources'].try(:each) do |item|
|
60
|
+
Atmos.config['atmos.template_sources'].try(:each) do |item|
|
61
61
|
SourcePath.register(item.name, item.location)
|
62
62
|
end
|
63
63
|
end
|
@@ -141,7 +141,7 @@ module SimplyGenius
|
|
141
141
|
end
|
142
142
|
|
143
143
|
def state_file
|
144
|
-
@state_file ||= Atmos.config["generate.state_file"]
|
144
|
+
@state_file ||= Atmos.config["atmos.generate.state_file"]
|
145
145
|
end
|
146
146
|
|
147
147
|
def state
|
@@ -1,10 +1,13 @@
|
|
1
1
|
require_relative 'terraform'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'os'
|
2
4
|
|
3
5
|
module SimplyGenius
|
4
6
|
module Atmos
|
5
7
|
module Commands
|
6
8
|
|
7
9
|
class Init < Terraform
|
10
|
+
include FileUtils
|
8
11
|
|
9
12
|
def self.description
|
10
13
|
"Runs terraform init"
|
@@ -13,6 +16,18 @@ module SimplyGenius
|
|
13
16
|
def execute
|
14
17
|
@terraform_arguments.insert(0, "init")
|
15
18
|
super
|
19
|
+
|
20
|
+
if ! Atmos.config["atmos.terraform.disable_shared_plugins"]
|
21
|
+
home_dir = OS.windows? ? File.join("~", "Application Data") : "~"
|
22
|
+
shared_plugins_dir = File.expand_path(File.join(home_dir,".terraform.d", "plugins"))
|
23
|
+
logger.debug("Updating shared terraform plugins dir: #{shared_plugins_dir}")
|
24
|
+
mkdir_p(shared_plugins_dir)
|
25
|
+
terraform_plugins_dir = File.join(Atmos.config.tf_working_dir,'recipes', '.terraform', 'plugins')
|
26
|
+
if File.exist?(terraform_plugins_dir)
|
27
|
+
cp_r("#{terraform_plugins_dir}/.", shared_plugins_dir)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
16
31
|
end
|
17
32
|
|
18
33
|
end
|
@@ -12,7 +12,7 @@ module SimplyGenius
|
|
12
12
|
|
13
13
|
def execute
|
14
14
|
args = ["plan"]
|
15
|
-
args << "--get-modules" unless Atmos.config["disable_auto_modules"].to_s == "true"
|
15
|
+
args << "--get-modules" unless Atmos.config["atmos.terraform.disable_auto_modules"].to_s == "true"
|
16
16
|
@terraform_arguments.insert(0, *args)
|
17
17
|
super
|
18
18
|
end
|
@@ -28,19 +28,7 @@ module SimplyGenius
|
|
28
28
|
|
29
29
|
Atmos.config.provider.auth_manager.authenticate(ENV) do |auth_env|
|
30
30
|
begin
|
31
|
-
|
32
|
-
# TODO: hack to allow apply/etc for bootstrap group
|
33
|
-
# Fix this once we allow more extensive recipe grouping
|
34
|
-
working_group = 'default'
|
35
|
-
@terraform_arguments.each_with_index do |a, i|
|
36
|
-
if a == "--group"
|
37
|
-
@terraform_arguments.delete_at(i)
|
38
|
-
working_group = @terraform_arguments.delete_at(i)
|
39
|
-
break
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
exe = TerraformExecutor.new(process_env: auth_env, working_group: working_group)
|
31
|
+
exe = TerraformExecutor.new(process_env: auth_env)
|
44
32
|
get_modules = @terraform_arguments.delete("--get-modules")
|
45
33
|
exe.run(*@terraform_arguments, get_modules: get_modules.present?)
|
46
34
|
rescue TerraformExecutor::ProcessFailed => e
|
@@ -13,12 +13,14 @@ module SimplyGenius
|
|
13
13
|
include GemLogger::LoggerSupport
|
14
14
|
include FileUtils
|
15
15
|
|
16
|
-
attr_accessor :atmos_env, :
|
16
|
+
attr_accessor :atmos_env, :working_group,
|
17
|
+
:root_dir,
|
17
18
|
:config_file,
|
18
19
|
:tmp_root
|
19
20
|
|
20
|
-
def initialize(atmos_env)
|
21
|
+
def initialize(atmos_env, working_group = 'default')
|
21
22
|
@atmos_env = atmos_env
|
23
|
+
@working_group = working_group
|
22
24
|
@root_dir = File.expand_path(Dir.pwd)
|
23
25
|
@config_file = File.join(root_dir, "config", "atmos.yml")
|
24
26
|
@tmp_root = File.join(root_dir, "tmp")
|
@@ -45,7 +47,7 @@ module SimplyGenius
|
|
45
47
|
end
|
46
48
|
|
47
49
|
def plugin_manager
|
48
|
-
@plugin_manager ||= PluginManager.new(self[
|
50
|
+
@plugin_manager ||= PluginManager.new(self["atmos.plugins"])
|
49
51
|
end
|
50
52
|
|
51
53
|
def all_env_names
|
@@ -80,10 +82,9 @@ module SimplyGenius
|
|
80
82
|
end
|
81
83
|
end
|
82
84
|
|
83
|
-
def tf_working_dir
|
84
|
-
@tf_working_dir ||=
|
85
|
-
|
86
|
-
dir = File.join(tmp_dir, 'tf', group)
|
85
|
+
def tf_working_dir
|
86
|
+
@tf_working_dir ||= begin
|
87
|
+
dir = File.join(tmp_dir, 'tf', working_group)
|
87
88
|
logger.debug("Terraform working dir: #{dir}")
|
88
89
|
mkdir_p(dir)
|
89
90
|
dir
|
@@ -91,7 +92,7 @@ module SimplyGenius
|
|
91
92
|
end
|
92
93
|
|
93
94
|
def add_user_load_path(*paths)
|
94
|
-
load_path = paths + Array(self[
|
95
|
+
load_path = paths + Array(self["atmos.load_path"])
|
95
96
|
if load_path.present?
|
96
97
|
load_path = load_path.collect { |path| File.expand_path(path) }
|
97
98
|
logger.debug("Adding to load path: #{load_path.inspect}")
|
@@ -156,9 +157,14 @@ module SimplyGenius
|
|
156
157
|
|
157
158
|
Dir[pattern].each do |f|
|
158
159
|
logger.debug("Loading atmos config file: #{f}")
|
159
|
-
|
160
|
-
|
161
|
-
|
160
|
+
data = YAML.load_file(f)
|
161
|
+
if data == false
|
162
|
+
logger.debug("Skipping empty config file: #{f}")
|
163
|
+
else
|
164
|
+
h = SettingsHash.new(data)
|
165
|
+
config = config_merge(config, h)
|
166
|
+
@included_configs << f
|
167
|
+
end
|
162
168
|
end
|
163
169
|
end
|
164
170
|
|
@@ -170,9 +176,14 @@ module SimplyGenius
|
|
170
176
|
submap_file = File.join(submap_dir, "#{name}.yml")
|
171
177
|
if File.exist?(submap_file)
|
172
178
|
logger.debug("Loading atmos #{group} config file: #{submap_file}")
|
173
|
-
|
174
|
-
|
175
|
-
|
179
|
+
data = YAML.load_file(submap_file)
|
180
|
+
if data == false
|
181
|
+
logger.debug("Skipping empty config file: #{submap_file}")
|
182
|
+
else
|
183
|
+
h = SettingsHash.new({group => {name => data}})
|
184
|
+
config = config_merge(config, h)
|
185
|
+
@included_configs << submap_file
|
186
|
+
end
|
176
187
|
end
|
177
188
|
|
178
189
|
begin
|
@@ -199,7 +210,7 @@ module SimplyGenius
|
|
199
210
|
@included_configs << config_file
|
200
211
|
end
|
201
212
|
|
202
|
-
@full_config = load_config_sources(File.dirname(config_file), @full_config, *Array(@full_config
|
213
|
+
@full_config = load_config_sources(File.dirname(config_file), @full_config, *Array(@full_config.notation_get("atmos.config_sources")))
|
203
214
|
|
204
215
|
@full_config['provider'] = provider_name = @full_config['provider'] || 'aws'
|
205
216
|
|
@@ -209,6 +220,7 @@ module SimplyGenius
|
|
209
220
|
global = SettingsHash.new(@full_config.reject {|k, v| ['providers', 'environments'].include?(k) })
|
210
221
|
conf = config_merge(global, {
|
211
222
|
atmos_env: atmos_env,
|
223
|
+
atmos_working_group: working_group,
|
212
224
|
atmos_version: VERSION
|
213
225
|
})
|
214
226
|
expand(conf, conf)
|
@@ -273,6 +285,7 @@ module SimplyGenius
|
|
273
285
|
|
274
286
|
return filename, line
|
275
287
|
end
|
288
|
+
|
276
289
|
end
|
277
290
|
|
278
291
|
end
|
@@ -10,7 +10,7 @@ module SimplyGenius
|
|
10
10
|
include GemLogger::LoggerSupport
|
11
11
|
|
12
12
|
def initialize
|
13
|
-
@secret_file = Atmos.config["otp.secret_file"] || "~/.atmos.yml"
|
13
|
+
@secret_file = Atmos.config["atmos.otp.secret_file"] || "~/.atmos.yml"
|
14
14
|
@secret_file = File.expand_path(@secret_file)
|
15
15
|
yml_hash = YAML.load_file(@secret_file) rescue Hash.new
|
16
16
|
@secret_store = SettingsHash.new(yml_hash)
|
@@ -16,11 +16,9 @@ module SimplyGenius
|
|
16
16
|
|
17
17
|
class ProcessFailed < RuntimeError; end
|
18
18
|
|
19
|
-
def initialize(process_env: ENV
|
19
|
+
def initialize(process_env: ENV)
|
20
20
|
@process_env = process_env
|
21
|
-
@
|
22
|
-
@working_dir = Atmos.config.tf_working_dir(@working_group)
|
23
|
-
@recipes = Atmos.config["recipes.#{@working_group}"]
|
21
|
+
@recipes = Atmos.config["recipes.#{Atmos.config.working_group}"]
|
24
22
|
end
|
25
23
|
|
26
24
|
def run(*terraform_args, skip_backend: false, skip_secrets: false, get_modules: false, output_io: nil)
|
@@ -70,15 +68,15 @@ module SimplyGenius
|
|
70
68
|
|
71
69
|
stdout_writer.sync = stderr_writer.sync = true
|
72
70
|
|
73
|
-
stdout_filters = Atmos.config.plugin_manager.output_filters(:stdout, {process_env: @process_env, working_group:
|
74
|
-
stderr_filters = Atmos.config.plugin_manager.output_filters(:stderr, {process_env: @process_env, working_group:
|
71
|
+
stdout_filters = Atmos.config.plugin_manager.output_filters(:stdout, {process_env: @process_env, working_group: Atmos.config.working_group})
|
72
|
+
stderr_filters = Atmos.config.plugin_manager.output_filters(:stderr, {process_env: @process_env, working_group: Atmos.config.working_group})
|
75
73
|
|
76
74
|
stdout_thr = pipe_stream(stdout, output_io.nil? ? $stdout : output_io, &stdout_filters.filter_block)
|
77
75
|
stderr_thr = pipe_stream(stderr, output_io.nil? ? $stderr : output_io, &stderr_filters.filter_block)
|
78
76
|
|
79
77
|
ipc.listen do |sock_path|
|
80
78
|
|
81
|
-
if Atmos.config['ipc.disable']
|
79
|
+
if Atmos.config['atmos.ipc.disable']
|
82
80
|
# Using : as the command makes execution of ipc from the
|
83
81
|
# terraform side a no-op in both cases of how we call it. This
|
84
82
|
# way, terraform execution continues to work when IPC is disabled
|
@@ -135,7 +133,6 @@ module SimplyGenius
|
|
135
133
|
|
136
134
|
def setup_working_dir(skip_backend: false)
|
137
135
|
clean_links
|
138
|
-
link_shared_plugin_dir
|
139
136
|
link_support_dirs
|
140
137
|
link_recipes
|
141
138
|
write_atmos_vars
|
@@ -149,11 +146,6 @@ module SimplyGenius
|
|
149
146
|
if backend_config.present? && ! skip_backend
|
150
147
|
logger.debug("Writing out terraform state backend config")
|
151
148
|
|
152
|
-
# Use a different state file per group
|
153
|
-
if @working_group
|
154
|
-
backend_config['key'] = "#{@working_group}-#{backend_config['key']}"
|
155
|
-
end
|
156
|
-
|
157
149
|
backend_type = backend_config.delete("type")
|
158
150
|
|
159
151
|
backend = {
|
@@ -206,7 +198,7 @@ module SimplyGenius
|
|
206
198
|
|
207
199
|
def tf_recipes_dir
|
208
200
|
@tf_recipes_dir ||= begin
|
209
|
-
dir = File.join(
|
201
|
+
dir = File.join(Atmos.config.tf_working_dir, 'recipes')
|
210
202
|
logger.debug("Tf recipes dir: #{dir}")
|
211
203
|
mkdir_p(dir)
|
212
204
|
dir
|
@@ -221,12 +213,11 @@ module SimplyGenius
|
|
221
213
|
# declared, we also merge in atmos config with only the values homogenized (vs the entire map) so that hash
|
222
214
|
# variables if declared in terraform can be managed from yml, set here and accessed from terraform
|
223
215
|
#
|
224
|
-
|
216
|
+
homogenized_config = homogenize_for_terraform(Atmos.config.to_h)
|
225
217
|
var_hash = {
|
226
|
-
atmos_env: Atmos.config.atmos_env,
|
227
218
|
all_env_names: Atmos.config.all_env_names,
|
228
219
|
account_ids: Atmos.config.account_hash,
|
229
|
-
atmos_config:
|
220
|
+
atmos_config: homogenized_config
|
230
221
|
}
|
231
222
|
var_hash = var_hash.merge(Atmos.config.to_h)
|
232
223
|
f.puts(JSON.pretty_generate(var_hash))
|
@@ -246,7 +237,7 @@ module SimplyGenius
|
|
246
237
|
end
|
247
238
|
|
248
239
|
def clean_links
|
249
|
-
Find.find(
|
240
|
+
Find.find(Atmos.config.tf_working_dir) do |f|
|
250
241
|
Find.prune if f =~ /\/.terraform\/modules\//
|
251
242
|
File.delete(f) if File.symlink?(f)
|
252
243
|
end
|
@@ -254,18 +245,7 @@ module SimplyGenius
|
|
254
245
|
|
255
246
|
def link_support_dirs
|
256
247
|
['modules', 'templates'].each do |subdir|
|
257
|
-
ln_sf(File.join(Atmos.config.root_dir, subdir),
|
258
|
-
end
|
259
|
-
end
|
260
|
-
|
261
|
-
def link_shared_plugin_dir
|
262
|
-
if ! Atmos.config["terraform.disable_shared_plugins"]
|
263
|
-
shared_plugins_dir = File.join(Atmos.config.tmp_root, "terraform_plugins")
|
264
|
-
mkdir_p(shared_plugins_dir)
|
265
|
-
terraform_state_dir = File.join(tf_recipes_dir, '.terraform')
|
266
|
-
mkdir_p(terraform_state_dir)
|
267
|
-
terraform_plugins_dir = File.join(terraform_state_dir, 'plugins')
|
268
|
-
ln_sf(shared_plugins_dir, terraform_plugins_dir)
|
248
|
+
ln_sf(File.join(Atmos.config.root_dir, subdir), Atmos.config.tf_working_dir)
|
269
249
|
end
|
270
250
|
end
|
271
251
|
|
@@ -99,13 +99,13 @@ module SimplyGenius
|
|
99
99
|
message = message.to_s
|
100
100
|
title = title.present? ? title.to_s : "Atmos Notification"
|
101
101
|
modal = ["true", "1"].include?(modal.to_s)
|
102
|
-
modal = false if Atmos.config["ui.notify.disable_modal"]
|
102
|
+
modal = false if Atmos.config["atmos.ui.notify.disable_modal"]
|
103
103
|
|
104
|
-
return result if Atmos.config["ui.notify.disable"].to_s == "true"
|
104
|
+
return result if Atmos.config["atmos.ui.notify.disable"].to_s == "true"
|
105
105
|
|
106
|
-
force_inline = opts[:inline].to_s == "true" || Atmos.config["ui.notify.force_inline"].to_s == "true"
|
106
|
+
force_inline = opts[:inline].to_s == "true" || Atmos.config["atmos.ui.notify.force_inline"].to_s == "true"
|
107
107
|
|
108
|
-
command = Atmos.config["ui.notify.command"]
|
108
|
+
command = Atmos.config["atmos.ui.notify.command"]
|
109
109
|
|
110
110
|
if command.present? && ! force_inline
|
111
111
|
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# Environment specific overrides for the dev environment
|
2
|
+
#
|
3
|
+
# You can add overrides for other environments by creating a <env>.yml file in
|
4
|
+
# this directory where <env> is the environment name.
|
5
|
+
#
|
6
|
+
# Overrides in this file should NOT be scoped under a "environments ->
|
7
|
+
# <env>" hash like they need to be in atmos.yml
|
8
|
+
#
|
@@ -1,52 +1,74 @@
|
|
1
|
-
#
|
1
|
+
# Configuration for controlling the behavior of the atmos runtime
|
2
|
+
atmos:
|
2
3
|
|
3
|
-
#
|
4
|
-
|
4
|
+
# Sources for atmos templates
|
5
|
+
# To circumvent the version lock and get the latest git master recipes, use the git
|
6
|
+
# location, e.g.:
|
7
|
+
# location: https://github.com/simplygenius/atmos-recipes.git
|
8
|
+
#
|
9
|
+
template_sources:
|
10
|
+
- name: atmos-recipes
|
11
|
+
location: https://github.com/simplygenius/atmos-recipes/archive/v#{atmos_version}.zip#atmos-recipes-#{atmos_version}
|
12
|
+
#- name: atmos-pro-recipes
|
13
|
+
# location: https://YOUR_API_KEY@releases.simplygenius.com/recipes/v#{atmos_version}#atmos-pro-recipes-#{atmos_version}
|
5
14
|
|
6
|
-
#
|
7
|
-
|
15
|
+
# To get the atmos-pro gem, add the gem source like:
|
16
|
+
# gem sources -a https://YOUR_API_KEY@releases.simplygenius.com/gems/
|
17
|
+
# then install the gem:
|
18
|
+
# gem install simplygenius-atmos-pro
|
19
|
+
# then add simplygenius-atmos-pro to the plugins key below
|
20
|
+
#
|
21
|
+
# The list of plugin gems to load when running atmos
|
22
|
+
#
|
23
|
+
plugins:
|
24
|
+
# - simplygenius-atmos-pro
|
8
25
|
|
9
|
-
# Allows one to add a custom ruby load path list for extending atmos without
|
10
|
-
# having to publish a gem
|
11
|
-
load_path:
|
26
|
+
# Allows one to add a custom ruby load path list for extending atmos without
|
27
|
+
# having to publish a gem
|
28
|
+
load_path:
|
12
29
|
|
13
|
-
# Configure the mechanism that allows terraform to callback into atmos
|
14
|
-
ipc:
|
15
|
-
|
16
|
-
disable: false
|
17
|
-
# Configures the notify IP callback
|
18
|
-
notify:
|
19
|
-
# Disable notify callbacks
|
30
|
+
# Configure the mechanism that allows terraform to callback into atmos
|
31
|
+
ipc:
|
32
|
+
# Disables all IPC callbacks into atmos from terraform
|
20
33
|
disable: false
|
34
|
+
# Configures the notify IP callback
|
35
|
+
notify:
|
36
|
+
# Disable notify callbacks
|
37
|
+
disable: false
|
21
38
|
|
22
|
-
# Configure the integrated otp mechanism
|
23
|
-
otp:
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
# Configure the template generator
|
28
|
-
generate:
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
# Configure the UI components
|
33
|
-
ui:
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
# Configure terraform execution details
|
48
|
-
terraform:
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
39
|
+
# Configure the integrated otp mechanism
|
40
|
+
otp:
|
41
|
+
# The file where otp secrets are stored
|
42
|
+
secret_file: ~/.atmos.yml
|
43
|
+
|
44
|
+
# Configure the template generator
|
45
|
+
generate:
|
46
|
+
# The file storing the record of each generated template
|
47
|
+
state_file: .atmos-templates.yml
|
48
|
+
|
49
|
+
# Configure the UI components
|
50
|
+
ui:
|
51
|
+
# Configures UI notifications
|
52
|
+
notify:
|
53
|
+
# Disable notifications
|
54
|
+
disable: false
|
55
|
+
# Force notifications to never be modal
|
56
|
+
disable_modal: false
|
57
|
+
# Set a custom command for notifications, embedded {{title|message|modal}}
|
58
|
+
# will be replaced with the value passed from terraform
|
59
|
+
command:
|
60
|
+
# Force notifications inline in atmos' stdout output rather than launching
|
61
|
+
# a GUI notification
|
62
|
+
force_inline: false
|
63
|
+
|
64
|
+
# Configure terraform execution details
|
65
|
+
terraform:
|
66
|
+
# Disable module fetch from convenience plan/apply commands
|
67
|
+
disable_auto_modules: false
|
68
|
+
# By default (value=false), `atmos init` will update the terraform user
|
69
|
+
# plugin directory (~/.terraform.d/plugins) with the plugins for the current
|
70
|
+
# env/group so that they can be reused across all env/group combinations.
|
71
|
+
# Otherwise, disabling this functionality (value=true) means that each
|
72
|
+
# env/group combination will be independent and download all plugins for
|
73
|
+
# itself only
|
74
|
+
disable_shared_plugins: false
|
@@ -1,3 +1,24 @@
|
|
1
|
+
# The atmos configuration system merges together all the yml files into one
|
2
|
+
# giant hash, starting with this atmos.yml, then adding in all the files
|
3
|
+
# matching the patterns in atmos.config_sources
|
4
|
+
#
|
5
|
+
# Hashes and arrays are merged in an additive fashion, and scalars are replaced
|
6
|
+
# based on the merge order (last wins). e.g.
|
7
|
+
# "foo: {bar: 1}, hum: [1]" + "foo: {baz: 2}, hum: [2]" => "foo: {bar: 1, baz: 2}, , hum: [1, 2]"
|
8
|
+
# You can force an override (vs merge) of a hash or array by prefixing the key
|
9
|
+
# with a caret (^)
|
10
|
+
# "foo: {bar: 1}" + "^foo: {baz: 2}" => "foo: {baz: 2}"
|
11
|
+
#
|
12
|
+
# Providers and environment overrides get merged in on top of the hash based on
|
13
|
+
# the selected provider (aws) and environment (ops/dev/prod/etc).
|
14
|
+
# The providers and environments key/hash are excluded from the final merged
|
15
|
+
# configuration hash
|
16
|
+
#
|
17
|
+
# The merged configuration hash is provided to terraform at execution time via a
|
18
|
+
# generated tfvars.json To access those variables you still need to declare the
|
19
|
+
# variables you use with a terraform variable declaration in a tf file
|
20
|
+
#
|
21
|
+
|
1
22
|
# The short name of your organization
|
2
23
|
#
|
3
24
|
org:
|
@@ -29,33 +50,14 @@ environments:
|
|
29
50
|
# running in a development environment, for example:
|
30
51
|
# {is_dev ? 'dev val' : 'prod val'}
|
31
52
|
#
|
32
|
-
is_dev: "#{ /dev|test|demo/.match
|
33
|
-
|
34
|
-
#
|
35
|
-
#
|
36
|
-
|
37
|
-
#
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
# location, e.g.:
|
44
|
-
# location: https://github.com/simplygenius/atmos-recipes.git
|
45
|
-
#
|
46
|
-
template_sources:
|
47
|
-
- name: atmos-recipes
|
48
|
-
location: https://github.com/simplygenius/atmos-recipes/archive/v#{atmos_version}.zip#atmos-recipes-#{atmos_version}
|
49
|
-
#- name: atmos-pro-recipes
|
50
|
-
# location: https://YOUR_API_KEY@releases.simplygenius.com/recipes/v#{atmos_version}#atmos-pro-recipes-#{atmos_version}
|
51
|
-
|
52
|
-
# To get the atmos-pro gem, add the gem source like:
|
53
|
-
# gem sources -a https://YOUR_API_KEY@releases.simplygenius.com/gems/
|
54
|
-
# then install the gem:
|
55
|
-
# gem install simplygenius-atmos-pro
|
56
|
-
# then add simplygenius-atmos-pro to the plugins key below
|
57
|
-
#
|
58
|
-
# The list of plugin gems to load when running atmos
|
59
|
-
#
|
60
|
-
plugins:
|
61
|
-
# - simplygenius-atmos-pro
|
53
|
+
is_dev: "#{ !! /dev|test|demo/.match(atmos_env) }"
|
54
|
+
|
55
|
+
# Configuration required in this file for finding other atmos config. See
|
56
|
+
# config/atmos/runtime.yml for atmos runtime configuration settings
|
57
|
+
atmos:
|
58
|
+
# A list of glob patterns for finding atmos yml files
|
59
|
+
# Patterns can be absolute (beginning with /), but if not are applied relative
|
60
|
+
# to the directory containing atmos.yml
|
61
|
+
#
|
62
|
+
config_sources:
|
63
|
+
- atmos/*.y{,a}ml
|
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.9.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: 2018-
|
11
|
+
date: 2018-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -126,324 +126,324 @@ dependencies:
|
|
126
126
|
name: pry
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 0.11.3
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - "
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: 0.11.3
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: pry-byebug
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - "
|
143
|
+
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
145
|
+
version: 3.6.0
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - "
|
150
|
+
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
152
|
+
version: 3.6.0
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: activesupport
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - "
|
157
|
+
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
159
|
+
version: 5.2.1
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - "
|
164
|
+
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
166
|
+
version: 5.2.1
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: gem_logger
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- - "
|
171
|
+
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
173
|
+
version: 0.3.0
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- - "
|
178
|
+
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
180
|
+
version: 0.3.0
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: logging
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- - "
|
185
|
+
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
187
|
+
version: 2.2.2
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- - "
|
192
|
+
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
194
|
+
version: 2.2.2
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: sigdump
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
|
-
- - "
|
199
|
+
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
201
|
+
version: 0.2.4
|
202
202
|
type: :runtime
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
|
-
- - "
|
206
|
+
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
208
|
+
version: 0.2.4
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
210
|
name: clamp
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
|
-
- - "
|
213
|
+
- - "~>"
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
215
|
+
version: 1.3.0
|
216
216
|
type: :runtime
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
|
-
- - "
|
220
|
+
- - "~>"
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
222
|
+
version: 1.3.0
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
224
|
name: thor
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
226
226
|
requirements:
|
227
|
-
- - "
|
227
|
+
- - "~>"
|
228
228
|
- !ruby/object:Gem::Version
|
229
|
-
version:
|
229
|
+
version: 0.19.4
|
230
230
|
type: :runtime
|
231
231
|
prerelease: false
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
233
|
requirements:
|
234
|
-
- - "
|
234
|
+
- - "~>"
|
235
235
|
- !ruby/object:Gem::Version
|
236
|
-
version:
|
236
|
+
version: 0.19.4
|
237
237
|
- !ruby/object:Gem::Dependency
|
238
238
|
name: highline
|
239
239
|
requirement: !ruby/object:Gem::Requirement
|
240
240
|
requirements:
|
241
|
-
- - "
|
241
|
+
- - "~>"
|
242
242
|
- !ruby/object:Gem::Version
|
243
|
-
version:
|
243
|
+
version: 2.0.0
|
244
244
|
type: :runtime
|
245
245
|
prerelease: false
|
246
246
|
version_requirements: !ruby/object:Gem::Requirement
|
247
247
|
requirements:
|
248
|
-
- - "
|
248
|
+
- - "~>"
|
249
249
|
- !ruby/object:Gem::Version
|
250
|
-
version:
|
250
|
+
version: 2.0.0
|
251
251
|
- !ruby/object:Gem::Dependency
|
252
252
|
name: rainbow
|
253
253
|
requirement: !ruby/object:Gem::Requirement
|
254
254
|
requirements:
|
255
|
-
- - "
|
255
|
+
- - "~>"
|
256
256
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
257
|
+
version: 3.0.0
|
258
258
|
type: :runtime
|
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:
|
264
|
+
version: 3.0.0
|
265
265
|
- !ruby/object:Gem::Dependency
|
266
266
|
name: git
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|
268
268
|
requirements:
|
269
|
-
- - "
|
269
|
+
- - "~>"
|
270
270
|
- !ruby/object:Gem::Version
|
271
|
-
version:
|
271
|
+
version: 1.5.0
|
272
272
|
type: :runtime
|
273
273
|
prerelease: false
|
274
274
|
version_requirements: !ruby/object:Gem::Requirement
|
275
275
|
requirements:
|
276
|
-
- - "
|
276
|
+
- - "~>"
|
277
277
|
- !ruby/object:Gem::Version
|
278
|
-
version:
|
278
|
+
version: 1.5.0
|
279
279
|
- !ruby/object:Gem::Dependency
|
280
280
|
name: rubyzip
|
281
281
|
requirement: !ruby/object:Gem::Requirement
|
282
282
|
requirements:
|
283
|
-
- - "
|
283
|
+
- - "~>"
|
284
284
|
- !ruby/object:Gem::Version
|
285
|
-
version:
|
285
|
+
version: 1.2.2
|
286
286
|
type: :runtime
|
287
287
|
prerelease: false
|
288
288
|
version_requirements: !ruby/object:Gem::Requirement
|
289
289
|
requirements:
|
290
|
-
- - "
|
290
|
+
- - "~>"
|
291
291
|
- !ruby/object:Gem::Version
|
292
|
-
version:
|
292
|
+
version: 1.2.2
|
293
293
|
- !ruby/object:Gem::Dependency
|
294
294
|
name: hashie
|
295
295
|
requirement: !ruby/object:Gem::Requirement
|
296
296
|
requirements:
|
297
|
-
- - "
|
297
|
+
- - "~>"
|
298
298
|
- !ruby/object:Gem::Version
|
299
|
-
version:
|
299
|
+
version: 3.6.0
|
300
300
|
type: :runtime
|
301
301
|
prerelease: false
|
302
302
|
version_requirements: !ruby/object:Gem::Requirement
|
303
303
|
requirements:
|
304
|
-
- - "
|
304
|
+
- - "~>"
|
305
305
|
- !ruby/object:Gem::Version
|
306
|
-
version:
|
306
|
+
version: 3.6.0
|
307
307
|
- !ruby/object:Gem::Dependency
|
308
308
|
name: climate_control
|
309
309
|
requirement: !ruby/object:Gem::Requirement
|
310
310
|
requirements:
|
311
|
-
- - "
|
311
|
+
- - "~>"
|
312
312
|
- !ruby/object:Gem::Version
|
313
|
-
version:
|
313
|
+
version: 0.2.0
|
314
314
|
type: :runtime
|
315
315
|
prerelease: false
|
316
316
|
version_requirements: !ruby/object:Gem::Requirement
|
317
317
|
requirements:
|
318
|
-
- - "
|
318
|
+
- - "~>"
|
319
319
|
- !ruby/object:Gem::Version
|
320
|
-
version:
|
320
|
+
version: 0.2.0
|
321
321
|
- !ruby/object:Gem::Dependency
|
322
322
|
name: aws-sdk-core
|
323
323
|
requirement: !ruby/object:Gem::Requirement
|
324
324
|
requirements:
|
325
|
-
- - "
|
325
|
+
- - "~>"
|
326
326
|
- !ruby/object:Gem::Version
|
327
|
-
version:
|
327
|
+
version: 3.28.0
|
328
328
|
type: :runtime
|
329
329
|
prerelease: false
|
330
330
|
version_requirements: !ruby/object:Gem::Requirement
|
331
331
|
requirements:
|
332
|
-
- - "
|
332
|
+
- - "~>"
|
333
333
|
- !ruby/object:Gem::Version
|
334
|
-
version:
|
334
|
+
version: 3.28.0
|
335
335
|
- !ruby/object:Gem::Dependency
|
336
336
|
name: aws-sdk-iam
|
337
337
|
requirement: !ruby/object:Gem::Requirement
|
338
338
|
requirements:
|
339
|
-
- - "
|
339
|
+
- - "~>"
|
340
340
|
- !ruby/object:Gem::Version
|
341
|
-
version:
|
341
|
+
version: 1.8.0
|
342
342
|
type: :runtime
|
343
343
|
prerelease: false
|
344
344
|
version_requirements: !ruby/object:Gem::Requirement
|
345
345
|
requirements:
|
346
|
-
- - "
|
346
|
+
- - "~>"
|
347
347
|
- !ruby/object:Gem::Version
|
348
|
-
version:
|
348
|
+
version: 1.8.0
|
349
349
|
- !ruby/object:Gem::Dependency
|
350
350
|
name: aws-sdk-organizations
|
351
351
|
requirement: !ruby/object:Gem::Requirement
|
352
352
|
requirements:
|
353
|
-
- - "
|
353
|
+
- - "~>"
|
354
354
|
- !ruby/object:Gem::Version
|
355
|
-
version:
|
355
|
+
version: 1.13.0
|
356
356
|
type: :runtime
|
357
357
|
prerelease: false
|
358
358
|
version_requirements: !ruby/object:Gem::Requirement
|
359
359
|
requirements:
|
360
|
-
- - "
|
360
|
+
- - "~>"
|
361
361
|
- !ruby/object:Gem::Version
|
362
|
-
version:
|
362
|
+
version: 1.13.0
|
363
363
|
- !ruby/object:Gem::Dependency
|
364
364
|
name: aws-sdk-s3
|
365
365
|
requirement: !ruby/object:Gem::Requirement
|
366
366
|
requirements:
|
367
|
-
- - "
|
367
|
+
- - "~>"
|
368
368
|
- !ruby/object:Gem::Version
|
369
|
-
version:
|
369
|
+
version: 1.20.0
|
370
370
|
type: :runtime
|
371
371
|
prerelease: false
|
372
372
|
version_requirements: !ruby/object:Gem::Requirement
|
373
373
|
requirements:
|
374
|
-
- - "
|
374
|
+
- - "~>"
|
375
375
|
- !ruby/object:Gem::Version
|
376
|
-
version:
|
376
|
+
version: 1.20.0
|
377
377
|
- !ruby/object:Gem::Dependency
|
378
378
|
name: aws-sdk-ecr
|
379
379
|
requirement: !ruby/object:Gem::Requirement
|
380
380
|
requirements:
|
381
|
-
- - "
|
381
|
+
- - "~>"
|
382
382
|
- !ruby/object:Gem::Version
|
383
|
-
version:
|
383
|
+
version: 1.6.0
|
384
384
|
type: :runtime
|
385
385
|
prerelease: false
|
386
386
|
version_requirements: !ruby/object:Gem::Requirement
|
387
387
|
requirements:
|
388
|
-
- - "
|
388
|
+
- - "~>"
|
389
389
|
- !ruby/object:Gem::Version
|
390
|
-
version:
|
390
|
+
version: 1.6.0
|
391
391
|
- !ruby/object:Gem::Dependency
|
392
392
|
name: aws-sdk-ecs
|
393
393
|
requirement: !ruby/object:Gem::Requirement
|
394
394
|
requirements:
|
395
|
-
- - "
|
395
|
+
- - "~>"
|
396
396
|
- !ruby/object:Gem::Version
|
397
|
-
version:
|
397
|
+
version: 1.20.0
|
398
398
|
type: :runtime
|
399
399
|
prerelease: false
|
400
400
|
version_requirements: !ruby/object:Gem::Requirement
|
401
401
|
requirements:
|
402
|
-
- - "
|
402
|
+
- - "~>"
|
403
403
|
- !ruby/object:Gem::Version
|
404
|
-
version:
|
404
|
+
version: 1.20.0
|
405
405
|
- !ruby/object:Gem::Dependency
|
406
406
|
name: os
|
407
407
|
requirement: !ruby/object:Gem::Requirement
|
408
408
|
requirements:
|
409
|
-
- - "
|
409
|
+
- - "~>"
|
410
410
|
- !ruby/object:Gem::Version
|
411
|
-
version:
|
411
|
+
version: 1.0.0
|
412
412
|
type: :runtime
|
413
413
|
prerelease: false
|
414
414
|
version_requirements: !ruby/object:Gem::Requirement
|
415
415
|
requirements:
|
416
|
-
- - "
|
416
|
+
- - "~>"
|
417
417
|
- !ruby/object:Gem::Version
|
418
|
-
version:
|
418
|
+
version: 1.0.0
|
419
419
|
- !ruby/object:Gem::Dependency
|
420
420
|
name: rotp
|
421
421
|
requirement: !ruby/object:Gem::Requirement
|
422
422
|
requirements:
|
423
|
-
- - "
|
423
|
+
- - "~>"
|
424
424
|
- !ruby/object:Gem::Version
|
425
|
-
version:
|
425
|
+
version: 3.3.1
|
426
426
|
type: :runtime
|
427
427
|
prerelease: false
|
428
428
|
version_requirements: !ruby/object:Gem::Requirement
|
429
429
|
requirements:
|
430
|
-
- - "
|
430
|
+
- - "~>"
|
431
431
|
- !ruby/object:Gem::Version
|
432
|
-
version:
|
432
|
+
version: 3.3.1
|
433
433
|
- !ruby/object:Gem::Dependency
|
434
434
|
name: clipboard
|
435
435
|
requirement: !ruby/object:Gem::Requirement
|
436
436
|
requirements:
|
437
|
-
- - "
|
437
|
+
- - "~>"
|
438
438
|
- !ruby/object:Gem::Version
|
439
|
-
version:
|
439
|
+
version: 1.1.2
|
440
440
|
type: :runtime
|
441
441
|
prerelease: false
|
442
442
|
version_requirements: !ruby/object:Gem::Requirement
|
443
443
|
requirements:
|
444
|
-
- - "
|
444
|
+
- - "~>"
|
445
445
|
- !ruby/object:Gem::Version
|
446
|
-
version:
|
446
|
+
version: 1.1.2
|
447
447
|
description: Atmos provides a terraform scaffold for creating cloud system architectures
|
448
448
|
email:
|
449
449
|
- matt@simplygenius.com
|
@@ -503,6 +503,7 @@ files:
|
|
503
503
|
- lib/simplygenius/atmos/utils.rb
|
504
504
|
- lib/simplygenius/atmos/version.rb
|
505
505
|
- templates/new/config/atmos.yml
|
506
|
+
- templates/new/config/atmos/environments/dev.yml
|
506
507
|
- templates/new/config/atmos/recipes.yml
|
507
508
|
- templates/new/config/atmos/runtime.yml
|
508
509
|
- templates/new/templates.yml
|