ruby-terraform 0.51.0.pre.1 → 0.51.0.pre.2
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/Gemfile.lock +16 -1
- data/Rakefile +101 -10
- data/config/secrets/ci/ssh.private +49 -49
- data/config/secrets/ci/ssh.public +14 -1
- data/config/secrets/github/config.yaml +3 -0
- data/lib/ruby_terraform/version.rb +1 -1
- data/rake/circleci.rb +47 -4
- data/ruby_terraform.gemspec +2 -0
- metadata +30 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cff48b117932b50d1b445d3b16a37667023415fc65e4b8ab2cf9f290cf79484c
|
4
|
+
data.tar.gz: 4d95ede4e7f14a6cd9f450a6c09c00168329ae3b7ebcb4b83da5d5adc532647c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19de637a5acaf2da3d7fdc88b010e12824084d45e264895a060b4005218cf7523c80cbed26bdcadde427fcff15f6883f80fabec5ade0f924523b404b4d0b33f9
|
7
|
+
data.tar.gz: e3a1dc2a9381648e8383d1c815e9996786588c7722c08b2749bdf4a7e476763a6f2c6035303d20ccb8d587a2db3a6258de1991348de2b8062dc6f404a13f9b01
|
data/Gemfile.lock
CHANGED
@@ -1,22 +1,31 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ruby-terraform (0.51.0.pre.
|
4
|
+
ruby-terraform (0.51.0.pre.2)
|
5
5
|
lino (~> 1.1)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
+
addressable (2.7.0)
|
11
|
+
public_suffix (>= 2.0.2, < 5.0)
|
10
12
|
concurrent-ruby (1.1.6)
|
11
13
|
diff-lcs (1.3)
|
12
14
|
excon (0.72.0)
|
15
|
+
faraday (1.0.0)
|
16
|
+
multipart-post (>= 1.2, < 3)
|
13
17
|
gem-release (2.1.1)
|
14
18
|
hamster (3.0.0)
|
15
19
|
concurrent-ruby (~> 1.0)
|
16
20
|
lino (1.1.0)
|
17
21
|
hamster (~> 3.0)
|
18
22
|
open4 (~> 1.3)
|
23
|
+
multipart-post (2.1.1)
|
24
|
+
octokit (4.16.0)
|
25
|
+
faraday (>= 0.9)
|
26
|
+
sawyer (~> 0.8.0, >= 0.5.3)
|
19
27
|
open4 (1.3.4)
|
28
|
+
public_suffix (4.0.3)
|
20
29
|
rake (13.0.1)
|
21
30
|
rspec (3.9.0)
|
22
31
|
rspec-core (~> 3.9.0)
|
@@ -31,6 +40,10 @@ GEM
|
|
31
40
|
diff-lcs (>= 1.2.0, < 2.0)
|
32
41
|
rspec-support (~> 3.9.0)
|
33
42
|
rspec-support (3.9.2)
|
43
|
+
sawyer (0.8.2)
|
44
|
+
addressable (>= 2.3.5)
|
45
|
+
faraday (> 0.8, < 2.0)
|
46
|
+
sshkey (2.0.0)
|
34
47
|
|
35
48
|
PLATFORMS
|
36
49
|
ruby
|
@@ -39,9 +52,11 @@ DEPENDENCIES
|
|
39
52
|
bundler (~> 2.0)
|
40
53
|
excon (~> 0.72)
|
41
54
|
gem-release (~> 2.1)
|
55
|
+
octokit (~> 4.16)
|
42
56
|
rake (~> 13.0)
|
43
57
|
rspec (~> 3.9)
|
44
58
|
ruby-terraform!
|
59
|
+
sshkey (~> 2.0)
|
45
60
|
|
46
61
|
BUNDLED WITH
|
47
62
|
2.1.4
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'sshkey'
|
2
|
+
require 'octokit'
|
1
3
|
require 'rspec/core/rake_task'
|
2
4
|
|
3
5
|
require_relative 'rake/circleci'
|
@@ -6,41 +8,130 @@ RSpec::Core::RakeTask.new(:spec)
|
|
6
8
|
|
7
9
|
task :default => :spec
|
8
10
|
|
9
|
-
namespace :
|
10
|
-
|
11
|
-
|
11
|
+
namespace :ssh_key do
|
12
|
+
desc "Generate a new SSH key for CI"
|
13
|
+
task :generate do
|
14
|
+
print "Generating a new SSH key... "
|
15
|
+
key = SSHKey.generate(
|
16
|
+
type: "RSA",
|
17
|
+
bits: 4096,
|
18
|
+
comment: "maintainers@infrablocks.io")
|
19
|
+
File.write('config/secrets/ci/ssh.private', key.private_key)
|
20
|
+
File.write('config/secrets/ci/ssh.public', key.public_key)
|
21
|
+
puts "Done."
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
namespace :circle_ci do
|
26
|
+
circle_ci_config_path = 'config/secrets/circle_ci/config.yaml'
|
12
27
|
|
28
|
+
namespace :env_vars do
|
13
29
|
desc "Destroy all environment variables from the CircleCI pipeline"
|
14
30
|
task :destroy do
|
15
|
-
|
16
|
-
CircleCI.new(
|
31
|
+
print "Deleting all environment variables from pipeline... "
|
32
|
+
circle_ci = CircleCI.new(circle_ci_config_path)
|
33
|
+
circle_ci.delete_env_vars
|
17
34
|
puts "Done."
|
18
35
|
end
|
19
36
|
|
20
37
|
desc "Provision all environment variables to the CircleCI pipeline"
|
21
38
|
task :provision do
|
22
|
-
puts "Creating all environment variables in pipeline..."
|
39
|
+
puts "Creating all environment variables in the pipeline... "
|
23
40
|
env_vars = {
|
24
41
|
'ENCRYPTION_PASSPHRASE':
|
25
42
|
File.read('config/secrets/ci/encryption.passphrase').chomp
|
26
43
|
}
|
27
44
|
|
45
|
+
circle_ci = CircleCI.new(circle_ci_config_path)
|
28
46
|
env_vars.each do |name, value|
|
29
|
-
|
30
|
-
|
47
|
+
print "Creating environment variable: #{name}... "
|
48
|
+
circle_ci.create_env_var(name, value)
|
31
49
|
end
|
32
50
|
|
33
51
|
puts "Done."
|
34
52
|
end
|
35
53
|
|
36
|
-
desc "
|
54
|
+
desc "Ensure all environment variables are configured on the CircleCI " +
|
37
55
|
"pipeline"
|
38
56
|
task :ensure => [:'destroy', :'provision']
|
39
57
|
end
|
58
|
+
|
59
|
+
namespace :ssh_key do
|
60
|
+
desc "Destroy SSH key from the CircleCI pipeline"
|
61
|
+
task :destroy do
|
62
|
+
print "Destroying SSH key in the pipeline... "
|
63
|
+
circle_ci = CircleCI.new(circle_ci_config_path)
|
64
|
+
circle_ci.delete_ssh_keys
|
65
|
+
puts "Done."
|
66
|
+
end
|
67
|
+
|
68
|
+
desc "Provision SSH key to the CircleCI pipeline"
|
69
|
+
task :provision do
|
70
|
+
print "Creating SSH key in the pipeline... "
|
71
|
+
circle_ci = CircleCI.new(circle_ci_config_path)
|
72
|
+
circle_ci.create_ssh_key(
|
73
|
+
SSHKey.new(
|
74
|
+
File.read('config/secrets/ci/ssh.private'),
|
75
|
+
comment: 'github.com'))
|
76
|
+
puts "Done."
|
77
|
+
end
|
78
|
+
|
79
|
+
desc "Ensure SSH key is configured on the CircleCI pipeline"
|
80
|
+
task :ensure => [:'destroy', :'provision']
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
namespace :github do
|
85
|
+
namespace :deploy_key do
|
86
|
+
desc "Remove deploy key from the Github repository"
|
87
|
+
task :destroy do
|
88
|
+
print "Removing deploy key from the Github repository... "
|
89
|
+
config = YAML.load_file('config/secrets/github/config.yaml')
|
90
|
+
access_token = config["github_personal_access_token"]
|
91
|
+
repo = config["github_repository"]
|
92
|
+
client = Octokit::Client.new(access_token: access_token)
|
93
|
+
|
94
|
+
deploy_keys = client.list_deploy_keys(repo)
|
95
|
+
circle_ci_deploy_key = deploy_keys.find { |k| k[:title] == 'CircleCI' }
|
96
|
+
if circle_ci_deploy_key
|
97
|
+
client.remove_deploy_key(repo, circle_ci_deploy_key[:id])
|
98
|
+
end
|
99
|
+
puts "Done."
|
100
|
+
end
|
101
|
+
|
102
|
+
desc "Add deploy key to the Github repository"
|
103
|
+
task :provision do
|
104
|
+
print "Adding deploy key to the Github repository... "
|
105
|
+
config = YAML.load_file('config/secrets/github/config.yaml')
|
106
|
+
access_token = config["github_personal_access_token"]
|
107
|
+
repo = config["github_repository"]
|
108
|
+
client = Octokit::Client.new(access_token: access_token)
|
109
|
+
|
110
|
+
ssh_key = SSHKey.new(
|
111
|
+
File.read('config/secrets/ci/ssh.private'),
|
112
|
+
comment: 'CircleCI')
|
113
|
+
client.add_deploy_key(repo,
|
114
|
+
ssh_key.comment,
|
115
|
+
ssh_key.ssh_public_key,
|
116
|
+
read_only: false)
|
117
|
+
puts "Done."
|
118
|
+
end
|
119
|
+
|
120
|
+
desc "Ensure deploy key is configured on the Github repository"
|
121
|
+
task :ensure => [:'destroy', :'provision']
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
namespace :pipeline do
|
126
|
+
task :prepare => [
|
127
|
+
:'circle_ci:env_vars:ensure',
|
128
|
+
:'circle_ci:ssh_key:ensure',
|
129
|
+
:'github:deploy_key:ensure'
|
130
|
+
]
|
40
131
|
end
|
41
132
|
|
42
133
|
namespace :version do
|
43
|
-
desc "Bump version for specified type (pre, major, minor patch)"
|
134
|
+
desc "Bump version for specified type (pre, major, minor, patch)"
|
44
135
|
task :bump, [:type] do |_, args|
|
45
136
|
bump_version_for(args.type)
|
46
137
|
end
|
@@ -1,51 +1,51 @@
|
|
1
1
|
-----BEGIN RSA PRIVATE KEY-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
+/
|
50
|
-
|
2
|
+
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
|
51
51
|
-----END RSA PRIVATE KEY-----
|
@@ -1 +1,14 @@
|
|
1
|
-
|
1
|
+
-----BEGIN PUBLIC KEY-----
|
2
|
+
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlAor5NjXEpgtJfzyBHlY
|
3
|
+
PMLQhactLFTZu3txw8y/jzvdpRC0pkCapzzf2pqG1Ig+MZRfhwoStBqz20TBk1+j
|
4
|
+
wyjrlCBd9PzbNYVr1QUpib8X2fPowrTVBSKEYB9TYgutzfi8Ze/On1stMrZ9Gf15
|
5
|
+
xzZCyfOyHhUkm+ajS2beArmEA4OxrQ0jO8tgRdvi7zbP/tdYRtyiFCZ2nfofuKpO
|
6
|
+
8Br4pL1LBHz7I8PYuXH0qRDW4zeuAUFpyxFSBhzv8LnkifFUuuhk7TktM9JTDNRs
|
7
|
+
0iuvBf5w1lJNOb6iLZ4C8thoNqE/4V8GKvmpccorvQcRbjrvmIyz8g+TMYgBvi6K
|
8
|
+
f1QIlZBBj2AOxew1nSCTWKn4QpTye8j2HUaC+2AuxjQwth6Tp969c/RAJq5zWCuL
|
9
|
+
KR58TpdD2X3ODWWgYnucdTzchtVXsIWSwHAjSeRIj7U0b0g7dJL9JSaPLwev9tKz
|
10
|
+
rx5Ju7XWh/xhBf7urEly+pCwYnpGwctNBsoWqtPdJuxP3tVAZTCico8gYM3/J6hO
|
11
|
+
OCDlop4AGObtdsJSXaLu637+svzZiPoOYdp5jmzJJYiz9Z9XgsaWgkLsDubmfieY
|
12
|
+
Gs9MAGSRZytG7OAxgI18tlRmkmJveaK5vzE1d5SlDK0JdnzZ+UFvR9hVeRdUFSUZ
|
13
|
+
XJpeOsRAvv+6ahmauvxQFyUCAwEAAQ==
|
14
|
+
-----END PUBLIC KEY-----
|
data/rake/circleci.rb
CHANGED
@@ -2,7 +2,6 @@ require 'rubygems'
|
|
2
2
|
require 'excon'
|
3
3
|
require 'yaml'
|
4
4
|
require 'json'
|
5
|
-
require 'pp'
|
6
5
|
|
7
6
|
class CircleCI
|
8
7
|
def initialize(config_path)
|
@@ -22,7 +21,7 @@ class CircleCI
|
|
22
21
|
end
|
23
22
|
|
24
23
|
def delete_env_var(name)
|
25
|
-
assert_successful(Excon.delete(env_var_url(name), headers))
|
24
|
+
assert_successful(Excon.delete(env_var_url(name), headers: headers))
|
26
25
|
end
|
27
26
|
|
28
27
|
def delete_env_vars
|
@@ -38,6 +37,43 @@ class CircleCI
|
|
38
37
|
Excon.post(env_vars_url, body: body, headers: headers))
|
39
38
|
end
|
40
39
|
|
40
|
+
def find_ssh_keys
|
41
|
+
response = assert_successful(Excon.get(settings_url, headers: headers))
|
42
|
+
body = JSON.parse(response.body)
|
43
|
+
ssh_keys = body["ssh_keys"].map do |ssh_key|
|
44
|
+
{
|
45
|
+
fingerprint: ssh_key["fingerprint"],
|
46
|
+
hostname: ssh_key["hostname"]
|
47
|
+
}
|
48
|
+
end
|
49
|
+
|
50
|
+
ssh_keys
|
51
|
+
end
|
52
|
+
|
53
|
+
def delete_ssh_key(ssh_key_identifier)
|
54
|
+
assert_successful(
|
55
|
+
Excon.delete(ssh_keys_url,
|
56
|
+
body: JSON.dump(ssh_key_identifier),
|
57
|
+
headers: headers))
|
58
|
+
end
|
59
|
+
|
60
|
+
def delete_ssh_keys
|
61
|
+
ssh_keys = find_ssh_keys
|
62
|
+
ssh_keys.each do |ssh_key|
|
63
|
+
delete_ssh_key(ssh_key)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def create_ssh_key(ssh_key)
|
68
|
+
body = JSON.dump({
|
69
|
+
fingerprint: ssh_key.sha1_fingerprint,
|
70
|
+
hostname: ssh_key.comment,
|
71
|
+
private_key: ssh_key.private_key
|
72
|
+
})
|
73
|
+
assert_successful(
|
74
|
+
Excon.post(ssh_keys_url, body: body, headers: headers))
|
75
|
+
end
|
76
|
+
|
41
77
|
private
|
42
78
|
|
43
79
|
def headers
|
@@ -49,7 +85,6 @@ class CircleCI
|
|
49
85
|
end
|
50
86
|
|
51
87
|
def assert_successful(response)
|
52
|
-
pp response
|
53
88
|
unless response.status >= 200 && response.status < 300
|
54
89
|
host = response.data[:host]
|
55
90
|
path = response.data[:path]
|
@@ -65,7 +100,15 @@ class CircleCI
|
|
65
100
|
end
|
66
101
|
|
67
102
|
def env_var_url(name)
|
68
|
-
"#{@base_url}/
|
103
|
+
"#{@base_url}/v2/project/#{@project_slug}/envvar/#{name}"
|
104
|
+
end
|
105
|
+
|
106
|
+
def settings_url
|
107
|
+
"#{@base_url}/v1.1/project/#{@project_slug}/settings"
|
108
|
+
end
|
109
|
+
|
110
|
+
def ssh_keys_url
|
111
|
+
"#{@base_url}/v1.1/project/#{@project_slug}/ssh-key?" +
|
69
112
|
"circle-token=#{@api_token}"
|
70
113
|
end
|
71
114
|
end
|
data/ruby_terraform.gemspec
CHANGED
@@ -31,5 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_development_dependency 'rake', '~> 13.0'
|
32
32
|
spec.add_development_dependency 'rspec', '~> 3.9'
|
33
33
|
spec.add_development_dependency 'excon', '~> 0.72'
|
34
|
+
spec.add_development_dependency 'sshkey', '~> 2.0'
|
35
|
+
spec.add_development_dependency 'octokit', '~> 4.16'
|
34
36
|
spec.add_development_dependency 'gem-release', '~> 2.1'
|
35
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-terraform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.51.0.pre.
|
4
|
+
version: 0.51.0.pre.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toby Clemson
|
@@ -80,6 +80,34 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0.72'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sshkey
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: octokit
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '4.16'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '4.16'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: gem-release
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,6 +157,7 @@ files:
|
|
129
157
|
- config/secrets/ci/ssh.private
|
130
158
|
- config/secrets/ci/ssh.public
|
131
159
|
- config/secrets/circle_ci/config.yaml
|
160
|
+
- config/secrets/github/config.yaml
|
132
161
|
- config/secrets/rubygems/credentials
|
133
162
|
- go
|
134
163
|
- lib/ruby_terraform.rb
|