yle_tf 1.0.0 → 1.4.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 +4 -4
- data/bin/tf +1 -0
- data/lib/yle_tf.rb +4 -0
- data/lib/yle_tf/action.rb +4 -0
- data/lib/yle_tf/action/builder.rb +2 -0
- data/lib/yle_tf/action/command.rb +4 -2
- data/lib/yle_tf/action/copy_root_module.rb +2 -0
- data/lib/yle_tf/action/generate_vars_file.rb +2 -0
- data/lib/yle_tf/action/load_config.rb +9 -1
- data/lib/yle_tf/action/terraform_init.rb +63 -32
- data/lib/yle_tf/action/tf_hooks.rb +9 -5
- data/lib/yle_tf/action/tmpdir.rb +3 -1
- data/lib/yle_tf/action/verify_terraform_version.rb +19 -6
- data/lib/yle_tf/action/verify_tf_env.rb +2 -0
- data/lib/yle_tf/action/verify_yle_tf_version.rb +36 -0
- data/lib/yle_tf/action/write_terraformrc_defaults.rb +34 -17
- data/lib/yle_tf/backend.rb +47 -0
- data/lib/yle_tf/cli.rb +3 -1
- data/lib/yle_tf/config.rb +25 -9
- data/lib/yle_tf/config/defaults.rb +25 -11
- data/lib/yle_tf/config/erb.rb +2 -0
- data/lib/yle_tf/config/file.rb +2 -0
- data/lib/yle_tf/config/loader.rb +89 -59
- data/lib/yle_tf/config/migration.rb +117 -0
- data/lib/yle_tf/error.rb +2 -0
- data/lib/yle_tf/helpers/hash.rb +22 -0
- data/lib/yle_tf/logger.rb +2 -10
- data/lib/yle_tf/logger/colorize.rb +2 -0
- data/lib/yle_tf/plugin.rb +6 -2
- data/lib/yle_tf/plugin/action_hook.rb +2 -0
- data/lib/yle_tf/plugin/loader.rb +8 -1
- data/lib/yle_tf/plugin/manager.rb +3 -0
- data/lib/yle_tf/system.rb +5 -2
- data/lib/yle_tf/system/io_handlers.rb +5 -1
- data/lib/yle_tf/system/output_logger.rb +2 -0
- data/lib/yle_tf/system/tf_hook_output_logger.rb +2 -0
- data/lib/yle_tf/tf_hook.rb +11 -9
- data/lib/yle_tf/tf_hook/runner.rb +2 -0
- data/lib/yle_tf/vars_file.rb +16 -3
- data/lib/yle_tf/version.rb +3 -1
- data/lib/yle_tf/version_requirement.rb +2 -5
- data/lib/yle_tf_plugins/backends/{s3 → __default}/plugin.rb +6 -4
- data/lib/yle_tf_plugins/backends/file/backend.rb +89 -0
- data/lib/yle_tf_plugins/backends/file/plugin.rb +4 -2
- data/lib/yle_tf_plugins/commands/__default/command.rb +2 -0
- data/lib/yle_tf_plugins/commands/__default/plugin.rb +2 -0
- data/lib/yle_tf_plugins/commands/_config/command.rb +2 -0
- data/lib/yle_tf_plugins/commands/_config/plugin.rb +2 -0
- data/lib/yle_tf_plugins/commands/_shell/command.rb +2 -0
- data/lib/yle_tf_plugins/commands/_shell/plugin.rb +2 -0
- data/lib/yle_tf_plugins/commands/help/command.rb +9 -20
- data/lib/yle_tf_plugins/commands/help/plugin.rb +2 -0
- data/lib/yle_tf_plugins/commands/version/command.rb +2 -0
- data/lib/yle_tf_plugins/commands/version/plugin.rb +2 -0
- metadata +61 -22
- data/lib/yle_tf/backend_config.rb +0 -41
- data/lib/yle_tf_plugins/backends/file/command.rb +0 -31
- data/lib/yle_tf_plugins/backends/file/config.rb +0 -17
- data/lib/yle_tf_plugins/backends/s3/command.rb +0 -19
- data/lib/yle_tf_plugins/backends/swift/command.rb +0 -18
- data/lib/yle_tf_plugins/backends/swift/plugin.rb +0 -16
- data/vendor/logger_level_patch.rb +0 -29
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'yle_tf'
|
2
4
|
|
3
5
|
module YleTfPlugins
|
@@ -7,8 +9,8 @@ module YleTfPlugins
|
|
7
9
|
register
|
8
10
|
|
9
11
|
backend('file') do
|
10
|
-
require_relative '
|
11
|
-
|
12
|
+
require_relative 'backend'
|
13
|
+
Backend
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,6 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'optparse'
|
2
4
|
|
3
|
-
require 'yle_tf/system'
|
4
5
|
require 'yle_tf/plugin'
|
5
6
|
|
6
7
|
module YleTfPlugins
|
@@ -18,18 +19,17 @@ module YleTfPlugins
|
|
18
19
|
o.banner = 'Usage: tf <environment> <command> [<args>]'
|
19
20
|
o.separator ''
|
20
21
|
o.separator 'YleTf options:'
|
21
|
-
o.on('-h', '--help',
|
22
|
+
o.on('-h', '--help', 'Prints this help')
|
22
23
|
o.on('-v', '--version', 'Prints the version information')
|
23
|
-
o.on('--debug',
|
24
|
-
o.on('--no-color',
|
25
|
-
o.on('--no-hooks',
|
26
|
-
o.on('--only-hooks',
|
24
|
+
o.on('--debug', 'Print debug information')
|
25
|
+
o.on('--no-color', 'Do not output with colors')
|
26
|
+
o.on('--no-hooks', 'Do not run any hooks')
|
27
|
+
o.on('--only-hooks', 'Only run the hooks')
|
27
28
|
o.separator ''
|
28
|
-
o.separator 'Special
|
29
|
+
o.separator 'Special YleTf commands:'
|
29
30
|
o.separator tf_command_help
|
30
31
|
o.separator ''
|
31
|
-
o.separator 'Terraform commands
|
32
|
-
o.separator terraform_help
|
32
|
+
o.separator 'Run `terraform -help` to get list of all Terraform commands.'
|
33
33
|
end
|
34
34
|
end
|
35
35
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
@@ -47,17 +47,6 @@ module YleTfPlugins
|
|
47
47
|
" #{command.ljust(18)} #{data[:synopsis]}"
|
48
48
|
end
|
49
49
|
end
|
50
|
-
|
51
|
-
def terraform_help
|
52
|
-
on_error = proc do |exit_code|
|
53
|
-
# exit_code is nil if the command was not found
|
54
|
-
# Ignore other exit codes, as older Terraform versions return
|
55
|
-
# non-zero exit codes for the help.
|
56
|
-
return ' [Terraform not found]' if exit_code.nil?
|
57
|
-
end
|
58
|
-
help = YleTf::System.read_cmd('terraform', '--help', error_handler: on_error)
|
59
|
-
help.lines.grep(/^ /)
|
60
|
-
end
|
61
50
|
end
|
62
51
|
end
|
63
52
|
end
|
metadata
CHANGED
@@ -1,59 +1,101 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yle_tf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yleisradio
|
8
8
|
- Teemu Matilainen
|
9
9
|
- Antti Forsell
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-01-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: thwait
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.2.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 0.2.0
|
15
29
|
- !ruby/object:Gem::Dependency
|
16
30
|
name: bundler
|
17
31
|
requirement: !ruby/object:Gem::Requirement
|
18
32
|
requirements:
|
19
33
|
- - "~>"
|
20
34
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
35
|
+
version: '2.0'
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '2.0'
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: guard-rspec
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '4.7'
|
22
50
|
type: :development
|
23
51
|
prerelease: false
|
24
52
|
version_requirements: !ruby/object:Gem::Requirement
|
25
53
|
requirements:
|
26
54
|
- - "~>"
|
27
55
|
- !ruby/object:Gem::Version
|
28
|
-
version: '
|
56
|
+
version: '4.7'
|
29
57
|
- !ruby/object:Gem::Dependency
|
30
58
|
name: rake
|
31
59
|
requirement: !ruby/object:Gem::Requirement
|
32
60
|
requirements:
|
33
61
|
- - "~>"
|
34
62
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
63
|
+
version: '13.0'
|
36
64
|
type: :development
|
37
65
|
prerelease: false
|
38
66
|
version_requirements: !ruby/object:Gem::Requirement
|
39
67
|
requirements:
|
40
68
|
- - "~>"
|
41
69
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
70
|
+
version: '13.0'
|
43
71
|
- !ruby/object:Gem::Dependency
|
44
72
|
name: rspec
|
45
73
|
requirement: !ruby/object:Gem::Requirement
|
46
74
|
requirements:
|
47
75
|
- - "~>"
|
48
76
|
- !ruby/object:Gem::Version
|
49
|
-
version: '3.
|
77
|
+
version: '3.8'
|
78
|
+
type: :development
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '3.8'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: serverspec
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - "~>"
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '2.41'
|
50
92
|
type: :development
|
51
93
|
prerelease: false
|
52
94
|
version_requirements: !ruby/object:Gem::Requirement
|
53
95
|
requirements:
|
54
96
|
- - "~>"
|
55
97
|
- !ruby/object:Gem::Version
|
56
|
-
version: '
|
98
|
+
version: '2.41'
|
57
99
|
description: Tooling for Terraform to support environments, hooks, etc.
|
58
100
|
email:
|
59
101
|
- devops@yle.fi
|
@@ -77,15 +119,18 @@ files:
|
|
77
119
|
- lib/yle_tf/action/tmpdir.rb
|
78
120
|
- lib/yle_tf/action/verify_terraform_version.rb
|
79
121
|
- lib/yle_tf/action/verify_tf_env.rb
|
122
|
+
- lib/yle_tf/action/verify_yle_tf_version.rb
|
80
123
|
- lib/yle_tf/action/write_terraformrc_defaults.rb
|
81
|
-
- lib/yle_tf/
|
124
|
+
- lib/yle_tf/backend.rb
|
82
125
|
- lib/yle_tf/cli.rb
|
83
126
|
- lib/yle_tf/config.rb
|
84
127
|
- lib/yle_tf/config/defaults.rb
|
85
128
|
- lib/yle_tf/config/erb.rb
|
86
129
|
- lib/yle_tf/config/file.rb
|
87
130
|
- lib/yle_tf/config/loader.rb
|
131
|
+
- lib/yle_tf/config/migration.rb
|
88
132
|
- lib/yle_tf/error.rb
|
133
|
+
- lib/yle_tf/helpers/hash.rb
|
89
134
|
- lib/yle_tf/logger.rb
|
90
135
|
- lib/yle_tf/logger/colorize.rb
|
91
136
|
- lib/yle_tf/plugin.rb
|
@@ -101,13 +146,9 @@ files:
|
|
101
146
|
- lib/yle_tf/vars_file.rb
|
102
147
|
- lib/yle_tf/version.rb
|
103
148
|
- lib/yle_tf/version_requirement.rb
|
104
|
-
- lib/yle_tf_plugins/backends/
|
105
|
-
- lib/yle_tf_plugins/backends/file/
|
149
|
+
- lib/yle_tf_plugins/backends/__default/plugin.rb
|
150
|
+
- lib/yle_tf_plugins/backends/file/backend.rb
|
106
151
|
- lib/yle_tf_plugins/backends/file/plugin.rb
|
107
|
-
- lib/yle_tf_plugins/backends/s3/command.rb
|
108
|
-
- lib/yle_tf_plugins/backends/s3/plugin.rb
|
109
|
-
- lib/yle_tf_plugins/backends/swift/command.rb
|
110
|
-
- lib/yle_tf_plugins/backends/swift/plugin.rb
|
111
152
|
- lib/yle_tf_plugins/commands/__default/command.rb
|
112
153
|
- lib/yle_tf_plugins/commands/__default/plugin.rb
|
113
154
|
- lib/yle_tf_plugins/commands/_config/command.rb
|
@@ -119,7 +160,6 @@ files:
|
|
119
160
|
- lib/yle_tf_plugins/commands/version/command.rb
|
120
161
|
- lib/yle_tf_plugins/commands/version/plugin.rb
|
121
162
|
- vendor/hash_deep_merge.rb
|
122
|
-
- vendor/logger_level_patch.rb
|
123
163
|
- vendor/middleware/LICENSE
|
124
164
|
- vendor/middleware/builder.rb
|
125
165
|
- vendor/middleware/runner.rb
|
@@ -127,7 +167,7 @@ homepage: https://github.com/Yleisradio/yle_tf
|
|
127
167
|
licenses:
|
128
168
|
- MIT
|
129
169
|
metadata: {}
|
130
|
-
post_install_message:
|
170
|
+
post_install_message:
|
131
171
|
rdoc_options: []
|
132
172
|
require_paths:
|
133
173
|
- lib
|
@@ -135,16 +175,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
135
175
|
requirements:
|
136
176
|
- - ">="
|
137
177
|
- !ruby/object:Gem::Version
|
138
|
-
version: '2.
|
178
|
+
version: '2.3'
|
139
179
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
180
|
requirements:
|
141
181
|
- - ">="
|
142
182
|
- !ruby/object:Gem::Version
|
143
183
|
version: '0'
|
144
184
|
requirements: []
|
145
|
-
|
146
|
-
|
147
|
-
signing_key:
|
185
|
+
rubygems_version: 3.2.3
|
186
|
+
signing_key:
|
148
187
|
specification_version: 4
|
149
188
|
summary: Tooling for Terraform
|
150
189
|
test_files: []
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
|
-
class YleTf
|
4
|
-
class BackendConfig
|
5
|
-
BACKEND_CONFIG_FILE = '_backend.tf.json'.freeze
|
6
|
-
|
7
|
-
attr_reader :type, :config
|
8
|
-
|
9
|
-
def initialize(type, config)
|
10
|
-
@type = type
|
11
|
-
@config = config
|
12
|
-
end
|
13
|
-
|
14
|
-
# Returns an `Array` of CLI args for Terraform pre 0.9 `init` command
|
15
|
-
def cli_args
|
16
|
-
args = ["-backend=#{type}"]
|
17
|
-
config.each do |key, value|
|
18
|
-
args << "-backend-config=#{key}=#{value}"
|
19
|
-
end
|
20
|
-
args
|
21
|
-
end
|
22
|
-
|
23
|
-
# Generate backend configuration file for Terraform v0.9+
|
24
|
-
def generate_config
|
25
|
-
data = {
|
26
|
-
terraform: [{
|
27
|
-
backend: [to_h]
|
28
|
-
}]
|
29
|
-
}
|
30
|
-
File.write(BACKEND_CONFIG_FILE, JSON.pretty_generate(data))
|
31
|
-
yield if block_given?
|
32
|
-
end
|
33
|
-
|
34
|
-
# Returns the backend configuration as a `Hash` for Terraform v0.9+
|
35
|
-
def to_h
|
36
|
-
{ type => config }
|
37
|
-
end
|
38
|
-
|
39
|
-
alias to_s to_h
|
40
|
-
end
|
41
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require_relative 'config'
|
2
|
-
|
3
|
-
module YleTfPlugins
|
4
|
-
module Backends
|
5
|
-
module File
|
6
|
-
class Command
|
7
|
-
def backend_config(config)
|
8
|
-
local_path = Pathname.pwd.join('terraform.tfstate')
|
9
|
-
tfstate_path = tfstate_path(config)
|
10
|
-
|
11
|
-
YleTf::Logger.info("Symlinking state to '#{tfstate_path}'")
|
12
|
-
local_path.make_symlink(tfstate_path)
|
13
|
-
tfstate_path.write(tfstate_template, perm: 0o644) if !tfstate_path.exist?
|
14
|
-
|
15
|
-
Config.new(
|
16
|
-
'file',
|
17
|
-
'file' => tfstate_path.to_s
|
18
|
-
)
|
19
|
-
end
|
20
|
-
|
21
|
-
def tfstate_path(config)
|
22
|
-
config.module_dir.join(config.fetch('backend', 'file'))
|
23
|
-
end
|
24
|
-
|
25
|
-
def tfstate_template
|
26
|
-
'{"version": 1}'
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'yle_tf/backend_config'
|
2
|
-
|
3
|
-
module YleTfPlugins
|
4
|
-
module Backends
|
5
|
-
module S3
|
6
|
-
class Command
|
7
|
-
def backend_config(config)
|
8
|
-
YleTf::BackendConfig.new(
|
9
|
-
's3',
|
10
|
-
'region' => config.fetch('backend', 'region'),
|
11
|
-
'bucket' => config.fetch('backend', 'bucket'),
|
12
|
-
'key' => config.fetch('backend', 'file'),
|
13
|
-
'encrypt' => config.fetch('backend', 'encrypt')
|
14
|
-
)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'yle_tf/backend_config'
|
2
|
-
|
3
|
-
module YleTfPlugins
|
4
|
-
module Backends
|
5
|
-
module Swift
|
6
|
-
class Command
|
7
|
-
def backend_config(config)
|
8
|
-
YleTf::BackendConfig.new(
|
9
|
-
'swift',
|
10
|
-
'region_name' => config.fetch('backend', 'region'),
|
11
|
-
'container' => config.fetch('backend', 'container'),
|
12
|
-
'archive_container' => config.fetch('backend', 'archive_container') { nil }
|
13
|
-
)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|