Chef_Solo_Nodes 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +8 -23
- data/bin/IP +1 -18
- data/bin/SSH +2 -27
- data/lib/Chef_Solo_Nodes/shell.rb +38 -0
- data/lib/Chef_Solo_Nodes/version.rb +1 -1
- data/spec/tests/IP.rb +2 -2
- data/spec/tests/SSH.rb +2 -2
- metadata +2 -1
data/README.md
CHANGED
@@ -70,8 +70,7 @@ Usage: Shell
|
|
70
70
|
|
71
71
|
Provides 2 executables: IP and SSH
|
72
72
|
|
73
|
-
|
74
|
-
generate arguments for other programs:
|
73
|
+
They are meant to generate arguments for other programs:
|
75
74
|
|
76
75
|
$ ping -c 3 $( IP --no-user file_name )
|
77
76
|
ping -c 3 my.ip.address
|
@@ -85,21 +84,14 @@ generate arguments for other programs:
|
|
85
84
|
**Tip:** the last example above uses
|
86
85
|
[knife-solo](https://github.com/matschaffer/knife-solo).
|
87
86
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
If the file name does not exist:
|
92
|
-
|
93
|
-
$ IP missing_file
|
94
|
-
$ SSH missing_file
|
95
|
-
xx.xx.xx.xx
|
96
|
-
# exit status = 1
|
87
|
+
**Errors:** If the file is not found, they print **xx.xx.xx.xx**
|
88
|
+
to standard output and exit 1. Unexpected, unplanned errors
|
89
|
+
are printed to standard error.
|
97
90
|
|
98
91
|
Usage: IP, IP --no-user
|
99
92
|
--------------------
|
100
93
|
|
101
|
-
$ IP file_name
|
102
|
-
# Parses "nodes/file_name.json"
|
94
|
+
$ IP file_name # parses node/file_name.json
|
103
95
|
|
104
96
|
Depending on whether the attributes exist, the results could take
|
105
97
|
any form of the following:
|
@@ -108,16 +100,12 @@ any form of the following:
|
|
108
100
|
127.0.0.1:2222
|
109
101
|
user@127.0.0.1:2222
|
110
102
|
|
111
|
-
|
112
|
-
|
113
|
-
127.0.0.1
|
114
|
-
127.0.0.1:2222
|
103
|
+
Remove **user@** with: **IP --no-user file_name**
|
115
104
|
|
116
105
|
Usage: SSH, SSH --no-user
|
117
106
|
--------------------
|
118
107
|
|
119
|
-
$ SSH file_name
|
120
|
-
# Parses "nodes/file_name.json"
|
108
|
+
$ SSH file_name # parses node/file_name.json
|
121
109
|
|
122
110
|
Depending on whether the attributes exist, the results could take
|
123
111
|
any form of the following:
|
@@ -126,10 +114,7 @@ any form of the following:
|
|
126
114
|
user@127.0.0.1
|
127
115
|
-p 2222 user@127.0.0.1
|
128
116
|
|
129
|
-
|
130
|
-
|
131
|
-
127.0.0.1
|
132
|
-
-p 2222 127.0.0.1
|
117
|
+
Remove **user@** with: **SSH --no-user file_name**
|
133
118
|
|
134
119
|
Run Tests
|
135
120
|
---------
|
data/bin/IP
CHANGED
@@ -1,20 +1,3 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
require "Chef_Solo_Nodes"
|
3
|
-
require "trollop"
|
4
2
|
|
5
|
-
|
6
|
-
opt :no_user, "Avoid printing any user/login value", :default=>false
|
7
|
-
end
|
8
|
-
|
9
|
-
n = Chef_Solo_IPs(Dir.glob("nodes/#{ARGV.first}.json")).first
|
10
|
-
|
11
|
-
if !n
|
12
|
-
print 'xx.xx.xx.xx'
|
13
|
-
exit 1
|
14
|
-
end
|
15
|
-
|
16
|
-
uri = URI.parse("ssh://#{n}")
|
17
|
-
|
18
|
-
print "#{uri.user}@" if uri.user && !opts[:no_user]
|
19
|
-
print "#{uri.host}"
|
20
|
-
print ":#{uri.port}" if uri.port
|
3
|
+
require "Chef_Solo_Nodes/shell"
|
data/bin/SSH
CHANGED
@@ -1,29 +1,4 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
require "Chef_Solo_Nodes"
|
3
|
-
require "trollop"
|
4
2
|
|
5
|
-
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
n = Chef_Solo_IPs(Dir.glob("nodes/#{ARGV.first}.json")).first
|
10
|
-
|
11
|
-
unless n
|
12
|
-
print "xx.xx.xx.xx"
|
13
|
-
exit 1
|
14
|
-
end
|
15
|
-
|
16
|
-
uri = URI.parse("ssh://#{n}")
|
17
|
-
|
18
|
-
str = ""
|
19
|
-
|
20
|
-
if uri.port
|
21
|
-
str << "-p #{uri.port} "
|
22
|
-
end
|
23
|
-
|
24
|
-
if uri.user && !opts[:no_user]
|
25
|
-
str << "#{uri.user}@"
|
26
|
-
end
|
27
|
-
|
28
|
-
str << "#{uri.host}"
|
29
|
-
print str
|
3
|
+
require "Chef_Solo_Nodes/shell"
|
4
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
begin
|
4
|
+
|
5
|
+
require "Chef_Solo_Nodes"
|
6
|
+
require "trollop"
|
7
|
+
|
8
|
+
opts = Trollop::options do
|
9
|
+
opt :no_user, "Avoid printing any user/login value", :default=>false
|
10
|
+
end
|
11
|
+
|
12
|
+
opts[ :format ] = File.basename($0)
|
13
|
+
|
14
|
+
glob = "nodes/#{ARGV.first}.json"
|
15
|
+
n = Chef_Solo_IPs(Dir.glob glob).first
|
16
|
+
|
17
|
+
raise RuntimeError, "Not found: #{glob}" unless n
|
18
|
+
|
19
|
+
uri = URI.parse("ssh://#{n}")
|
20
|
+
|
21
|
+
case opts.format
|
22
|
+
when "IP"
|
23
|
+
print "#{uri.user}@" if uri.user && !opts[:no_user]
|
24
|
+
print "#{uri.host}"
|
25
|
+
print ":#{uri.port}" if uri.port
|
26
|
+
when "SSH"
|
27
|
+
print "-p #{uri.port} " if uri.port
|
28
|
+
print "#{uri.user}@" if uri.user && !opts[:no_user]
|
29
|
+
print "#{uri.host}"
|
30
|
+
else
|
31
|
+
raise ArgumentError, "Unknown format: #{opts.format.inspect}"
|
32
|
+
end
|
33
|
+
|
34
|
+
rescue Object => e
|
35
|
+
print 'xx.xx.xx.xx'
|
36
|
+
raise e
|
37
|
+
|
38
|
+
end
|
data/spec/tests/IP.rb
CHANGED
@@ -3,13 +3,13 @@ describe "IP" do
|
|
3
3
|
|
4
4
|
it "prints xx.xx.xx.xx if file is not found" do
|
5
5
|
chdir {
|
6
|
-
`IP
|
6
|
+
`IP wrong.droids 2>/dev/null`.should == "xx.xx.xx.xx"
|
7
7
|
}
|
8
8
|
end
|
9
9
|
|
10
10
|
it "exists with 1 if not found" do
|
11
11
|
chdir {
|
12
|
-
`IP
|
12
|
+
`IP dana.carveys.billions 2>/dev/null`
|
13
13
|
$?.exitstatus.should == 1
|
14
14
|
}
|
15
15
|
end
|
data/spec/tests/SSH.rb
CHANGED
@@ -3,13 +3,13 @@ describe "SSH" do
|
|
3
3
|
|
4
4
|
it "prints xx.xx.xx.xx if file is not found" do
|
5
5
|
chdir {
|
6
|
-
`SSH
|
6
|
+
`SSH mr.x.is.homer 2>/dev/null`.should == "xx.xx.xx.xx"
|
7
7
|
}
|
8
8
|
end
|
9
9
|
|
10
10
|
it "exists with 1 if not found" do
|
11
11
|
chdir {
|
12
|
-
`SSH
|
12
|
+
`SSH murray.rothbards.diet.plans 2>/dev/null`
|
13
13
|
$?.exitstatus.should == 1
|
14
14
|
}
|
15
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Chef_Solo_Nodes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -110,6 +110,7 @@ files:
|
|
110
110
|
- bin/IP
|
111
111
|
- bin/SSH
|
112
112
|
- lib/Chef_Solo_Nodes.rb
|
113
|
+
- lib/Chef_Solo_Nodes/shell.rb
|
113
114
|
- lib/Chef_Solo_Nodes/version.rb
|
114
115
|
- spec/data/nodes/Vagrant.json
|
115
116
|
- spec/data/nodes/custom_port.json
|