tfctl 1.2.2 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1825dfe2e3683c1ef8444460e5cd7baedde7424ec60de056a7a3351e69ad380
4
- data.tar.gz: db929e7c2323d42c99719610e18bf5ef17277521ff69985b668e6f26ca71feea
3
+ metadata.gz: 7862426153b20908c7f418711505fc0192a1ea61f5edcc5ac1aa71d69190a8a6
4
+ data.tar.gz: c2d6272043b02a506316143a4ad9f9f61c811609092a2642e64fb3dcfaf09472
5
5
  SHA512:
6
- metadata.gz: 7288eadc3e15802584060d055a2dd51fa34aae5fe0fba8d4eefd69d3e654fa0bcdef3c05b9a410891f31b4b3f9564301350d6298f7fcdbdf175deef9ac236a74
7
- data.tar.gz: c9515472d66fb6d6f423aaf2d01504901a2e42acf47aa6d59919d7737dc37f2817436e5364241afca523cd70cccf2082d0e791573aabb9ff55b3da42fcd760c2
6
+ metadata.gz: b35eb69b4a65c422e025dc02761c52947824b656d7bdd12eafe88ca214b1e11ca68b27b27edf7b0fb73002a4cdfe80e6c714b46c2957b9548ac26feb910040a5
7
+ data.tar.gz: 57ea113b1384c4b6ea77af357eb647fbf1362d06bb438b111dca1037479a66d3c9b5d294f1e375fae8e4fe9d53c6df3d093d6d2df40683b86bc21a795ed13a3d
data/.bundle/config ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ BUNDLE_PATH: "vendor/bundle"
3
+ BUNDLE_BIN: "vendor/bin"
4
+ BUNDLE_WITH: "developement"
@@ -0,0 +1,7 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ open-pull-requests-limit: 10
@@ -0,0 +1,17 @@
1
+ name: Linting
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+ branches: [ master ]
7
+
8
+ jobs:
9
+ lint:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ - uses: ruby/setup-ruby@v1
14
+ with:
15
+ ruby-version: 3.0
16
+ - name: Rubocop
17
+ run: make rubocop
@@ -0,0 +1,36 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ jobs:
9
+ publish:
10
+ name: Build + Publish
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - name: Set up Ruby 2.6
15
+ uses: ruby/setup-ruby@v1
16
+ with:
17
+ ruby-version: 2.6
18
+ - name: Build gem
19
+ run: make pkg
20
+ - name: Publish to RubyGems
21
+ run: |
22
+ mkdir -p $HOME/.gem
23
+ touch $HOME/.gem/credentials
24
+ chmod 0600 $HOME/.gem/credentials
25
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
26
+ gem push pkg/*.gem
27
+ env:
28
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
29
+ - name: Release on GitHub
30
+ uses: ncipollo/release-action@v1
31
+ with:
32
+ body: 'See [CHANGELOG](https://github.com/scalefactory/tfctl/blob/master/CHANGELOG.adoc) for details.'
33
+ token: "${{ secrets.GITHUB_TOKEN }}"
34
+ draft: false
35
+ prerelease: false
36
+ artifacts: pkg/*.gem
@@ -0,0 +1,23 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ rspec:
11
+ runs-on: ${{ matrix.os }}-latest
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ os: [ubuntu, macos]
16
+ ruby: [2.6, 2.7, 3.0]
17
+ continue-on-error: ${{ endsWith(matrix.ruby, 'head') || matrix.ruby == 'debug' }}
18
+ steps:
19
+ - uses: actions/checkout@v2
20
+ - uses: ruby/setup-ruby@v1
21
+ with:
22
+ ruby-version: ${{ matrix.ruby }}
23
+ - run: make spec
data/.gitignore CHANGED
@@ -4,7 +4,6 @@
4
4
  pkg/
5
5
  *.gem
6
6
  vendor/
7
- .bundle
8
7
  bin/bundle
9
8
  bin/htmldiff
10
9
  bin/ldiff
data/.rubocop.yml CHANGED
@@ -2,6 +2,7 @@
2
2
  AllCops:
3
3
  TargetRubyVersion: 2.5
4
4
  DisplayCopNames: true
5
+ NewCops: enable
5
6
 
6
7
  Layout/IndentationWidth:
7
8
  Width: 4
data/CHANGELOG.adoc CHANGED
@@ -1,6 +1,43 @@
1
1
  = Changelog
2
2
 
3
- == Upcoming
3
+ == 1.6.0
4
+
5
+ * fix: pass the default AWS provider explicitly from tfctl generated configuration.
6
+ This fixes provider inheritance issues when using multiple providers which
7
+ was introduced in 1.3.0. You may need to add a terraform block with
8
+ `required_provides` to your profiles if you don't have it defined already.
9
+ Terraform will warn about this during `init`. Here's an example block:
10
+
11
+ ----
12
+ terraform {
13
+ required_providers {
14
+ aws = {
15
+ source = "hashicorp/aws"
16
+ }
17
+ }
18
+ }
19
+ ----
20
+
21
+ == 1.5.0
22
+
23
+ * feat: support for setting default tags at AWS provider level. (Thanks @patrickli)
24
+ For details see: https://www.hashicorp.com/blog/default-tags-in-the-terraform-aws-provider
25
+ * feat: new `tf_state_prefix` config parameter. (Thanks @patrickli)
26
+ Allows setting an path prefix for state files stored in S3.
27
+ * feat: print version number in output log
28
+
29
+ == 1.4.0
30
+
31
+ * feat: support yaml anchors and aliases in configuration file.
32
+
33
+ == 1.3.0
34
+
35
+ * feat: support new Terraform provider syntax
36
+
37
+ BREAKING CHANGE: The minimum supported Terraform version has been bumped to
38
+ 0.12.29. If you are running an older version of Terraform you will need to
39
+ update to the latest Terraform in 0.12.x series before updating tfctl. Once
40
+ tfctl is updated you can upgrade Terraform to further versions.
4
41
 
5
42
  == 1.2.2
6
43
  * chore: reverted PR #11 - not necessary and introduced regression. See PR #13 for details.
data/Makefile CHANGED
@@ -2,7 +2,8 @@
2
2
 
3
3
  vendor:
4
4
  $(info => Installing Ruby dependencies)
5
- @bundle install --path vendor --with developement --binstubs=vendor/bin
5
+ @bundle install
6
+ @bundle binstubs --all --path vendor/bin
6
7
 
7
8
  test: vendor rubocop spec
8
9
 
@@ -10,11 +11,11 @@ guard: vendor
10
11
  $(info => Starting guard)
11
12
  @bundle exec guard
12
13
 
13
- rubocop:
14
+ rubocop: vendor
14
15
  $(info => Running rubocop)
15
16
  @vendor/bin/rubocop
16
17
 
17
- spec:
18
+ spec: vendor
18
19
  $(info => Running spec tests)
19
20
  @vendor/bin/rspec
20
21
 
@@ -31,6 +32,5 @@ clean:
31
32
  $(info => Cleaning)
32
33
  @rm -rf pkg/
33
34
  @rm -rf vendor/
34
- @rm -rf .bundle
35
35
  @rm -f Gemfile.lock
36
36
  @rm -rf spec/reports/
data/README.adoc CHANGED
@@ -20,7 +20,8 @@ endif::[]
20
20
 
21
21
  = tfctl
22
22
 
23
- image:https://travis-ci.org/scalefactory/tfctl.svg?branch=master["Build Status", link="https://travis-ci.org/scalefactory/tfctl"]
23
+ image:https://github.com/scalefactory/tfctl/actions/workflows/linter.yml/badge.svg["Linter", link="https://github.com/scalefactory/tfctl/actions/workflows/linter.yml"]
24
+ image:https://github.com/scalefactory/tfctl/actions/workflows/test.yml/badge.svg["Tests", link="https://github.com/scalefactory/tfctl/actions/workflows/test.yml"]
24
25
  image:https://badge.fury.io/rb/tfctl.svg["Gem Version", link="https://badge.fury.io/rb/tfctl"]
25
26
  image:https://img.shields.io/badge/terraform-0.12-blue.svg["Terraform 0.12", link="https://img.shields.io/badge/terraform-0.12-blue"]
26
27
 
@@ -42,6 +43,23 @@ https://aws.amazon.com/solutions/aws-landing-zone/[AWS Landing Zone] and
42
43
  https://aws.amazon.com/controltower/[Control Tower] but should work with most
43
44
  other ways of managing accounts in AWS Organizations.
44
45
 
46
+ == Project status
47
+
48
+ `tfctl` is an open source project published by The Scale Factory.
49
+
50
+ We currently consider this project to be maintained but we don't actively
51
+ develop new features. We keep it security patched and ready for use in
52
+ production environments.
53
+
54
+ We’ll take a look at any issues or PRs you open and get back to you as soon as
55
+ we can. We don’t offer any formal SLA, but we’ll be checking on this project
56
+ periodically.
57
+
58
+ If your issue is urgent, you can flag it as such, and we’ll attempt to triage
59
+ appropriately, but we have paying customers who also have demands on our time.
60
+ If your business depends on this project and you have an urgent problem, then
61
+ you can talk to our sales team about paying us to support you.
62
+
45
63
  == Features
46
64
 
47
65
  * Discovers AWS accounts automatically.
@@ -57,8 +75,8 @@ other ways of managing accounts in AWS Organizations.
57
75
 
58
76
  == Requirements
59
77
 
60
- * Terraform >= 0.12
61
- * Ruby >= 2.4
78
+ * Terraform >= 0.12.29
79
+ * Ruby >= 2.5
62
80
  * Accounts managed in AWS Organizations (by Landing Zone, Control Tower, some
63
81
  other means)
64
82
 
data/RELEASING.adoc ADDED
@@ -0,0 +1,19 @@
1
+ = Releasing
2
+
3
+ This document is aimed at `tfctl` maintainers and describes the process of
4
+ releasing a new gem version.
5
+
6
+ == Process
7
+
8
+ * Smoke test in SF test accounts: https://github.com/scalefactory/tfctl-test
9
+ * Bump version in `lib/tfctl/version.rb`.
10
+ * Update `CHANGELOG.adoc`.
11
+ * Commit.
12
+ * Tag the release using format: vX.X.X and push the tag.
13
+
14
+ ----
15
+ git tag vX.X.X
16
+ git push origin vX.X.X
17
+ ----
18
+
19
+ * GitHub actions will build and release the gem and create a GitHub release automatically.
data/bin/tfctl CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- if File.directory?(File.dirname(__FILE__) + '/../vendor')
4
+ if File.directory?("#{File.dirname(__FILE__)}/../vendor")
5
5
  require 'bundler/setup'
6
6
  end
7
7
  require 'optparse'
@@ -81,8 +81,8 @@ begin
81
81
  targetting_opts = %i[account ou all]
82
82
  targets_set = []
83
83
  options.each do |k, v|
84
- if targetting_opts.include?(k)
85
- targets_set << k.to_s unless v.nil?
84
+ if targetting_opts.include?(k) and !v.nil?
85
+ targets_set << k.to_s
86
86
  end
87
87
  end
88
88
  if targets_set.length > 1
@@ -138,7 +138,7 @@ begin
138
138
  log_level = options[:debug] ? Logger::DEBUG : Logger::INFO
139
139
  log = Tfctl::Logger.new(log_level)
140
140
 
141
- log.info 'tfctl running'
141
+ log.info "tfctl #{Tfctl::VERSION} running"
142
142
 
143
143
  config_name = File.basename(options[:config_file]).chomp('.yaml')
144
144
  config_name = 'default' if config_name == 'tfctl'
@@ -146,7 +146,7 @@ begin
146
146
 
147
147
  log.info 'Working out AWS account topology'
148
148
 
149
- yaml_config = YAML.safe_load(File.read(options[:config_file]))
149
+ yaml_config = YAML.safe_load(File.read(options[:config_file]), aliases: true)
150
150
  Tfctl::Schema.validate(yaml_config)
151
151
  yaml_config.symbolize_names!
152
152
 
@@ -2,3 +2,7 @@ resource aws_s3_bucket bucket {
2
2
  bucket = var.name
3
3
  acl = "private"
4
4
  }
5
+
6
+ output "arn" {
7
+ value = aws_s3_bucket.bucket.arn
8
+ }
@@ -1,4 +1,11 @@
1
+ resource "random_pet" "bucket_prefix" {
2
+ }
3
+
1
4
  module "bucket" {
2
5
  source = "../../modules/s3-bucket"
3
- name = "${local.account_id}-${local.account["example_bucket_name"]}"
6
+ name = "${random_pet.bucket_prefix.id}-${local.account["data"]["example_bucket_name"]}"
7
+ }
8
+
9
+ output "bucket_arn" {
10
+ value = module.bucket.arn
4
11
  }
@@ -0,0 +1,7 @@
1
+ terraform {
2
+ required_providers {
3
+ aws = {
4
+ source = "hashicorp/aws"
5
+ }
6
+ }
7
+ }
@@ -6,7 +6,7 @@ variable "config" {
6
6
 
7
7
  locals {
8
8
  config = jsondecode(var.config)
9
- account_id = "${data.aws_caller_identity.current.account_id}"
10
- # get current account configuration from tfctl config
11
- account = [ for account in local.config["accounts"]: account if account["id"] == local.account_id ][0]
9
+ account_id = data.aws_caller_identity.current.account_id
10
+ # get account configuration from tfctl config
11
+ account = [for account in local.config["accounts"] : account if account["id"] == local.account_id][0]
12
12
  }
@@ -5,7 +5,7 @@
5
5
  # create final configuration used by tfctl. You can view the merged
6
6
  # configuration by running:
7
7
  #
8
- # tfctl -c conf/example.yaml -s
8
+ # tfctl -c conf/tfctl.yaml -s
9
9
  #
10
10
 
11
11
  #
@@ -13,15 +13,17 @@
13
13
  #
14
14
 
15
15
  tf_state_bucket: 'CHANGEME'
16
+ # tf_state_prefix: ''
16
17
  tf_state_dynamodb_table: 'terraform-lock'
17
18
  tf_state_region: 'eu-west-1'
18
19
  # Role for accessing state resources
19
20
  tf_state_role_arn: 'arn:aws:iam::SHARED_SERVICES_ACCOUNT_ID:role/TerraformStateRole'
20
- tf_required_version: '>= 0.12.0'
21
+ tf_required_version: '>= 0.12.29'
21
22
  aws_provider_version: '>= 2.14'
22
23
  # Role used by tfctl to retrieve data from AWS Organizations
23
24
  # Has to be set up in the primary org account
24
25
  tfctl_role_arn: 'arn:aws:iam::PRIMARY_ACCOUNT_ID:role/TfctlRole'
26
+ # default_tags: {}
25
27
 
26
28
  #
27
29
  # Data
data/lib/hash.rb CHANGED
@@ -18,13 +18,14 @@ class Hash
18
18
  merge(second.to_h, &merger)
19
19
  end
20
20
 
21
- # Copied from ruby 2.6 Psych for 2.3 compatibility.
22
21
  def symbolize_names!(result = self)
23
22
  case result
24
23
  when Hash
24
+ # rubocop:disable Style/HashEachMethods
25
25
  result.keys.each do |key|
26
26
  result[key.to_sym] = symbolize_names!(result.delete(key))
27
27
  end
28
+ # rubocop:enable Style/HashEachMethods
28
29
  when Array
29
30
  result.map! { |r| symbolize_names!(r) }
30
31
  end
data/lib/tfctl.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'tfctl/aws_org.rb'
4
- require_relative 'tfctl/config.rb'
5
- require_relative 'tfctl/error.rb'
6
- require_relative 'tfctl/executor.rb'
7
- require_relative 'tfctl/generator.rb'
8
- require_relative 'tfctl/logger.rb'
9
- require_relative 'tfctl/schema.rb'
10
- require_relative 'tfctl/version.rb'
3
+ require_relative 'tfctl/aws_org'
4
+ require_relative 'tfctl/config'
5
+ require_relative 'tfctl/error'
6
+ require_relative 'tfctl/executor'
7
+ require_relative 'tfctl/generator'
8
+ require_relative 'tfctl/logger'
9
+ require_relative 'tfctl/schema'
10
+ require_relative 'tfctl/version'
data/lib/tfctl/aws_org.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'error.rb'
3
+ require_relative 'error'
4
4
  require 'aws-sdk-organizations'
5
5
 
6
6
  module Tfctl
data/lib/tfctl/config.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../hash.rb'
4
- require_relative 'error.rb'
3
+ require_relative '../hash'
4
+ require_relative 'error'
5
5
  require 'yaml'
6
6
  require 'json'
7
7
 
@@ -121,7 +121,9 @@ module Tfctl
121
121
  return config unless config.key?(:exclude_accounts)
122
122
 
123
123
  config[:accounts].each_with_index do |account, idx|
124
+ # rubocop:disable Style/IfWithBooleanLiteralBranches
124
125
  config[:accounts][idx][:excluded] = config[:exclude_accounts].include?(account[:name]) ? true : false
126
+ # rubocop:enable Style/IfWithBooleanLiteralBranches
125
127
  end
126
128
 
127
129
  config
@@ -3,7 +3,7 @@
3
3
  require 'open3'
4
4
  require 'fileutils'
5
5
  require 'shellwords'
6
- require_relative 'error.rb'
6
+ require_relative 'error'
7
7
 
8
8
  module Tfctl
9
9
  module Executor
@@ -10,24 +10,31 @@ module Tfctl
10
10
 
11
11
  def write_json_block(path, block)
12
12
  File.open(path, 'w') do |f|
13
- f.write(JSON.pretty_generate(block) + "\n")
13
+ f.write("#{JSON.pretty_generate(block)}\n")
14
14
  end
15
15
  end
16
16
 
17
17
  def make(account:, config:)
18
18
  target_dir = "#{PROJECT_ROOT}/.tfctl/#{config[:config_name]}/#{account[:name]}"
19
- tf_version = config.fetch(:tf_required_version, '>= 0.12.0')
19
+ tf_state_prefix = config.fetch(:tf_state_prefix, '').delete_suffix('/')
20
+ tf_version = config.fetch(:tf_required_version, '>= 0.12.29')
20
21
  aws_provider_version = config.fetch(:aws_provider_version, '>= 2.14')
21
22
 
22
23
  FileUtils.mkdir_p target_dir
23
24
 
24
25
  terraform_block = {
25
26
  'terraform' => {
26
- 'required_version' => tf_version,
27
- 'backend' => {
27
+ 'required_version' => tf_version,
28
+ 'required_providers' => {
29
+ 'aws' => {
30
+ 'source' => 'hashicorp/aws',
31
+ 'version' => aws_provider_version,
32
+ },
33
+ },
34
+ 'backend' => {
28
35
  's3' => {
29
36
  'bucket' => config[:tf_state_bucket],
30
- 'key' => "#{account[:name]}/tfstate",
37
+ 'key' => [tf_state_prefix, account[:name], 'tfstate'].join('/').delete_prefix('/'),
31
38
  'region' => config[:tf_state_region],
32
39
  'role_arn' => config[:tf_state_role_arn],
33
40
  'dynamodb_table' => config[:tf_state_dynamodb_table],
@@ -41,11 +48,13 @@ module Tfctl
41
48
  provider_block = {
42
49
  'provider' => {
43
50
  'aws' => {
44
- 'version' => aws_provider_version,
45
- 'region' => account[:region],
46
- 'assume_role' => {
51
+ 'region' => account[:region],
52
+ 'assume_role' => {
47
53
  'role_arn' => "arn:aws:iam::#{account[:id]}:role/#{account[:tf_execution_role]}",
48
54
  },
55
+ 'default_tags' => {
56
+ 'tags' => config.fetch(:default_tags, {}),
57
+ },
49
58
  },
50
59
  },
51
60
  }
data/lib/tfctl/logger.rb CHANGED
@@ -6,7 +6,7 @@ module Tfctl
6
6
  class Logger
7
7
 
8
8
  def initialize(log_level)
9
- @outlog = ::Logger.new(STDOUT)
9
+ @outlog = ::Logger.new($stdout)
10
10
 
11
11
  self.level = log_level
12
12
 
data/lib/tfctl/schema.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'json_schemer'
4
- require_relative 'error.rb'
4
+ require_relative 'error'
5
5
 
6
6
  # Config validator using JSON schema
7
7
 
@@ -34,6 +34,7 @@ module Tfctl
34
34
  'type' => 'object',
35
35
  'properties' => {
36
36
  'tf_state_bucket' => { 'type' => 'string' },
37
+ 'tf_state_prefix' => { 'type' => 'string' },
37
38
  'tf_state_role_arn' => {
38
39
  'type' => 'string',
39
40
  'pattern' => iam_arn_pattern,
@@ -48,6 +49,7 @@ module Tfctl
48
49
  },
49
50
  'data' => { 'type' => 'object' },
50
51
  'exclude_accounts' => { 'type' => 'array' },
52
+ 'default_tags' => { 'type' => 'object' },
51
53
  'organization_root' => org_schema,
52
54
  'organization_units' => org_schema,
53
55
  'account_overrides' => org_schema,
data/lib/tfctl/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tfctl
4
- VERSION = '1.2.2'
4
+ VERSION = '1.6.0'
5
5
  end
data/tfctl.gemspec CHANGED
@@ -30,9 +30,10 @@ Gem::Specification.new do |spec|
30
30
  spec.add_dependency 'aws-sdk-organizations', '~> 1.40'
31
31
  spec.add_dependency 'json_schemer', '~> 0.2'
32
32
  spec.add_dependency 'parallel', '~> 1.19'
33
- spec.add_dependency 'terminal-table', '~> 1.8'
33
+ spec.add_dependency 'terminal-table', '>= 1.8', '< 4.0'
34
34
 
35
- spec.add_development_dependency 'guard-rspec', '~> 4.7'
36
- spec.add_development_dependency 'rspec', '~> 3.9'
37
- spec.add_development_dependency 'rubocop', '~> 0.84'
35
+ spec.add_development_dependency 'guard-rspec', '~> 4.7'
36
+ spec.add_development_dependency 'rspec', '~> 3.9'
37
+ spec.add_development_dependency 'rubocop', '~> 1.3'
38
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.2'
38
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tfctl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Wasilczuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-01 00:00:00.000000000 Z
11
+ date: 2021-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-organizations
@@ -56,16 +56,22 @@ dependencies:
56
56
  name: terminal-table
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.8'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '4.0'
62
65
  type: :runtime
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
65
68
  requirements:
66
- - - "~>"
69
+ - - ">="
67
70
  - !ruby/object:Gem::Version
68
71
  version: '1.8'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '4.0'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: guard-rspec
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +106,28 @@ dependencies:
100
106
  requirements:
101
107
  - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: '0.84'
109
+ version: '1.3'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '1.3'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rubocop-rspec
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '2.2'
104
124
  type: :development
105
125
  prerelease: false
106
126
  version_requirements: !ruby/object:Gem::Requirement
107
127
  requirements:
108
128
  - - "~>"
109
129
  - !ruby/object:Gem::Version
110
- version: '0.84'
130
+ version: '2.2'
111
131
  description:
112
132
  email:
113
133
  - akw@scalefactory.com
@@ -116,16 +136,21 @@ executables:
116
136
  extensions: []
117
137
  extra_rdoc_files: []
118
138
  files:
139
+ - ".bundle/config"
140
+ - ".github/dependabot.yml"
141
+ - ".github/workflows/linter.yml"
142
+ - ".github/workflows/release.yml"
143
+ - ".github/workflows/test.yml"
119
144
  - ".gitignore"
120
145
  - ".rspec"
121
146
  - ".rubocop.yml"
122
- - ".travis.yml"
123
147
  - CHANGELOG.adoc
124
148
  - Gemfile
125
149
  - Guardfile
126
150
  - LICENSE
127
151
  - Makefile
128
152
  - README.adoc
153
+ - RELEASING.adoc
129
154
  - bin/tfctl
130
155
  - docs/configuration.adoc
131
156
  - docs/control_tower.adoc
@@ -139,6 +164,7 @@ files:
139
164
  - examples/control_tower/modules/s3-bucket/variables.tf
140
165
  - examples/control_tower/profiles/example-profile/data.tf
141
166
  - examples/control_tower/profiles/example-profile/main.tf
167
+ - examples/control_tower/profiles/example-profile/terraform.tf
142
168
  - examples/control_tower/profiles/example-profile/variables.tf
143
169
  - examples/control_tower/tfctl.yaml
144
170
  - lib/hash.rb
@@ -171,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
197
  - !ruby/object:Gem::Version
172
198
  version: '0'
173
199
  requirements: []
174
- rubygems_version: 3.0.8
200
+ rubygems_version: 3.0.3.1
175
201
  signing_key:
176
202
  specification_version: 4
177
203
  summary: Terraform wrapper for managing multi-account AWS infrastructures
data/.travis.yml DELETED
@@ -1,19 +0,0 @@
1
- rvm:
2
- - 2.5
3
- - 2.6
4
- - 2.7
5
- os: linux
6
- language: ruby
7
- script: make test
8
- jobs:
9
- include:
10
- - stage: Gem release
11
- rvm: 2.6
12
- deploy:
13
- provider: rubygems
14
- api_key:
15
- secure: LAVcdER+LtQ2TSUrVOY7Be1BC7GXJRD0QBt386vRM5Nld5QaD9Ow9gtN6FprzkzloI4R8BkPWqZbAT6YjC+C0AFB5HK6iPwD2bLsiF9w3ccDD+yrW99RHxiErpmYMun2PqZv0WkJ/pkEplPCKMRFv7SM7W9DMRlU7dsXc1v6IVyIb5u3A04jErS2jXXKY0ijlCDJYVo8zzYL6yUmUcXhc//3CIVnu2Miu6Qr8h7e6jMXNUWfMkwEXsFP9id4TsCz7hRY+39PkiBAknHTN5UqjjJiEOknZnHeTBcVPvi2h2xv+fFLSzVTxlxaRsVoMCShQp5D12qzhQObRJsRVQFs8Yyg9IYMyPdxssFYyUZFaAy5taWDm57uM3HTHylm/Dq3LmXTgGNxWUUkf2oh1g7R6cYZpBUQwiEPzhZQ7CoBQbGUAJmH9ZU9m+cr8kuAOUipd6BNEDvn/fIH4WJsRCNP72JGX16JBpuICvpkuNhskZT91xFlYk1pTXHOxNpbTcxUTgMHhrTqspeRXPmf6DiYGvjMb2S6kaoGqCIRIcwl0TGKuMsOMqR9SqF8gubkqHMVbSl1E7mwBn4ke8/7IGoMkWOGwUpVxqVOLBHi6zSR09RTVSbKl4oiFV3ZwmVPSxDncq54MptyJ2WCZ7dD6ht2l+VA8iGwYeIoqOpwGWxyuNI=
16
- gem: tfctl
17
- on:
18
- tags: true
19
- repo: scalefactory/tfctl