ops_team 0.8.6 → 0.9.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/lib/action.rb +1 -1
- data/lib/builtin.rb +2 -0
- data/lib/builtins/background.rb +52 -0
- data/lib/dependencies/sshkey.rb +34 -12
- data/lib/ops.rb +6 -0
- data/ops_team.gemspec +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a811c1178ce7f125d006e4a3839191446cf758bf24dd5b68d10e6778b4aa2927
|
4
|
+
data.tar.gz: 4b46a9a22a19f533d244c4442ab8c4bbb30479e04c09d4f40f65993faa7f4ea1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14117ab9417d99efc20ea08a0497504acdc7486704be02b96f65fe7da0719447dace894e8ee733261e9fd73b5cafe81199527aa37e4977cd818434e6517465be
|
7
|
+
data.tar.gz: 179c07999a87d8f43710ab22f1ffda3dd7a5776e56640324c1a4e175df36607fe904e0b2c15901e8c5e89eaba3a1a216157a6fb518e5aca6f64120061bb6dbc5
|
data/lib/action.rb
CHANGED
data/lib/builtin.rb
CHANGED
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'open3'
|
4
|
+
|
5
|
+
require 'builtin'
|
6
|
+
|
7
|
+
module Builtins
|
8
|
+
class Background < Builtin
|
9
|
+
DEFAULT_SHELL = "bash"
|
10
|
+
DEFAULT_LOG_FILE_PREFIX = "/tmp/ops_bglog_"
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def description
|
14
|
+
"runs the given command in a background session"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def run
|
19
|
+
subprocess = fork do
|
20
|
+
run_ops(args)
|
21
|
+
end
|
22
|
+
|
23
|
+
Process.detach(subprocess)
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def run_ops(args)
|
29
|
+
Output.warn("Running '#{args.join(' ')}' with stderr and stdout redirected to '#{log_file}'")
|
30
|
+
$stdout.sync = $stderr.sync = true
|
31
|
+
$stdout.reopen(log_file, "w")
|
32
|
+
$stderr.reopen($stdout)
|
33
|
+
|
34
|
+
Ops.new(args).run
|
35
|
+
end
|
36
|
+
|
37
|
+
def log_file
|
38
|
+
@log_file ||= "#{log_file_prefix}#{Ops.project_name}"
|
39
|
+
end
|
40
|
+
|
41
|
+
def log_file_prefix
|
42
|
+
Options.get("background.log_file_prefix") || DEFAULT_LOG_FILE_PREFIX
|
43
|
+
end
|
44
|
+
|
45
|
+
def shell
|
46
|
+
Options.get("background.shell") || DEFAULT_SHELL
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# set an alias
|
51
|
+
Bg = Background
|
52
|
+
end
|
data/lib/dependencies/sshkey.rb
CHANGED
@@ -21,7 +21,7 @@ module Dependencies
|
|
21
21
|
FileUtils.mkdir_p(dir_name) unless File.directory?(dir_name)
|
22
22
|
|
23
23
|
generate_key unless File.exist?(priv_key_name) && File.exist?(pub_key_name)
|
24
|
-
add_key if success? &&
|
24
|
+
add_key if success? && should_add_key?
|
25
25
|
end
|
26
26
|
|
27
27
|
def unmeet
|
@@ -35,24 +35,29 @@ module Dependencies
|
|
35
35
|
private
|
36
36
|
|
37
37
|
def generate_key
|
38
|
-
|
38
|
+
Output.warn("\nNo passphrase set for SSH key '#{priv_key_name}'") if passphrase.nil? || passphrase.empty?
|
39
|
+
|
40
|
+
execute("ssh-keygen -b #{opt_key_size} -t #{opt_key_algo} -f #{priv_key_name} -q -N '#{passphrase}'")
|
39
41
|
end
|
40
42
|
|
41
43
|
def add_key
|
42
44
|
Net::SSH::Authentication::Agent.connect.add_identity(
|
43
45
|
unencrypted_key,
|
44
46
|
key_comment,
|
45
|
-
lifetime:
|
47
|
+
lifetime: opt_key_lifetime
|
46
48
|
)
|
47
49
|
end
|
48
50
|
|
51
|
+
def should_add_key?
|
52
|
+
ENV["SSH_AUTH_SOCK"] && opt_add_keys?
|
53
|
+
end
|
54
|
+
|
49
55
|
def unencrypted_key
|
50
|
-
Net::SSH::KeyFactory.load_private_key(priv_key_name, passphrase)
|
56
|
+
Net::SSH::KeyFactory.load_private_key(priv_key_name, passphrase.empty? ? nil : passphrase)
|
51
57
|
end
|
52
58
|
|
53
59
|
def key_comment
|
54
|
-
|
55
|
-
File.basename(::Dir.pwd)
|
60
|
+
Ops.project_name
|
56
61
|
end
|
57
62
|
|
58
63
|
def dir_name
|
@@ -67,23 +72,40 @@ module Dependencies
|
|
67
72
|
"#{priv_key_name}.pub"
|
68
73
|
end
|
69
74
|
|
70
|
-
def
|
75
|
+
def opt_key_size
|
71
76
|
Options.get("sshkey.key_size") || DEFAULT_KEY_SIZE
|
72
77
|
end
|
73
78
|
|
74
|
-
def
|
79
|
+
def opt_key_algo
|
75
80
|
DEFAULT_KEY_ALGO
|
76
81
|
end
|
77
82
|
|
78
83
|
def passphrase
|
79
|
-
`echo #{
|
84
|
+
`echo #{opt_passphrase}`.chomp
|
85
|
+
end
|
86
|
+
|
87
|
+
def opt_passphrase
|
88
|
+
@opt_passphrase ||= begin
|
89
|
+
return "$#{Options.get('sshkey.passphrase_var')}" if Options.get("sshkey.passphrase_var")
|
90
|
+
|
91
|
+
output_passphrase_warning if Options.get("sshkey.passphrase")
|
92
|
+
|
93
|
+
Options.get("sshkey.passphrase")
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def output_passphrase_warning
|
98
|
+
Output.warn(
|
99
|
+
"\n'options.sshkey.passphrase' is deprecated and will be removed in a future release. " \
|
100
|
+
"Use 'options.sshkey.passphrase_var' instead."
|
101
|
+
)
|
80
102
|
end
|
81
103
|
|
82
|
-
def
|
83
|
-
Options.get("sshkey.
|
104
|
+
def opt_add_keys?
|
105
|
+
Options.get("sshkey.add_keys").nil? ? true : Options.get("sshkey.add_keys")
|
84
106
|
end
|
85
107
|
|
86
|
-
def
|
108
|
+
def opt_key_lifetime
|
87
109
|
Options.get("sshkey.key_lifetime") || DEFAULT_KEY_LIFETIME_S
|
88
110
|
end
|
89
111
|
end
|
data/lib/ops.rb
CHANGED
data/ops_team.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'ops_team'
|
5
|
-
s.version = '0.
|
5
|
+
s.version = '0.9.0'
|
6
6
|
s.authors = [
|
7
7
|
'nickthecook@gmail.com'
|
8
8
|
]
|
9
|
-
s.date = '2020-
|
9
|
+
s.date = '2020-08-11'
|
10
10
|
s.summary = 'ops_team handles basic operations tasks for your project, driven by YAML config'
|
11
11
|
s.homepage = 'https://github.com/nickthecook/ops'
|
12
12
|
s.files = Dir[
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ops_team
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nickthecook@gmail.com
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcrypt_pbkdf
|
@@ -148,6 +148,7 @@ files:
|
|
148
148
|
- lib/action.rb
|
149
149
|
- lib/app_config.rb
|
150
150
|
- lib/builtin.rb
|
151
|
+
- lib/builtins/background.rb
|
151
152
|
- lib/builtins/down.rb
|
152
153
|
- lib/builtins/env.rb
|
153
154
|
- lib/builtins/exec.rb
|