ops_team 0.8.0 → 0.8.7
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 +4 -0
- data/lib/dependencies/dir.rb +1 -1
- data/lib/dependencies/sshkey.rb +46 -8
- data/ops_team.gemspec +5 -1
- metadata +81 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d595d1f23daf3cab0833a010f9fc99feadaee8fe63e5f98f6a6943b7e39db0f0
|
4
|
+
data.tar.gz: af36bed405ec7982a89e6d4837098ccb92d227d37a6beba086dc0b7e33ab33c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d50db908a70f94f1d3db693856dc664900386e95c33c90a77aedc8766c8e1b33d72d742668230dcf2c2b546ecee132e8320c6c9fa58df02065fb43a134b3364b
|
7
|
+
data.tar.gz: 88b9e6bb4410fe491673ec101a65d48b7f51746682e55dea06ba2747a250b0ba1fdb23849171b3a17ac2fd3690331fb5155463edad23451fcdd5f00ef2ad049c
|
data/Gemfile
CHANGED
data/lib/dependencies/dir.rb
CHANGED
data/lib/dependencies/sshkey.rb
CHANGED
@@ -1,22 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'net/ssh'
|
4
|
+
|
3
5
|
require 'dependency'
|
4
6
|
|
5
7
|
module Dependencies
|
6
8
|
class Sshkey < Dependency
|
7
9
|
DEFAULT_KEY_SIZE = 2048
|
8
10
|
DEFAULT_KEY_ALGO = "rsa"
|
11
|
+
DEFAULT_KEY_LIFETIME_S = 3600
|
9
12
|
|
10
13
|
def met?
|
11
|
-
|
14
|
+
# we always need to at least update the key lifetime in the agent
|
15
|
+
false
|
12
16
|
end
|
13
17
|
|
14
18
|
def meet
|
15
|
-
Secrets.load
|
19
|
+
Secrets.load
|
16
20
|
|
17
21
|
FileUtils.mkdir_p(dir_name) unless File.directory?(dir_name)
|
18
22
|
|
19
|
-
|
23
|
+
generate_key unless File.exist?(priv_key_name) && File.exist?(pub_key_name)
|
24
|
+
add_key if success? && should_add_key?
|
20
25
|
end
|
21
26
|
|
22
27
|
def unmeet
|
@@ -29,6 +34,31 @@ module Dependencies
|
|
29
34
|
|
30
35
|
private
|
31
36
|
|
37
|
+
def generate_key
|
38
|
+
execute("ssh-keygen -b #{opt_key_size} -t #{opt_key_algo} -f #{priv_key_name} -q -N '#{passphrase}'")
|
39
|
+
end
|
40
|
+
|
41
|
+
def add_key
|
42
|
+
Net::SSH::Authentication::Agent.connect.add_identity(
|
43
|
+
unencrypted_key,
|
44
|
+
key_comment,
|
45
|
+
lifetime: opt_key_lifetime
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
49
|
+
def should_add_key?
|
50
|
+
ENV["SSH_AUTH_SOCK"] && opt_add_keys?
|
51
|
+
end
|
52
|
+
|
53
|
+
def unencrypted_key
|
54
|
+
Net::SSH::KeyFactory.load_private_key(priv_key_name, passphrase)
|
55
|
+
end
|
56
|
+
|
57
|
+
def key_comment
|
58
|
+
# the current directory is usually named for the project
|
59
|
+
File.basename(::Dir.pwd)
|
60
|
+
end
|
61
|
+
|
32
62
|
def dir_name
|
33
63
|
`echo #{File.dirname(name)}`.chomp
|
34
64
|
end
|
@@ -41,20 +71,28 @@ module Dependencies
|
|
41
71
|
"#{priv_key_name}.pub"
|
42
72
|
end
|
43
73
|
|
44
|
-
def
|
74
|
+
def opt_key_size
|
45
75
|
Options.get("sshkey.key_size") || DEFAULT_KEY_SIZE
|
46
76
|
end
|
47
77
|
|
48
|
-
def
|
49
|
-
|
78
|
+
def opt_key_algo
|
79
|
+
DEFAULT_KEY_ALGO
|
50
80
|
end
|
51
81
|
|
52
82
|
def passphrase
|
53
|
-
`echo #{
|
83
|
+
`echo #{opt_passphrase}`.chomp
|
54
84
|
end
|
55
85
|
|
56
|
-
def
|
86
|
+
def opt_passphrase
|
57
87
|
Options.get("sshkey.passphrase")
|
58
88
|
end
|
89
|
+
|
90
|
+
def opt_add_keys?
|
91
|
+
Options.get("sshkey.add_keys").nil? ? true : Options.get("sshkey.add_keys")
|
92
|
+
end
|
93
|
+
|
94
|
+
def opt_key_lifetime
|
95
|
+
Options.get("sshkey.key_lifetime") || DEFAULT_KEY_LIFETIME_S
|
96
|
+
end
|
59
97
|
end
|
60
98
|
end
|
data/ops_team.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'ops_team'
|
5
|
-
s.version = '0.8.
|
5
|
+
s.version = '0.8.7'
|
6
6
|
s.authors = [
|
7
7
|
'nickthecook@gmail.com'
|
8
8
|
]
|
@@ -22,7 +22,11 @@ Gem::Specification.new do |s|
|
|
22
22
|
]
|
23
23
|
s.executables << 'ops'
|
24
24
|
s.required_ruby_version = '~> 2.5'
|
25
|
+
s.add_runtime_dependency 'bcrypt_pbkdf', '~> 1.0', '>= 1.0.1'
|
25
26
|
s.add_runtime_dependency 'colorize', '~> 0.8', '>= 0.8.1'
|
27
|
+
s.add_runtime_dependency 'ed25519', '~> 1.2', '>= 1.2.4'
|
28
|
+
s.add_runtime_dependency 'ejson', '~> 1.2', '>= 1.2.1'
|
29
|
+
s.add_runtime_dependency 'net-ssh', '~> 6.1', '>= 6.1.0'
|
26
30
|
s.add_runtime_dependency 'require_all', '~> 1.1', '>= 1.1.6'
|
27
31
|
s.license = 'GPL-3.0-only'
|
28
32
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ops_team
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nickthecook@gmail.com
|
@@ -10,6 +10,26 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2020-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bcrypt_pbkdf
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.0.1
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.0'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.0.1
|
13
33
|
- !ruby/object:Gem::Dependency
|
14
34
|
name: colorize
|
15
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -30,6 +50,66 @@ dependencies:
|
|
30
50
|
- - ">="
|
31
51
|
- !ruby/object:Gem::Version
|
32
52
|
version: 0.8.1
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: ed25519
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.2'
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.2.4
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.2'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 1.2.4
|
73
|
+
- !ruby/object:Gem::Dependency
|
74
|
+
name: ejson
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '1.2'
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.2.1
|
83
|
+
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.2'
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 1.2.1
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: net-ssh
|
95
|
+
requirement: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 6.1.0
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '6.1'
|
103
|
+
type: :runtime
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 6.1.0
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '6.1'
|
33
113
|
- !ruby/object:Gem::Dependency
|
34
114
|
name: require_all
|
35
115
|
requirement: !ruby/object:Gem::Requirement
|