TerraformDevKit 0.3.4 → 0.3.5
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/README.md +13 -0
- data/lib/TerraformDevKit.rb +2 -2
- data/lib/TerraformDevKit/command.rb +19 -14
- data/lib/TerraformDevKit/errors/command_error.rb +14 -0
- data/lib/TerraformDevKit/extended_file_utils.rb +7 -0
- data/lib/TerraformDevKit/{terraform_project_config.rb → project_config.rb} +1 -1
- data/lib/TerraformDevKit/{terraform_template_config_file.rb → template_config_file.rb} +1 -1
- data/lib/TerraformDevKit/{terraform_template_renderer.rb → template_renderer.rb} +4 -4
- data/lib/TerraformDevKit/terraform_config_manager.rb +9 -2
- data/lib/TerraformDevKit/version.rb +1 -1
- data/tasks/devkit.rake +2 -2
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83160b993699651ff3704a83514b066c05c40ecd
|
4
|
+
data.tar.gz: fc6ff392be1d7ff059c3a65a7668b77940259d8d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7530cce40200f4e8ba2bc2dc725127557e720873e158ab055f9dbf53fefc1f862bfd9eabd8c41d6c524f9505c52e1d74c94b3e8a4faf2707a6c87a485c169641
|
7
|
+
data.tar.gz: 7e34bb9aa5448e9ff903ae66b00366f9dbe2cfef40931352dba80a705cba89151942444ed86369ff0fe0513ea6c462a7ac15d7d212bb6b937e2c7eb7dff45363
|
data/README.md
CHANGED
@@ -205,6 +205,19 @@ template-dirs:
|
|
205
205
|
another-template-dest-folder: yet-another-template-src-folder
|
206
206
|
```
|
207
207
|
|
208
|
+
### Copying Files to the Environment Folder
|
209
|
+
|
210
|
+
Sometimes it may be desirable to copy files that exist in a given folder into the environment folder. The `copy-files` field makes this possible. See the following configuration for an example:
|
211
|
+
|
212
|
+
```yaml
|
213
|
+
terraform-version: 0.11.0
|
214
|
+
project-name: my super cool project
|
215
|
+
copy-files:
|
216
|
+
dest-folder: ../src-folder
|
217
|
+
another-dest-folder: ../../another-src-folder
|
218
|
+
dest-file: src-file
|
219
|
+
```
|
220
|
+
|
208
221
|
### Updating Modules
|
209
222
|
|
210
223
|
Terraform will get the necessary modules every time a new environment is created. Once the modules are cached, there is generally no need to keep updating the modules each time Terraform is executed. When using a module repository it is possible to select a specific version to use (as shown [here](https://www.terraform.io/docs/modules/sources.html#ref)). In such a case, Terraform will automatically update the modules whenever the version number is changed.
|
data/lib/TerraformDevKit.rb
CHANGED
@@ -15,7 +15,7 @@ require 'TerraformDevKit/terraform_config_manager'
|
|
15
15
|
require 'TerraformDevKit/terraform_env_manager'
|
16
16
|
require 'TerraformDevKit/terraform_installer'
|
17
17
|
require 'TerraformDevKit/terraform_log_filter'
|
18
|
-
require 'TerraformDevKit/
|
19
|
-
require 'TerraformDevKit/
|
18
|
+
require 'TerraformDevKit/project_config'
|
19
|
+
require 'TerraformDevKit/template_config_file'
|
20
20
|
require 'TerraformDevKit/url'
|
21
21
|
require 'TerraformDevKit/version'
|
@@ -1,26 +1,31 @@
|
|
1
1
|
require 'open3'
|
2
2
|
|
3
|
+
require 'TerraformDevKit/errors/command_error'
|
4
|
+
|
3
5
|
module TerraformDevKit
|
4
6
|
class Command
|
5
7
|
def self.run(cmd, directory: Dir.pwd, print_output: true)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
out = IO.popen(cmd, err: %i[child out], chdir: directory) do |io|
|
9
|
+
begin
|
10
|
+
out = ''
|
11
|
+
loop do
|
12
|
+
chunk = io.readpartial(4096)
|
13
|
+
print chunk if print_output
|
14
|
+
out += chunk
|
15
|
+
end
|
16
|
+
rescue EOFError; end
|
17
|
+
out
|
12
18
|
end
|
19
|
+
|
20
|
+
out = process_output(out)
|
21
|
+
$?.exitstatus.zero? || (raise CommandError.new(cmd, out))
|
22
|
+
out
|
13
23
|
end
|
14
24
|
|
15
25
|
private_class_method
|
16
|
-
def self.process_output(
|
17
|
-
|
18
|
-
|
19
|
-
until (line = stream.gets).nil?
|
20
|
-
print line if print_output
|
21
|
-
lines << line.strip
|
22
|
-
end
|
23
|
-
lines
|
26
|
+
def self.process_output(out)
|
27
|
+
out.split("\n")
|
28
|
+
.map { |line| line.tr("\r\n", '') }
|
24
29
|
end
|
25
30
|
end
|
26
31
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module TerraformDevKit
|
4
|
+
class CommandError < StandardError
|
5
|
+
attr_reader :cmd
|
6
|
+
attr_reader :output
|
7
|
+
|
8
|
+
def initialize(cmd, output)
|
9
|
+
@cmd = cmd
|
10
|
+
@output = output
|
11
|
+
super(JSON.generate({ cmd: @cmd, output: @output.join("\n") }))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -3,6 +3,13 @@ require 'TerraformDevKit/command'
|
|
3
3
|
require 'TerraformDevKit/os'
|
4
4
|
|
5
5
|
module TerraformDevKit::ExtendedFileUtils
|
6
|
+
def self.copy(files, dest_base_path)
|
7
|
+
files.to_h.each do |dest, src|
|
8
|
+
dest = File.join(dest_base_path, dest)
|
9
|
+
FileUtils.copy_entry(src, dest)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
6
13
|
def self.rm_rf(list, options = {})
|
7
14
|
if TerraformDevKit::OS.host_os == 'windows'
|
8
15
|
windows_path = TerraformDevKit::OS.convert_to_local_path(list)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'fileutils'
|
2
|
-
require 'TerraformDevKit/
|
2
|
+
require 'TerraformDevKit/template_config_file'
|
3
3
|
|
4
4
|
module TerraformDevKit
|
5
|
-
class
|
5
|
+
class TemplateRenderer
|
6
6
|
def initialize(env, project, extra_vars_proc = nil)
|
7
7
|
@env = env
|
8
8
|
@project = project
|
@@ -10,8 +10,8 @@ module TerraformDevKit
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def render_files
|
13
|
-
template_dirs = Configuration.get('template-dirs')
|
14
13
|
render_files_into_path(Dir['*.mustache'])
|
14
|
+
template_dirs = Configuration.get('template-dirs')
|
15
15
|
template_dirs.to_h.each do |dest, src|
|
16
16
|
render_files_into_path(Dir[File.join(src, '*.mustache')], dest)
|
17
17
|
end
|
@@ -22,7 +22,7 @@ module TerraformDevKit
|
|
22
22
|
def render_files_into_path(file_list, dest_path = '.')
|
23
23
|
aws_config = Configuration.get('aws')
|
24
24
|
file_list.each do |fname|
|
25
|
-
template_file =
|
25
|
+
template_file = TemplateConfigFile.new(
|
26
26
|
File.read(fname),
|
27
27
|
@project,
|
28
28
|
@env,
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'fileutils'
|
2
|
-
require 'TerraformDevKit/
|
2
|
+
require 'TerraformDevKit/extended_file_utils'
|
3
|
+
require 'TerraformDevKit/template_renderer'
|
3
4
|
|
4
5
|
module TerraformDevKit
|
5
6
|
class TerraformConfigManager
|
@@ -10,7 +11,8 @@ module TerraformDevKit
|
|
10
11
|
def self.setup(env, project)
|
11
12
|
fix_configuration(env)
|
12
13
|
create_environment_directory(env)
|
13
|
-
|
14
|
+
copy_files(env)
|
15
|
+
TemplateRenderer
|
14
16
|
.new(env, project, @extra_vars_proc)
|
15
17
|
.render_files
|
16
18
|
end
|
@@ -40,6 +42,11 @@ module TerraformDevKit
|
|
40
42
|
FileUtils.makedirs(env.working_dir)
|
41
43
|
end
|
42
44
|
|
45
|
+
private_class_method
|
46
|
+
def self.copy_files(env)
|
47
|
+
ExtendedFileUtils.copy(Configuration.get('copy-files'), env.working_dir)
|
48
|
+
end
|
49
|
+
|
43
50
|
private_class_method
|
44
51
|
def self.request_profile(env)
|
45
52
|
puts "Environment #{env.name} requires manual input of AWS credentials"
|
data/tasks/devkit.rake
CHANGED
@@ -66,7 +66,7 @@ task :prepare, [:env] do |_, args|
|
|
66
66
|
directory: BIN_PATH
|
67
67
|
)
|
68
68
|
|
69
|
-
project_config = TDK::
|
69
|
+
project_config = TDK::ProjectConfig.new(
|
70
70
|
TDK::Configuration.get('project-name'),
|
71
71
|
TDK::Configuration.get('project-acronym')
|
72
72
|
)
|
@@ -176,7 +176,7 @@ task :destroy, [:env] => :prepare do |task, args|
|
|
176
176
|
invoke('pre_destroy', task, args.env, safe_invoke: true)
|
177
177
|
|
178
178
|
unless env.local_backend?
|
179
|
-
project_config = TDK::
|
179
|
+
project_config = TDK::ProjectConfig.new(
|
180
180
|
TDK::Configuration.get('project-name'),
|
181
181
|
TDK::Configuration.get('project-acronym')
|
182
182
|
)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: TerraformDevKit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Victor Jimenez
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -195,17 +195,18 @@ files:
|
|
195
195
|
- lib/TerraformDevKit/config.rb
|
196
196
|
- lib/TerraformDevKit/download.rb
|
197
197
|
- lib/TerraformDevKit/environment.rb
|
198
|
+
- lib/TerraformDevKit/errors/command_error.rb
|
198
199
|
- lib/TerraformDevKit/extended_file_utils.rb
|
199
200
|
- lib/TerraformDevKit/os.rb
|
201
|
+
- lib/TerraformDevKit/project_config.rb
|
200
202
|
- lib/TerraformDevKit/request.rb
|
201
203
|
- lib/TerraformDevKit/retry.rb
|
204
|
+
- lib/TerraformDevKit/template_config_file.rb
|
205
|
+
- lib/TerraformDevKit/template_renderer.rb
|
202
206
|
- lib/TerraformDevKit/terraform_config_manager.rb
|
203
207
|
- lib/TerraformDevKit/terraform_env_manager.rb
|
204
208
|
- lib/TerraformDevKit/terraform_installer.rb
|
205
209
|
- lib/TerraformDevKit/terraform_log_filter.rb
|
206
|
-
- lib/TerraformDevKit/terraform_project_config.rb
|
207
|
-
- lib/TerraformDevKit/terraform_template_config_file.rb
|
208
|
-
- lib/TerraformDevKit/terraform_template_renderer.rb
|
209
210
|
- lib/TerraformDevKit/url.rb
|
210
211
|
- lib/TerraformDevKit/version.rb
|
211
212
|
- lib/TerraformDevKit/zip_file_generator.rb
|