terraspace_plugin_aws 0.0.0 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -4
  3. data/Gemfile +1 -6
  4. data/README.md +14 -12
  5. data/lib/templates/hcl/project/config/terraform/backend.tf.tt +9 -0
  6. data/lib/templates/hcl/project/config/{templates → terraform}/provider.tf +0 -0
  7. data/lib/templates/hcl/stack/main.tf +2 -2
  8. data/lib/templates/hcl/stack/variables.tf +0 -6
  9. data/lib/templates/ruby/project/config/{templates → terraform}/backend.rb.tt +0 -0
  10. data/lib/templates/ruby/project/config/{templates → terraform}/provider.rb +0 -0
  11. data/lib/templates/ruby/stack/main.rb +2 -2
  12. data/lib/templates/ruby/stack/variables.rb +0 -6
  13. data/lib/templates/test/rspec/module/test/spec/fixtures/stack/main.tf +9 -0
  14. data/lib/templates/test/rspec/module/test/spec/fixtures/stack/outputs.tf +4 -0
  15. data/lib/templates/test/rspec/module/test/spec/fixtures/stack/variables.tf +11 -0
  16. data/lib/templates/test/rspec/module/test/spec/main_spec.rb.tt +2 -2
  17. data/lib/templates/test/rspec/project/spec/fixtures/tfvars/demo.tfvars +1 -0
  18. data/lib/templates/test/rspec/project/spec/spec_helper.rb +13 -0
  19. data/lib/templates/test/rspec/project/spec/stacks/demo/main_spec.rb +26 -0
  20. data/lib/terraspace_plugin_aws.rb +6 -4
  21. data/lib/terraspace_plugin_aws/interfaces/backend.rb +2 -0
  22. data/lib/terraspace_plugin_aws/interfaces/backend/base.rb +4 -0
  23. data/lib/terraspace_plugin_aws/interfaces/backend/bucket.rb +6 -6
  24. data/lib/terraspace_plugin_aws/interfaces/backend/table.rb +3 -3
  25. data/lib/terraspace_plugin_aws/interfaces/config.rb +7 -2
  26. data/lib/terraspace_plugin_aws/interfaces/expander.rb +2 -0
  27. data/lib/terraspace_plugin_aws/interfaces/layer.rb +4 -4
  28. data/lib/terraspace_plugin_aws/interfaces/summary.rb +60 -0
  29. data/lib/terraspace_plugin_aws/version.rb +1 -1
  30. metadata +13 -6
  31. data/lib/templates/hcl/project/config/templates/backend.tf.tt +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dca5820d4f39269a02702a0c322cb249121f3676997b6e1f5a63e042cbc15e15
4
- data.tar.gz: edb37d92d5e398c5c4ce98858db544fe7d4a23226da816eb6687b0809a173734
3
+ metadata.gz: dfca334913ce20496d5ed7dff1191c741880b1f7453beb43302641874a645052
4
+ data.tar.gz: 667087253840e4822c26e2ca73af799a14e63d8cca5a1b4b4d23557938a1e03f
5
5
  SHA512:
6
- metadata.gz: ff289ee0cd67e65701c5d23916fc237723aca27f8f14a863f273e065056bef8b805dbd7bb962ac71590c1f66118472c6894d4649c262f2b7aa2daab7705527ed
7
- data.tar.gz: 52357c39e20e2877b52c7ab803a9704764c1c917746defc53a62228227533ec845dac2981e5025c3f064e6e402068830e908c0da86c33808b9b8fd7e308e6b8b
6
+ metadata.gz: 6640c1548bdc8d0e9c6b7a61a9916eee88d8d1f7cb7a2527aba4c0dfba039c8216c9f1f2ba4aac684911344dbe6af73976c61b4d0ce49233ba4c879caa93e71b
7
+ data.tar.gz: a25e90407bee9259200a31b83aa61d9e285cc0b61fc93f1b5a77a7cacc7323e6fb909a551269f8d35bd22cfee242c0a19b5ab0ab164d539f841eec9eeed6cb59
@@ -1,8 +1,7 @@
1
- # Change Log
1
+ # Changelog
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
5
5
 
6
- ## [0.0.1]
7
- - terraspace dep for dev only
8
-
6
+ ## [0.1.0]
7
+ - Initial release
data/Gemfile CHANGED
@@ -7,10 +7,5 @@ gem "rake", "~> 12.0"
7
7
  gem "rspec", "~> 3.0"
8
8
 
9
9
  group :development, :test do
10
- if ENV['TS_EDGE']
11
- base = ENV['TS_EDGE_ROOT'] || "#{ENV['HOME']}/environment/terraspace-edge"
12
- gem "terraspace", path: "#{base}/terraspace"
13
- else
14
- gem "terraspace"
15
- end
10
+ gem "terraspace"
16
11
  end
data/README.md CHANGED
@@ -18,23 +18,25 @@ config/plugins/aws.rb
18
18
 
19
19
  ```ruby
20
20
  TerraspacePluginAws.configure do |config|
21
- # config.s3.encryption = true
22
- # config.s3.enforce_ssl = true
23
- # config.s3.versioning = true
24
- # config.s3.lifecycle = true
25
- # config.s3.access_logging = true
26
- # config.s3.secure_existing = false # run the security controls on existing buckets. by default, only run on newly created bucket the first time
27
- #
28
- # config.dynamodb.encryption = true
29
- # config.dynamodb.kms_master_key_id = nil
30
- # config.dynamodb.sse_type = "KMS"
21
+ config.auto_create = true # set to false to completely disable auto creation
22
+
23
+ config.s3.encryption = true
24
+ config.s3.enforce_ssl = true
25
+ config.s3.versioning = true
26
+ config.s3.lifecycle = true
27
+ config.s3.access_logging = true
28
+ config.s3.secure_existing = false # run the security controls on existing buckets. by default, only run on newly created bucket the first time
29
+
30
+ config.dynamodb.encryption = true
31
+ config.dynamodb.kms_master_key_id = nil
32
+ config.dynamodb.sse_type = "KMS"
31
33
  end
32
34
  ```
33
35
 
34
36
  By default:
35
37
 
36
- * S3 Buckets are secured with encryption, have an enforce ssl bucket policy, have versioning enabled, has a lifecycle policy, and have bucket access logging enabled.
37
- * DynamoDB tables have encryption enabled using the AWS Managed KMS Key for DynamoDB.
38
+ * S3 Buckets are secured with [encryption](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html), have an [enforce ssl bucket policy](https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-policy-for-config-rule/), have [versioning enabled](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html), has a [lifecycle policy](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-lifecycle.html), and have [bucket server access logging enabled](https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html).
39
+ * DynamoDB tables have [encryption enabled](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EncryptionAtRest.html) using the AWS Managed KMS Key for DynamoDB.
38
40
 
39
41
  The settings generally only apply if the s3 bucket or dynamodb table do not yet exist yet and is created for the first time.
40
42
 
@@ -0,0 +1,9 @@
1
+ terraform {
2
+ backend "s3" {
3
+ bucket = "<%%= backend_expand('s3', 'terraform-state-:ACCOUNT-:REGION-:ENV') %>" # expanded by terraspace IE: terraform-state-112233445566-us-west-2-dev
4
+ key = "<%%= backend_expand('s3', ':REGION/:ENV/:BUILD_DIR/terraform.tfstate') %>" # expanded by terraspace IE: us-west-2/dev/modules/vm/terraform.tfstate
5
+ region = "<%%= backend_expand('s3', ':REGION') %>"
6
+ encrypt = true
7
+ dynamodb_table = "terraform_locks"
8
+ }
9
+ }
@@ -1,9 +1,9 @@
1
- resource "random_pet" "bucket" {
1
+ resource "random_pet" "this" {
2
2
  length = 2
3
3
  }
4
4
 
5
5
  module "bucket" {
6
6
  source = "../../modules/example"
7
- bucket = "bucket-${random_pet.bucket.id}"
7
+ bucket = "bucket-${random_pet.this.id}"
8
8
  acl = var.acl
9
9
  }
@@ -1,9 +1,3 @@
1
- variable "bucket" {
2
- description = "The name of the bucket. If omitted, Terraform will assign a random, unique name." # IE: terraform-2020052606510241590000000
3
- type = string
4
- default = null
5
- }
6
-
7
1
  variable "acl" {
8
2
  description = "The canned ACL to apply. Defaults to 'private'."
9
3
  type = string
@@ -1,9 +1,9 @@
1
- resource("random_pet", "bucket",
1
+ resource("random_pet", "this",
2
2
  length: 2
3
3
  )
4
4
 
5
5
  module!("bucket",
6
6
  source: "../../modules/example",
7
- bucket: "bucket-${random_pet.bucket.id}",
7
+ bucket: "bucket-${random_pet.this.id}",
8
8
  acl: var.acl,
9
9
  )
@@ -1,9 +1,3 @@
1
- variable("bucket",
2
- description: "The name of the bucket. If omitted, Terraform will assign a random, unique name.", # IE: terraform-2020052606510241590000000
3
- type: "string",
4
- default: nil,
5
- )
6
-
7
1
  variable("acl",
8
2
  description: "The canned ACL to apply. Defaults to 'private'.",
9
3
  type: "string",
@@ -0,0 +1,9 @@
1
+ resource "random_pet" "this" {
2
+ length = 2
3
+ }
4
+
5
+ module "bucket" {
6
+ source = "../../modules/example"
7
+ bucket = "bucket-${random_pet.this.id}"
8
+ acl = var.acl
9
+ }
@@ -0,0 +1,4 @@
1
+ output "bucket_name" {
2
+ description = "Bucket name"
3
+ value = module.bucket.name
4
+ }
@@ -0,0 +1,11 @@
1
+ variable "bucket" {
2
+ description = "The name of the bucket. If omitted, Terraform will assign a random, unique name." # IE: terraform-2020052606510241590000000
3
+ type = string
4
+ default = null
5
+ }
6
+
7
+ variable "acl" {
8
+ description = "The canned ACL to apply. Defaults to 'private'."
9
+ type = string
10
+ default = "private"
11
+ }
@@ -1,7 +1,7 @@
1
1
  # This starter example of a spec that creates a test harness and provisions a real s3 bucket.
2
2
  # The test harness will be created at:
3
3
  #
4
- # /tmp/terraspace-test-harnesses/<%= @name %>
4
+ # /tmp/terraspace-test-harnesses/<%= @name %>-harness
5
5
  #
6
6
  # It's recommended to run this on a test AWS account.
7
7
  #
@@ -9,7 +9,7 @@ describe "main" do
9
9
  before(:all) do
10
10
  mod_path = File.expand_path("../..", __dir__)
11
11
  terraspace.build_test_harness(
12
- name: "<%= @name %>",
12
+ name: "<%= @name %>-harness",
13
13
  modules: {example: mod_path},
14
14
  stacks: {example: "#{mod_path}/test/spec/fixtures/stack"},
15
15
  )
@@ -0,0 +1,13 @@
1
+ ENV["TS_ENV"] = "test"
2
+
3
+ require "terraspace"
4
+ require "rspec/terraspace"
5
+
6
+ module Helper
7
+ # Add your helpers here
8
+ end
9
+
10
+ RSpec.configure do |c|
11
+ c.include RSpec::Terraspace::Helpers
12
+ c.include Helper
13
+ end
@@ -0,0 +1,26 @@
1
+ describe "main" do
2
+ before(:all) do
3
+ # Build terraspace project to use as a test harness
4
+ # Will be located at: /tmp/terraspace/test-harnesses/demo-harness
5
+ terraspace.build_test_harness(
6
+ name: "demo-harness",
7
+ modules: "app/modules", # include all modules in this folder
8
+ stacks: "app/stacks", # include all stacks in this folder
9
+ # override demo stack tfvars for testing
10
+ # copied over to test harness' app/stacks/demo/tfvars/test.tfvars
11
+ tfvars: {demo: "spec/fixtures/tfvars/demo.tfvars"},
12
+ # create config if needed. The folder will be copied over
13
+ # config: "spec/fixtures/config",
14
+ )
15
+ terraspace.up("demo") # provision real resources
16
+ end
17
+ after(:all) do
18
+ terraspace.down("demo") # destroy real resources
19
+ end
20
+
21
+ it "successful deploy" do
22
+ # Replace with your actual test
23
+ bucket_name = terraspace.output("example", "bucket_name")
24
+ expect(bucket_name).to include("bucket-") # IE: bucket-pet-name
25
+ end
26
+ end
@@ -1,6 +1,3 @@
1
- lib = File.expand_path("../../../", __FILE__)
2
- $:.unshift(lib)
3
-
4
1
  require "memoist"
5
2
  require "terraspace" # for interface
6
3
 
@@ -20,12 +17,17 @@ module TerraspacePluginAws
20
17
  def configure(&block)
21
18
  Interfaces::Config.instance.configure(&block)
22
19
  end
20
+
21
+ def config
22
+ Interfaces::Config.instance.config
23
+ end
24
+
23
25
  extend self
24
26
  end
25
27
 
26
28
  Terraspace::Plugin.register("aws",
27
29
  backend: "s3",
28
- config_instance: TerraspacePluginAws::Interfaces::Config.instance,
30
+ config_class: TerraspacePluginAws::Interfaces::Config,
29
31
  layer_class: TerraspacePluginAws::Interfaces::Layer, # used for layering
30
32
  root: File.dirname(__dir__),
31
33
  )
@@ -4,6 +4,8 @@ module TerraspacePluginAws::Interfaces
4
4
 
5
5
  # interface method
6
6
  def call
7
+ return unless TerraspacePluginAws.config.auto_create
8
+
7
9
  Bucket.new(@info).create
8
10
  Table.new(@info).create
9
11
  end
@@ -7,5 +7,9 @@ class TerraspacePluginAws::Interfaces::Backend
7
7
  def initialize(info)
8
8
  @info = info
9
9
  end
10
+
11
+ def logger
12
+ Terraspace.logger
13
+ end
10
14
  end
11
15
  end
@@ -5,15 +5,15 @@ class TerraspacePluginAws::Interfaces::Backend
5
5
  def create
6
6
  bucket = @info["bucket"]
7
7
  unless bucket # not bucket provided
8
- puts "ERROR: no bucket value provided in your terraform backend config".color(:red)
8
+ logger.error "ERROR: no bucket value provided in your terraform backend config".color(:red)
9
9
  exit 1
10
10
  end
11
11
  if exist?(bucket)
12
- # puts "Bucket already exist: #{bucket}"
12
+ logger.debug "Bucket already exist: #{bucket}"
13
13
  c = TerraspacePluginAws::Interfaces::Config.instance.config.s3
14
14
  secure(bucket) if c.secure_existing
15
15
  else
16
- puts "Creating bucket: #{bucket}"
16
+ logger.info "Creating bucket: #{bucket}"
17
17
  s3.create_bucket(bucket: bucket)
18
18
  secure(bucket)
19
19
  end
@@ -25,9 +25,9 @@ class TerraspacePluginAws::Interfaces::Backend
25
25
  rescue Aws::S3::Errors::NotFound
26
26
  false # Bucket does not exist
27
27
  rescue Aws::S3::Errors::Forbidden => e
28
- puts "#{e.class}: #{e.message}"
29
- puts "ERROR: Bucket is not available: #{name}".color(:red)
30
- puts "Bucket might be owned by someone else or is on another one of your AWS accounts."
28
+ logger.error "#{e.class}: #{e.message}"
29
+ logger.error "ERROR: Bucket is not available: #{name}".color(:red)
30
+ logger.error "Bucket might be owned by someone else or is on another one of your AWS accounts."
31
31
  exit 1
32
32
  end
33
33
  end
@@ -5,16 +5,16 @@ class TerraspacePluginAws::Interfaces::Backend
5
5
  return unless table # not table provided
6
6
 
7
7
  if exist?(table)
8
- # puts "Table already exist: #{table}"
8
+ logger.debug "Table already exist: #{table}"
9
9
  else
10
- puts "Creating dynamodb table: #{table}"
10
+ logger.info "Creating dynamodb table: #{table}"
11
11
  create_table(table)
12
12
  end
13
13
  end
14
14
 
15
15
  def create_table(name)
16
16
  dynamodb.create_table(table_definition(name))
17
- puts "Waiting for dynamodb table to finish creating..."
17
+ logger.info "Waiting for dynamodb table to finish creating..."
18
18
  dynamodb.wait_until(:table_exists, table_name: name)
19
19
  end
20
20
 
@@ -3,15 +3,19 @@ module TerraspacePluginAws::Interfaces
3
3
  include Terraspace::Plugin::Config::Interface
4
4
  include Singleton
5
5
 
6
+ # interface method
7
+ # load_project_config: config/plugins/aws.rb
6
8
  def provider
7
9
  "aws"
8
10
  end
9
11
 
12
+ # interface method
10
13
  def defaults
11
14
  c = ActiveSupport::OrderedOptions.new
12
- c.s3 = ActiveSupport::OrderedOptions.new
13
- c.dynamodb = ActiveSupport::OrderedOptions.new
14
15
 
16
+ c.auto_create = true
17
+
18
+ c.s3 = ActiveSupport::OrderedOptions.new
15
19
  c.s3.encryption = true
16
20
  c.s3.enforce_ssl = true
17
21
  c.s3.versioning = true
@@ -19,6 +23,7 @@ module TerraspacePluginAws::Interfaces
19
23
  c.s3.access_logging = true
20
24
  c.s3.secure_existing = false # run the security controls on existing buckets. by default, only run on newly created bucket the first time
21
25
 
26
+ c.dynamodb = ActiveSupport::OrderedOptions.new
22
27
  c.dynamodb.encryption = true
23
28
  c.dynamodb.kms_master_key_id = nil
24
29
  c.dynamodb.sse_type = "KMS"
@@ -4,6 +4,8 @@ module TerraspacePluginAws::Interfaces
4
4
  class Expander
5
5
  include Terraspace::Plugin::Expander::Interface
6
6
  delegate :account, :region, to: :aws_data
7
+ alias_method :namespace, :account
8
+ alias_method :location, :region
7
9
 
8
10
  def aws_data
9
11
  $__aws_data ||= AwsData.new
@@ -5,13 +5,13 @@ module TerraspacePluginAws::Interfaces
5
5
  extend Memoist
6
6
 
7
7
  # interface method
8
- def region
9
- aws_data.region
8
+ def namespace
9
+ aws_data.account
10
10
  end
11
11
 
12
12
  # interface method
13
- def account
14
- aws_data.account
13
+ def region
14
+ aws_data.region
15
15
  end
16
16
 
17
17
  # interface method
@@ -0,0 +1,60 @@
1
+ module TerraspacePluginAws::Interfaces
2
+ class Summary
3
+ include Terraspace::Plugin::Summary::Interface
4
+ include TerraspacePluginAws::Clients
5
+
6
+ # interface method
7
+ def download
8
+ resp = s3.list_objects(bucket: @bucket)
9
+ resp.contents.each do |content|
10
+ local_path = "#{@dest}/#{content.key}"
11
+ FileUtils.mkdir_p(File.dirname(local_path))
12
+ s3.get_object(
13
+ response_target: local_path,
14
+ bucket: @bucket,
15
+ key: content.key,
16
+ )
17
+ end
18
+ end
19
+
20
+ # interface method
21
+ def delete_empty_statefile(key)
22
+ delete_lock_id(key)
23
+ delete_s3_file(key)
24
+ end
25
+
26
+ private
27
+ def delete_s3_file(key)
28
+ s3.delete_object(
29
+ bucket: @bucket,
30
+ key: key,
31
+ )
32
+ # resp is:
33
+ #
34
+ # <struct Aws::S3::Types::DeleteObjectOutput
35
+ # delete_marker=nil,
36
+ # version_id=nil,
37
+ # request_charged=nil>
38
+ end
39
+
40
+ def delete_lock_id(key)
41
+ lock_id = "#{@bucket}/#{key}-md5"
42
+ table_name = @info['dynamodb_table']
43
+ dynamodb.delete_item(
44
+ key: {LockID: lock_id},
45
+ table_name: table_name,
46
+ )
47
+ # resp is:
48
+ #
49
+ # #<struct Aws::DynamoDB::Types::DeleteItemOutput
50
+ # attributes=nil,
51
+ # consumed_capacity=nil,
52
+ # item_collection_metrics=nil>
53
+ rescue Aws::DynamoDB::Errors::ResourceNotFoundException => e
54
+ # Exception happens when dynamodb table doesnt exist
55
+ # If the lock item is missing, it successfully sends the api call to delete, even though there's nothing to delete
56
+ logger.error "ERROR: #{e.class}: #{e.message}"
57
+ logger.error "Table may not exist"
58
+ end
59
+ end
60
+ end
@@ -1,3 +1,3 @@
1
1
  module TerraspacePluginAws
2
- VERSION = "0.0.0"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terraspace_plugin_aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-31 00:00:00.000000000 Z
11
+ date: 2020-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-dynamodb
@@ -113,23 +113,29 @@ files:
113
113
  - lib/templates/hcl/module/main.tf
114
114
  - lib/templates/hcl/module/outputs.tf
115
115
  - lib/templates/hcl/module/variables.tf
116
- - lib/templates/hcl/project/config/templates/backend.tf.tt
117
- - lib/templates/hcl/project/config/templates/provider.tf
116
+ - lib/templates/hcl/project/config/terraform/backend.tf.tt
117
+ - lib/templates/hcl/project/config/terraform/provider.tf
118
118
  - lib/templates/hcl/stack/main.tf
119
119
  - lib/templates/hcl/stack/outputs.tf
120
120
  - lib/templates/hcl/stack/variables.tf
121
121
  - lib/templates/ruby/module/main.rb
122
122
  - lib/templates/ruby/module/outputs.rb
123
123
  - lib/templates/ruby/module/variables.rb
124
- - lib/templates/ruby/project/config/templates/backend.rb.tt
125
- - lib/templates/ruby/project/config/templates/provider.rb
124
+ - lib/templates/ruby/project/config/terraform/backend.rb.tt
125
+ - lib/templates/ruby/project/config/terraform/provider.rb
126
126
  - lib/templates/ruby/stack/main.rb
127
127
  - lib/templates/ruby/stack/outputs.rb
128
128
  - lib/templates/ruby/stack/variables.rb
129
129
  - lib/templates/test/rspec/module/test/.rspec
130
130
  - lib/templates/test/rspec/module/test/Gemfile.tt
131
+ - lib/templates/test/rspec/module/test/spec/fixtures/stack/main.tf
132
+ - lib/templates/test/rspec/module/test/spec/fixtures/stack/outputs.tf
133
+ - lib/templates/test/rspec/module/test/spec/fixtures/stack/variables.tf
131
134
  - lib/templates/test/rspec/module/test/spec/main_spec.rb.tt
132
135
  - lib/templates/test/rspec/module/test/spec/spec_helper.rb
136
+ - lib/templates/test/rspec/project/spec/fixtures/tfvars/demo.tfvars
137
+ - lib/templates/test/rspec/project/spec/spec_helper.rb
138
+ - lib/templates/test/rspec/project/spec/stacks/demo/main_spec.rb
133
139
  - lib/terraspace_plugin_aws.rb
134
140
  - lib/terraspace_plugin_aws/autoloader.rb
135
141
  - lib/terraspace_plugin_aws/clients.rb
@@ -144,6 +150,7 @@ files:
144
150
  - lib/terraspace_plugin_aws/interfaces/decorator/base.rb
145
151
  - lib/terraspace_plugin_aws/interfaces/expander.rb
146
152
  - lib/terraspace_plugin_aws/interfaces/layer.rb
153
+ - lib/terraspace_plugin_aws/interfaces/summary.rb
147
154
  - lib/terraspace_plugin_aws/version.rb
148
155
  - terraspace_plugin_aws.gemspec
149
156
  homepage: https://github.com/boltops-tools/terraspace_plugin_aws
@@ -1,9 +0,0 @@
1
- terraform {
2
- backend "s3" {
3
- bucket = "<%%= backend_expand("s3", "terraform-state-:ACCOUNT-:REGION-:ENV") %>" # expanded by terraspace IE: terraform-state-112233445566-us-west-2-dev
4
- key = "<%%= backend_expand("s3", ":REGION/:ENV/:BUILD_DIR/terraform.tfstate") %>" # expanded by terraspace IE: us-west-2/dev/modules/vm/terraform.tfstate
5
- region = "<%%= backend_expand("s3", ":REGION") %>"
6
- encrypt = true
7
- dynamodb_table = "terraform_locks"
8
- }
9
- }