TerraformDevKit 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.appveyor.yml +0 -0
  3. data/.gitignore +0 -0
  4. data/.rspec +2 -2
  5. data/.travis.yml +8 -8
  6. data/Gemfile +4 -4
  7. data/LICENSE +0 -0
  8. data/README.md +226 -206
  9. data/Rakefile +6 -6
  10. data/TerraformDevKit.gemspec +36 -36
  11. data/bin/console +14 -14
  12. data/bin/setup +8 -8
  13. data/exe/wait_for_url +0 -0
  14. data/lib/TerraformDevKit.rb +21 -21
  15. data/lib/TerraformDevKit/aws/aws.rb +65 -65
  16. data/lib/TerraformDevKit/aws/cloudfront.rb +20 -20
  17. data/lib/TerraformDevKit/aws/dynamodb.rb +46 -46
  18. data/lib/TerraformDevKit/aws/s3.rb +44 -44
  19. data/lib/TerraformDevKit/aws/terraform_remote_state.rb +67 -67
  20. data/lib/TerraformDevKit/backup_state.rb +18 -18
  21. data/lib/TerraformDevKit/command.rb +0 -0
  22. data/lib/TerraformDevKit/config.rb +0 -0
  23. data/lib/TerraformDevKit/download.rb +0 -0
  24. data/lib/TerraformDevKit/environment.rb +1 -0
  25. data/lib/TerraformDevKit/extended_file_utils.rb +14 -14
  26. data/lib/TerraformDevKit/os.rb +0 -0
  27. data/lib/TerraformDevKit/request.rb +0 -0
  28. data/lib/TerraformDevKit/retry.rb +0 -0
  29. data/lib/TerraformDevKit/terraform_config_manager.rb +4 -24
  30. data/lib/TerraformDevKit/terraform_env_manager.rb +0 -0
  31. data/lib/TerraformDevKit/terraform_installer.rb +0 -0
  32. data/lib/TerraformDevKit/terraform_log_filter.rb +0 -0
  33. data/lib/TerraformDevKit/terraform_project_config.rb +10 -10
  34. data/lib/TerraformDevKit/terraform_template_config_file.rb +0 -0
  35. data/lib/TerraformDevKit/terraform_template_renderer.rb +41 -0
  36. data/lib/TerraformDevKit/url.rb +0 -0
  37. data/lib/TerraformDevKit/version.rb +3 -3
  38. data/lib/TerraformDevKit/zip_file_generator.rb +47 -47
  39. data/tasks/devkit.rake +194 -194
  40. metadata +4 -3
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -1,36 +1,36 @@
1
- # coding: utf-8
2
-
3
- lib = File.expand_path('../lib', __FILE__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'TerraformDevKit/version'
6
-
7
- Gem::Specification.new do |spec|
8
- spec.name = 'TerraformDevKit'
9
- spec.version = TerraformDevKit::VERSION
10
- spec.authors = ['Victor Jimenez']
11
- spec.email = ['vjimenez@vistaprint.com']
12
-
13
- spec.summary = 'Set of scripts to ease development and testing with Terraform.'
14
- spec.homepage = 'https://github.com/vistaprint/TerraformDevKit'
15
- spec.license = 'Apache-2.0'
16
-
17
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
- f.match(%r{^(test|spec|features)/})
19
- end
20
- spec.bindir = 'exe'
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
- spec.require_paths = ['lib']
23
-
24
- spec.add_development_dependency 'bundler', '~> 1.14'
25
- spec.add_development_dependency 'rake', '~> 10.0'
26
- spec.add_development_dependency 'rspec', '~> 3.0'
27
- spec.add_development_dependency 'webmock', '~> 3.0'
28
-
29
- spec.add_runtime_dependency 'aws-sdk-core', '~> 3'
30
- spec.add_runtime_dependency 'aws-sdk-dynamodb', '~> 1'
31
- spec.add_runtime_dependency 'aws-sdk-cloudfront', '~> 1'
32
- spec.add_runtime_dependency 'aws-sdk-s3', '~> 1'
33
- spec.add_runtime_dependency 'mustache', '~> 1.0'
34
- spec.add_runtime_dependency 'rainbow', '~> 3.0'
35
- spec.add_runtime_dependency 'rubyzip', '~> 1.2'
36
- end
1
+ # coding: utf-8
2
+
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'TerraformDevKit/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'TerraformDevKit'
9
+ spec.version = TerraformDevKit::VERSION
10
+ spec.authors = ['Victor Jimenez']
11
+ spec.email = ['vjimenez@vistaprint.com']
12
+
13
+ spec.summary = 'Set of scripts to ease development and testing with Terraform.'
14
+ spec.homepage = 'https://github.com/vistaprint/TerraformDevKit'
15
+ spec.license = 'Apache-2.0'
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+ spec.bindir = 'exe'
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ['lib']
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.14'
25
+ spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'rspec', '~> 3.0'
27
+ spec.add_development_dependency 'webmock', '~> 3.0'
28
+
29
+ spec.add_runtime_dependency 'aws-sdk-core', '~> 3'
30
+ spec.add_runtime_dependency 'aws-sdk-dynamodb', '~> 1'
31
+ spec.add_runtime_dependency 'aws-sdk-cloudfront', '~> 1'
32
+ spec.add_runtime_dependency 'aws-sdk-s3', '~> 1'
33
+ spec.add_runtime_dependency 'mustache', '~> 1.0'
34
+ spec.add_runtime_dependency 'rainbow', '~> 3.0'
35
+ spec.add_runtime_dependency 'rubyzip', '~> 1.2'
36
+ end
data/bin/console CHANGED
@@ -1,14 +1,14 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "TerraformDevKit"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "TerraformDevKit"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup CHANGED
@@ -1,8 +1,8 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/exe/wait_for_url CHANGED
File without changes
@@ -1,21 +1,21 @@
1
- require 'TerraformDevKit/aws/aws'
2
- require 'TerraformDevKit/aws/cloudfront'
3
- require 'TerraformDevKit/aws/dynamodb'
4
- require 'TerraformDevKit/aws/terraform_remote_state'
5
- require 'TerraformDevKit/aws/s3'
6
- require 'TerraformDevKit/backup_state'
7
- require 'TerraformDevKit/command'
8
- require 'TerraformDevKit/config'
9
- require 'TerraformDevKit/environment'
10
- require 'TerraformDevKit/extended_file_utils'
11
- require 'TerraformDevKit/os'
12
- require 'TerraformDevKit/request'
13
- require 'TerraformDevKit/retry'
14
- require 'TerraformDevKit/terraform_config_manager'
15
- require 'TerraformDevKit/terraform_env_manager'
16
- require 'TerraformDevKit/terraform_installer'
17
- require 'TerraformDevKit/terraform_log_filter'
18
- require 'TerraformDevKit/terraform_project_config'
19
- require 'TerraformDevKit/terraform_template_config_file'
20
- require 'TerraformDevKit/url'
21
- require 'TerraformDevKit/version'
1
+ require 'TerraformDevKit/aws/aws'
2
+ require 'TerraformDevKit/aws/cloudfront'
3
+ require 'TerraformDevKit/aws/dynamodb'
4
+ require 'TerraformDevKit/aws/terraform_remote_state'
5
+ require 'TerraformDevKit/aws/s3'
6
+ require 'TerraformDevKit/backup_state'
7
+ require 'TerraformDevKit/command'
8
+ require 'TerraformDevKit/config'
9
+ require 'TerraformDevKit/environment'
10
+ require 'TerraformDevKit/extended_file_utils'
11
+ require 'TerraformDevKit/os'
12
+ require 'TerraformDevKit/request'
13
+ require 'TerraformDevKit/retry'
14
+ require 'TerraformDevKit/terraform_config_manager'
15
+ require 'TerraformDevKit/terraform_env_manager'
16
+ require 'TerraformDevKit/terraform_installer'
17
+ require 'TerraformDevKit/terraform_log_filter'
18
+ require 'TerraformDevKit/terraform_project_config'
19
+ require 'TerraformDevKit/terraform_template_config_file'
20
+ require 'TerraformDevKit/url'
21
+ require 'TerraformDevKit/version'
@@ -1,65 +1,65 @@
1
- require 'aws-sdk-core'
2
-
3
- Aws.use_bundled_cert!
4
-
5
- module TerraformDevKit
6
- module Aws
7
- class AwsConfig
8
- def initialize(config)
9
- unless config.nil?
10
- @profile = config.fetch('profile', nil)
11
- @region = config.fetch('region', nil)
12
- @access_key_id = config.fetch('access_key_id', nil)
13
- @secret_access_key = config.fetch('secret_access_key', nil)
14
- end
15
- end
16
-
17
- def credentials
18
- unless profile.nil?
19
- credentials = ::Aws::SharedCredentials.new(profile_name: profile)
20
- return credentials if credentials.set?
21
- end
22
-
23
- return ::Aws::Credentials.new(*access_keys) if access_keys_available?
24
-
25
- raise 'Cannot find AWS credentials'
26
- end
27
-
28
- def region
29
- @region || ENV['AWS_REGION']
30
- end
31
-
32
- def profile
33
- @profile || ENV['AWS_PROFILE']
34
- end
35
-
36
- private
37
-
38
- def access_keys
39
- return config_access_keys if config_has_access_keys?
40
- return environment_access_keys if environment_has_access_keys?
41
- nil
42
- end
43
-
44
- def access_keys_available?
45
- config_has_access_keys? || environment_has_access_keys?
46
- end
47
-
48
- def config_has_access_keys?
49
- !@access_key_id.nil? && !@secret_access_key.nil?
50
- end
51
-
52
- def config_access_keys
53
- return @access_key_id, @secret_access_key
54
- end
55
-
56
- def environment_has_access_keys?
57
- ENV.key?('AWS_ACCESS_KEY_ID') && ENV.key?('AWS_SECRET_ACCESS_KEY')
58
- end
59
-
60
- def environment_access_keys
61
- return ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
62
- end
63
- end
64
- end
65
- end
1
+ require 'aws-sdk-core'
2
+
3
+ Aws.use_bundled_cert!
4
+
5
+ module TerraformDevKit
6
+ module Aws
7
+ class AwsConfig
8
+ def initialize(config)
9
+ unless config.nil?
10
+ @profile = config.fetch('profile', nil)
11
+ @region = config.fetch('region', nil)
12
+ @access_key_id = config.fetch('access_key_id', nil)
13
+ @secret_access_key = config.fetch('secret_access_key', nil)
14
+ end
15
+ end
16
+
17
+ def credentials
18
+ unless profile.nil?
19
+ credentials = ::Aws::SharedCredentials.new(profile_name: profile)
20
+ return credentials if credentials.set?
21
+ end
22
+
23
+ return ::Aws::Credentials.new(*access_keys) if access_keys_available?
24
+
25
+ raise 'Cannot find AWS credentials'
26
+ end
27
+
28
+ def region
29
+ @region || ENV['AWS_REGION']
30
+ end
31
+
32
+ def profile
33
+ @profile || ENV['AWS_PROFILE']
34
+ end
35
+
36
+ private
37
+
38
+ def access_keys
39
+ return config_access_keys if config_has_access_keys?
40
+ return environment_access_keys if environment_has_access_keys?
41
+ nil
42
+ end
43
+
44
+ def access_keys_available?
45
+ config_has_access_keys? || environment_has_access_keys?
46
+ end
47
+
48
+ def config_has_access_keys?
49
+ !@access_key_id.nil? && !@secret_access_key.nil?
50
+ end
51
+
52
+ def config_access_keys
53
+ return @access_key_id, @secret_access_key
54
+ end
55
+
56
+ def environment_has_access_keys?
57
+ ENV.key?('AWS_ACCESS_KEY_ID') && ENV.key?('AWS_SECRET_ACCESS_KEY')
58
+ end
59
+
60
+ def environment_access_keys
61
+ return ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
62
+ end
63
+ end
64
+ end
65
+ end
@@ -1,20 +1,20 @@
1
- require 'aws-sdk-cloudfront'
2
-
3
- module TerraformDevKit
4
- module Aws
5
- class CloudFront
6
- def initialize(credentials, region)
7
- @cloudfront = ::Aws::CloudFront::Client.new(
8
- region: region,
9
- credentials:credentials
10
- )
11
- end
12
-
13
- def distribution_is_deployed?(distribution_id)
14
- @cloudfront.get_distribution({
15
- id: distribution_id,
16
- }).distribution.status == 'Deployed'
17
- end
18
- end
19
- end
20
- end
1
+ require 'aws-sdk-cloudfront'
2
+
3
+ module TerraformDevKit
4
+ module Aws
5
+ class CloudFront
6
+ def initialize(credentials, region)
7
+ @cloudfront = ::Aws::CloudFront::Client.new(
8
+ region: region,
9
+ credentials:credentials
10
+ )
11
+ end
12
+
13
+ def distribution_is_deployed?(distribution_id)
14
+ @cloudfront.get_distribution({
15
+ id: distribution_id,
16
+ }).distribution.status == 'Deployed'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,46 +1,46 @@
1
- require 'aws-sdk-dynamodb'
2
-
3
- Aws.use_bundled_cert!
4
-
5
- module TerraformDevKit
6
- module Aws
7
- # Wrapper class around aws dynamodb
8
- class DynamoDB
9
- def initialize(credentials, region)
10
- @db_client = ::Aws::DynamoDB::Client.new(
11
- credentials: credentials,
12
- region: region
13
- )
14
- end
15
-
16
- def put_item(table_name, item)
17
- @db_client.put_item({item: item, table_name: table_name})
18
- end
19
-
20
- def create_table(table_name, attributes, keys, read_capacity, write_capacity)
21
- @db_client.create_table(
22
- attribute_definitions: attributes,
23
- key_schema: keys,
24
- provisioned_throughput: {
25
- read_capacity_units: read_capacity,
26
- write_capacity_units: write_capacity
27
- },
28
- table_name: table_name
29
- )
30
- end
31
-
32
- def get_table_status(table_name)
33
- resp = @db_client.describe_table({
34
- table_name: table_name,
35
- })
36
- resp.table.table_status
37
- end
38
-
39
- def delete_table(table_name)
40
- @db_client.delete_table({
41
- table_name: table_name,
42
- })
43
- end
44
- end
45
- end
46
- end
1
+ require 'aws-sdk-dynamodb'
2
+
3
+ Aws.use_bundled_cert!
4
+
5
+ module TerraformDevKit
6
+ module Aws
7
+ # Wrapper class around aws dynamodb
8
+ class DynamoDB
9
+ def initialize(credentials, region)
10
+ @db_client = ::Aws::DynamoDB::Client.new(
11
+ credentials: credentials,
12
+ region: region
13
+ )
14
+ end
15
+
16
+ def put_item(table_name, item)
17
+ @db_client.put_item({item: item, table_name: table_name})
18
+ end
19
+
20
+ def create_table(table_name, attributes, keys, read_capacity, write_capacity)
21
+ @db_client.create_table(
22
+ attribute_definitions: attributes,
23
+ key_schema: keys,
24
+ provisioned_throughput: {
25
+ read_capacity_units: read_capacity,
26
+ write_capacity_units: write_capacity
27
+ },
28
+ table_name: table_name
29
+ )
30
+ end
31
+
32
+ def get_table_status(table_name)
33
+ resp = @db_client.describe_table({
34
+ table_name: table_name,
35
+ })
36
+ resp.table.table_status
37
+ end
38
+
39
+ def delete_table(table_name)
40
+ @db_client.delete_table({
41
+ table_name: table_name,
42
+ })
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,44 +1,44 @@
1
- require 'aws-sdk-s3'
2
-
3
- Aws.use_bundled_cert!
4
-
5
- module TerraformDevKit
6
- module Aws
7
- class S3
8
- def initialize(credentials, region)
9
- @s3_client = ::Aws::S3::Client.new(
10
- credentials: credentials,
11
- region: region
12
- )
13
- end
14
-
15
- def create_bucket(bucket_name)
16
- @s3_client.create_bucket(
17
- bucket: bucket_name
18
- )
19
- end
20
-
21
- def delete_bucket(bucket_name)
22
- empty_bucket(bucket_name)
23
-
24
- @s3_client.delete_bucket(
25
- bucket: bucket_name
26
- )
27
- end
28
-
29
- def empty_bucket(bucket_name)
30
- keys_to_delete = @s3_client
31
- .list_objects_v2(bucket: bucket_name)
32
- .contents
33
- .map { |x| { key: x.key } }
34
-
35
- @s3_client.delete_objects(
36
- bucket: bucket_name,
37
- delete: {
38
- objects: keys_to_delete
39
- }
40
- )
41
- end
42
- end
43
- end
44
- end
1
+ require 'aws-sdk-s3'
2
+
3
+ Aws.use_bundled_cert!
4
+
5
+ module TerraformDevKit
6
+ module Aws
7
+ class S3
8
+ def initialize(credentials, region)
9
+ @s3_client = ::Aws::S3::Client.new(
10
+ credentials: credentials,
11
+ region: region
12
+ )
13
+ end
14
+
15
+ def create_bucket(bucket_name)
16
+ @s3_client.create_bucket(
17
+ bucket: bucket_name
18
+ )
19
+ end
20
+
21
+ def delete_bucket(bucket_name)
22
+ empty_bucket(bucket_name)
23
+
24
+ @s3_client.delete_bucket(
25
+ bucket: bucket_name
26
+ )
27
+ end
28
+
29
+ def empty_bucket(bucket_name)
30
+ keys_to_delete = @s3_client
31
+ .list_objects_v2(bucket: bucket_name)
32
+ .contents
33
+ .map { |x| { key: x.key } }
34
+
35
+ @s3_client.delete_objects(
36
+ bucket: bucket_name,
37
+ delete: {
38
+ objects: keys_to_delete
39
+ }
40
+ )
41
+ end
42
+ end
43
+ end
44
+ end