tfctl 1.1.1 → 1.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b7a1d287bce54f0203c80b4814f67ddb3d5f38319796a185a69ccf1fe1b65f02
4
- data.tar.gz: 924e81046fde7a921f66959893429c10fbcffd8a3f32e1b6257cde2935c1b5d1
3
+ metadata.gz: 6a629291d80ced92fb46ec555c3eb0023b5b28defd031e457719f76a30bf9127
4
+ data.tar.gz: 2be23cc36e785f7fdae92c3717a7808b070549737682ecc26b02779b9cdc6489
5
5
  SHA512:
6
- metadata.gz: 044ad7209c428aa8c1f7eaf11258089ed6ce304a2943b79739ba1b8337fbd6487f4cda758c73acfc9de35f17fc272ef98d74fe64c274ea4d5e0112bc1749329b
7
- data.tar.gz: 22a221bb105a66c5b9512a604886eb458ff1ec2876ee8d3599f7c6c0cc5e6abb5fafd0d47aa2cd61fbc979b0ba5ca33a8f18a47a5afacfd27515ea5e333f0868
6
+ metadata.gz: 1a032960fc4809364bbe28cb85210713bc777b22d18c0041748c300c1e0a25fd01b4eb06bc242bfb880af10f3215c0776916ff32d80a40244d850eedaf514708
7
+ data.tar.gz: fb9337a42296df0fc17afe77f75cdb5a94c0d1569f94094d8b39d54e1e1b3beab1ba50976cafdebe90cacec5daac8e492ff610be2dd2f206ecbe0bb39f396e3c
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,35 @@
1
1
  = Changelog
2
2
 
3
- == Upcoming
3
+ == 1.5.0
4
+
5
+ * feat: support for setting default tags at AWS provider level. (Thanks @patrickli)
6
+ For details see: https://www.hashicorp.com/blog/default-tags-in-the-terraform-aws-provider
7
+ * feat: new `tf_state_prefix` config parameter. (Thanks @patrickli)
8
+ Allows setting an path prefix for state files stored in S3.
9
+ * feat: print version number in output log
10
+
11
+ == 1.4.0
12
+
13
+ * feat: support yaml anchors and aliases in configuration file.
14
+
15
+ == 1.3.0
16
+
17
+ * feat: support new Terraform provider syntax
18
+
19
+ BREAKING CHANGE: The minimum supported Terraform version has been bumped to
20
+ 0.12.29. If you are running an older version of Terraform you will need to
21
+ update to the latest Terraform in 0.12.x series before updating tfctl. Once
22
+ tfctl is updated you can upgrade Terraform to further versions.
23
+
24
+ == 1.2.2
25
+ * chore: reverted PR #11 - not necessary and introduced regression. See PR #13 for details.
26
+
27
+ == 1.2.1
28
+ * chore: added required Ruby version to Gemspec.
29
+
30
+ == 1.2.0
31
+
32
+ * feat: pass TF_ environment variables to terraform (PR #11).
4
33
 
5
34
  == 1.1.1
6
35
 
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
 
@@ -1,4 +1,4 @@
1
1
  module "bucket" {
2
2
  source = "../../modules/s3-bucket"
3
- name = "${local.account_id}-${local.account["example_bucket_name"]}"
3
+ name = "${local.account_id}-${local.account["data"]["example_bucket_name"]}"
4
4
  }
@@ -7,6 +7,6 @@ variable "config" {
7
7
  locals {
8
8
  config = jsondecode(var.config)
9
9
  account_id = "${data.aws_caller_identity.current.account_id}"
10
- # get current account configuration from tfctl config
10
+ # get account configuration from tfctl config
11
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
  }
@@ -71,11 +80,8 @@ module Tfctl
71
80
  profile_block = {
72
81
  'module' => {
73
82
  profile => {
74
- 'source' => "../../../profiles/#{profile}",
75
- 'config' => '${var.config}',
76
- 'providers' => {
77
- 'aws' => 'aws',
78
- },
83
+ 'source' => "../../../profiles/#{profile}",
84
+ 'config' => '${var.config}',
79
85
  },
80
86
  },
81
87
  }
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.1.1'
4
+ VERSION = '1.5.0'
5
5
  end
data/tfctl.gemspec CHANGED
@@ -23,14 +23,17 @@ Gem::Specification.new do |spec|
23
23
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
24
24
  spec.require_paths = ['lib']
25
25
 
26
+ spec.required_ruby_version = '>= 2.5.0'
27
+
26
28
  # Think when adding new dependencies. Is it really necessary?
27
29
  # "The things you own end up owning you" etc.
28
30
  spec.add_dependency 'aws-sdk-organizations', '~> 1.40'
29
31
  spec.add_dependency 'json_schemer', '~> 0.2'
30
32
  spec.add_dependency 'parallel', '~> 1.19'
31
- spec.add_dependency 'terminal-table', '~> 1.8'
33
+ spec.add_dependency 'terminal-table', '>= 1.8', '< 4.0'
32
34
 
33
- spec.add_development_dependency 'guard-rspec', '~> 4.7'
34
- spec.add_development_dependency 'rspec', '~> 3.9'
35
- 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'
36
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.1.1
4
+ version: 1.5.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-05-28 00:00:00.000000000 Z
11
+ date: 2021-06-30 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
@@ -164,15 +189,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
164
189
  requirements:
165
190
  - - ">="
166
191
  - !ruby/object:Gem::Version
167
- version: '0'
192
+ version: 2.5.0
168
193
  required_rubygems_version: !ruby/object:Gem::Requirement
169
194
  requirements:
170
195
  - - ">="
171
196
  - !ruby/object:Gem::Version
172
197
  version: '0'
173
198
  requirements: []
174
- rubyforge_project:
175
- rubygems_version: 2.7.7
199
+ rubygems_version: 3.0.3.1
176
200
  signing_key:
177
201
  specification_version: 4
178
202
  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