koma 0.4.0 → 0.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 +4 -4
- data/README.md +3 -3
- data/lib/koma/backend/base.rb +32 -0
- data/lib/koma/backend/exec.rb +10 -0
- data/lib/koma/backend/ssh.rb +36 -0
- data/lib/koma/backend.rb +8 -0
- data/lib/koma/cli.rb +6 -55
- data/lib/koma/version.rb +1 -1
- data/lib/koma.rb +1 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 383af2846d313675f2b9194c6c7a1ea1219911d6
|
4
|
+
data.tar.gz: 732fc3eb5a5e422ea97ecaac95e286d6f2c2df06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f676fd8818f751fc9e4d0423670807570f81d66241ae04a91b6f92aa8c99c16f06301902c1cc7d5bc70d7c285eae81bd31bdc8c945b665408e5ac76a14c350f
|
7
|
+
data.tar.gz: d61ba847dcf476e333b466efe99dd1d609dd14d3b9e2690a0db2e19ab33538670981d8e65eddd3c0980af9665f1caf616e119cc6882b29474ada52392a297292
|
data/README.md
CHANGED
@@ -32,15 +32,15 @@ $ koma ssh example.com
|
|
32
32
|
|
33
33
|
And get stdout like [this](stdout_sample.json).
|
34
34
|
|
35
|
-
###
|
35
|
+
### Gather multi host
|
36
36
|
|
37
37
|
```sh
|
38
38
|
$ koma ssh example.com,example.jp
|
39
39
|
{
|
40
|
-
"example.com"
|
40
|
+
"example.com": {
|
41
41
|
...
|
42
42
|
},
|
43
|
-
"example.jp"
|
43
|
+
"example.jp": {
|
44
44
|
...
|
45
45
|
}
|
46
46
|
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
include Specinfra::Helper::Set
|
2
|
+
|
3
|
+
class Koma::Backend::Base
|
4
|
+
attr_reader :host, :options
|
5
|
+
|
6
|
+
def initialize(host, options)
|
7
|
+
@host = host
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def out(key = nil)
|
12
|
+
out = {}
|
13
|
+
keys = if key.nil?
|
14
|
+
inventory_keys
|
15
|
+
else
|
16
|
+
key.split(',')
|
17
|
+
end
|
18
|
+
keys.each do |k|
|
19
|
+
begin
|
20
|
+
out[k] = Specinfra.backend.host_inventory[k]
|
21
|
+
out[k] = Specinfra.backend.host_inventory[k].inspect if k == 'ec2'
|
22
|
+
rescue NotImplementedError
|
23
|
+
out[k] = nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
out
|
27
|
+
end
|
28
|
+
|
29
|
+
def inventory_keys
|
30
|
+
Specinfra::HostInventory.inventory_keys
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'parallel'
|
2
|
+
|
3
|
+
module Koma
|
4
|
+
module Backend
|
5
|
+
class Ssh < Base
|
6
|
+
attr_reader :host, :options
|
7
|
+
|
8
|
+
def gather
|
9
|
+
if host.include?(',')
|
10
|
+
list = host.split(',')
|
11
|
+
results = Parallel.map(list, in_thread: 4) do |h|
|
12
|
+
gather_via_ssh(h, options)
|
13
|
+
end
|
14
|
+
arr = [list, results].transpose
|
15
|
+
result = Hash[*arr.flatten]
|
16
|
+
else
|
17
|
+
result = gather_via_ssh(host, options)
|
18
|
+
end
|
19
|
+
result
|
20
|
+
end
|
21
|
+
|
22
|
+
def gather_via_ssh(host, options)
|
23
|
+
user, host = host.split('@') if host.include?('@')
|
24
|
+
set :backend, :ssh
|
25
|
+
set :host, host
|
26
|
+
set :request_pty, true
|
27
|
+
ssh_options = Net::SSH::Config.for(host)
|
28
|
+
ssh_options[:user] = user if user
|
29
|
+
ssh_options[:keys] = [options[:identity_file]] if options[:identity_file]
|
30
|
+
ssh_options[:port] = options[:port] if options[:port]
|
31
|
+
set :ssh_options, ssh_options
|
32
|
+
out(options[:key])
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/koma/backend.rb
ADDED
data/lib/koma/cli.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'json'
|
3
|
-
require '
|
4
|
-
|
5
|
-
include Specinfra::Helper::Set
|
3
|
+
require 'yaml'
|
6
4
|
|
7
5
|
module Koma
|
8
6
|
class CLI < Thor
|
@@ -23,17 +21,8 @@ module Koma
|
|
23
21
|
desc: 'port',
|
24
22
|
aliases: :p
|
25
23
|
def ssh(host)
|
26
|
-
|
27
|
-
|
28
|
-
results = Parallel.map(list, in_thread: 4) do |h|
|
29
|
-
ssh_out(h, options)
|
30
|
-
end
|
31
|
-
arr = [list, results].transpose
|
32
|
-
puts JSON.pretty_generate(Hash[*arr.flatten])
|
33
|
-
else
|
34
|
-
result = ssh_out(host, options)
|
35
|
-
puts JSON.pretty_generate(result)
|
36
|
-
end
|
24
|
+
backend = Koma::Backend::Ssh.new(host, options)
|
25
|
+
puts JSON.pretty_generate(backend.gather)
|
37
26
|
end
|
38
27
|
|
39
28
|
desc 'exec', 'stdout local host inventory'
|
@@ -43,53 +32,15 @@ module Koma
|
|
43
32
|
desc: 'inventory keys',
|
44
33
|
aliases: :k
|
45
34
|
def exec
|
46
|
-
|
47
|
-
|
48
|
-
puts JSON.pretty_generate(result)
|
35
|
+
backend = Koma::Backend::Exec.new(nil, options)
|
36
|
+
puts JSON.pretty_generate(backend.gather)
|
49
37
|
end
|
50
38
|
|
51
39
|
desc 'keys', 'host inventory keys'
|
52
40
|
def keys
|
53
|
-
inventory_keys.each do |key|
|
41
|
+
Specinfra::HostInventory.inventory_keys.each do |key|
|
54
42
|
puts key
|
55
43
|
end
|
56
44
|
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
def inventory_keys
|
61
|
-
Specinfra::HostInventory.inventory_keys
|
62
|
-
end
|
63
|
-
|
64
|
-
def ssh_out(host, options)
|
65
|
-
user, host = host.split('@') if host.include?('@')
|
66
|
-
set :backend, :ssh
|
67
|
-
set :host, host
|
68
|
-
set :request_pty, true
|
69
|
-
ssh_options = Net::SSH::Config.for(host)
|
70
|
-
ssh_options[:user] = user if user
|
71
|
-
ssh_options[:keys] = [options[:identity_file]] if options[:identity_file]
|
72
|
-
ssh_options[:port] = options[:port] if options[:port]
|
73
|
-
set :ssh_options, ssh_options
|
74
|
-
out(options[:key])
|
75
|
-
end
|
76
|
-
|
77
|
-
def out(key = nil)
|
78
|
-
out = {}
|
79
|
-
keys = if key.nil?
|
80
|
-
inventory_keys
|
81
|
-
else
|
82
|
-
key.split(',')
|
83
|
-
end
|
84
|
-
keys.each do |k|
|
85
|
-
begin
|
86
|
-
out[k] = Specinfra.backend.host_inventory[k]
|
87
|
-
out[k] = Specinfra.backend.host_inventory[k].inspect if k == 'ec2'
|
88
|
-
rescue NotImplementedError
|
89
|
-
out[k] = nil
|
90
|
-
end
|
91
|
-
end
|
92
|
-
out
|
93
|
-
end
|
94
45
|
end
|
95
46
|
end
|
data/lib/koma/version.rb
CHANGED
data/lib/koma.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: koma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- k1LoW
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -171,6 +171,10 @@ files:
|
|
171
171
|
- exe/koma
|
172
172
|
- koma.gemspec
|
173
173
|
- lib/koma.rb
|
174
|
+
- lib/koma/backend.rb
|
175
|
+
- lib/koma/backend/base.rb
|
176
|
+
- lib/koma/backend/exec.rb
|
177
|
+
- lib/koma/backend/ssh.rb
|
174
178
|
- lib/koma/cli.rb
|
175
179
|
- lib/koma/ext.rb
|
176
180
|
- lib/koma/ext/specinfra/command/base/inventory.rb
|